use of android.app.DownloadManager in project Xposed-Tinted-Status-Bar by MohammadAG.
the class DownloadsUtil method removeOutdated.
public static void removeOutdated(Context context, long cutoff) {
DownloadManager dm = (DownloadManager) context.getSystemService(Context.DOWNLOAD_SERVICE);
Cursor c = dm.query(new Query());
int columnId = c.getColumnIndexOrThrow(DownloadManager.COLUMN_ID);
int columnLastMod = c.getColumnIndexOrThrow(DownloadManager.COLUMN_LAST_MODIFIED_TIMESTAMP);
List<Long> idsList = new ArrayList<Long>();
while (c.moveToNext()) {
if (c.getLong(columnLastMod) < cutoff)
idsList.add(c.getLong(columnId));
}
if (idsList.isEmpty())
return;
long[] ids = new long[idsList.size()];
for (int i = 0; i < ids.length; i++) ids[i] = idsList.get(0);
dm.remove(ids);
}
use of android.app.DownloadManager in project mobile-center-sdk-android by Microsoft.
the class RemoveDownloadTask method doInBackground.
@Override
protected Void doInBackground(Void... params) {
/* This special cleanup task does not require any cancellation on state change as a previous download will never be reused. */
DownloadManager downloadManager = (DownloadManager) mContext.getSystemService(Context.DOWNLOAD_SERVICE);
downloadManager.remove(mDownloadId);
return null;
}
use of android.app.DownloadManager in project openremote by openremote.
the class MainActivity method initializeWebView.
protected void initializeWebView() {
LOG.fine("Initializing web view");
final WebAppInterface webAppInterface = new WebAppInterface(this);
webView.addJavascriptInterface(webAppInterface, "MobileInterface");
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setCacheMode(WebSettings.LOAD_DEFAULT);
webSettings.setDomStorageEnabled(true);
webSettings.setDatabaseEnabled(true);
webView.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
return true;
}
});
webView.setLongClickable(false);
webView.setWebViewClient(new WebViewClient() {
@Override
public void onReceivedHttpError(WebView view, WebResourceRequest request, WebResourceResponse errorResponse) {
// TODO should we ignore images?
if (request.getUrl().getLastPathSegment() != null && (request.getUrl().getLastPathSegment().endsWith("png") || request.getUrl().getLastPathSegment().endsWith("jpg") || request.getUrl().getLastPathSegment().endsWith("ico")))
return;
// invalid token. The web app will then start a new login.
if (request.getUrl().getLastPathSegment() != null && request.getUrl().getLastPathSegment().equals("token") && request.getMethod().equals("POST") && errorResponse.getStatusCode() == 400) {
webAppInterface.tokenService.clearToken();
return;
}
LOG.warning("Error requesting '" + request.getUrl() + "', response code: " + errorResponse.getStatusCode());
errorViewHolder.show(R.string.httpError, R.string.httpErrorExplain, true, true);
}
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
if (Boolean.parseBoolean(getString(R.string.SSL_IGNORE))) {
LOG.fine("Ignoring SSL certificate error: " + error.getPrimaryError());
// Ignore SSL certificate errors
handler.proceed();
} else {
LOG.severe("SSL error: " + error.getPrimaryError());
LOG.severe("SSL certificate: " + error.getCertificate());
errorViewHolder.show(R.string.httpError, R.string.httpErrorExplain, true, true);
}
}
@Override
public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
// TODO should we ignore images?
if (request.getUrl().getLastPathSegment() != null && (request.getUrl().getLastPathSegment().endsWith("png") || request.getUrl().getLastPathSegment().endsWith("jpg") || request.getUrl().getLastPathSegment().endsWith("ico")))
return;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
// Remote debugging sessions from Chrome trigger "ERR_CACHE_MISS" that don't hurt, but we should not redirect the view
if (isRemoteDebuggingEnabled() && error.getErrorCode() == ERROR_UNKNOWN) {
return;
}
// Remote debugging session from Chrome wants to load about:blank and then fails with "ERROR_UNSUPPORTED_SCHEME", ignore
if (request.getUrl().toString().equals("about:blank") && error.getErrorCode() == ERROR_UNSUPPORTED_SCHEME) {
return;
}
LOG.warning("Error requesting '" + request.getUrl() + "': " + error.getErrorCode());
}
errorViewHolder.show(R.string.fatalError, R.string.fatalErrorExplain, false, true);
}
});
webView.setWebChromeClient(new WebChromeClient() {
@Override
public boolean onConsoleMessage(ConsoleMessage consoleMessage) {
String msg = "WebApp console (" + consoleMessage.sourceId() + ":" + consoleMessage.lineNumber() + "): " + consoleMessage.message();
switch(consoleMessage.messageLevel()) {
case DEBUG:
case TIP:
LOG.fine(msg);
break;
case LOG:
LOG.info(msg);
break;
default:
LOG.severe(msg);
}
return true;
}
});
webView.setDownloadListener(new DownloadListener() {
@Override
public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype, long contentLength) {
String writePermission = Manifest.permission.WRITE_EXTERNAL_STORAGE;
if (ContextCompat.checkSelfPermission(context, writePermission) != PackageManager.PERMISSION_GRANTED) {
// Location permission has not been granted yet, request it.
ActivityCompat.requestPermissions((MainActivity) context, new String[] { writePermission }, WRITE_PERMISSION_REQUEST);
} else {
DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url));
request.setMimeType(mimetype);
// ------------------------COOKIE!!------------------------
String cookies = CookieManager.getInstance().getCookie(url);
request.addRequestHeader("cookie", cookies);
// ------------------------COOKIE!!------------------------
request.addRequestHeader("User-Agent", userAgent);
request.setDescription("Downloading file...");
request.setTitle(URLUtil.guessFileName(url, contentDisposition, mimetype));
request.allowScanningByMediaScanner();
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, URLUtil.guessFileName(url, contentDisposition, mimetype));
DownloadManager dm = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
if (dm != null) {
Toast.makeText(getApplicationContext(), R.string.downloading_file, Toast.LENGTH_LONG).show();
dm.enqueue(request);
} else {
Toast.makeText(getApplicationContext(), R.string.error_downloading, Toast.LENGTH_LONG).show();
}
}
}
});
}
use of android.app.DownloadManager in project twicalico by moko256.
the class ShowImageActivity method contentDownload.
private void contentDownload() {
String path = "";
String ext = "";
MediaEntity mediaEntity = mediaEntities[pager.getCurrentItem()];
switch(mediaEntity.getType()) {
case "video":
for (MediaEntity.Variant variant : mediaEntity.getVideoVariants()) {
if (variant.getContentType().equals("video/mp4")) {
path = variant.getUrl();
ext = "mp4";
}
}
break;
case "animated_gif":
path = mediaEntity.getVideoVariants()[0].getUrl();
ext = "mp4";
break;
case "photo":
default:
String[] pathSplitWithDot = mediaEntity.getMediaURLHttps().split(".");
path = TwitterStringUtils.convertLargeImageUrl(mediaEntity.getMediaURLHttps());
ext = pathSplitWithDot[pathSplitWithDot.length - 1];
break;
}
DownloadManager manager = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
DownloadManager.Request request = new DownloadManager.Request(Uri.parse(path));
String fileName = String.valueOf(mediaEntity.getId()) + "." + ext;
request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, "/" + getString(R.string.app_name) + "/" + fileName);
request.setTitle(fileName);
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
manager.enqueue(request);
}
Aggregations