Я хочу загрузить двоичный файл по URL. Можно ли использовать класс Android download manager, который я нашел здесь класс DownloadManager?
Переведено автоматически
Ответ 1
Можно ли использовать класс Android download manager, который я нашел здесь
Да, хотя это доступно только с Android API 9-го уровня (версия 2.3). Вот пример проекта, демонстрирующий использование DownloadManager.
Ответ 2
Используйте класс DownloadManager (только GingerBread и новее)
GingerBread представила новую функцию DownloadManager, которая позволяет легко загружать файлы и делегировать тяжелую работу по обработке потоков и т.д. системе.
Сначала давайте посмотрим на служебный метод:
/** * @param context used to check the device version and DownloadManager information * @return true if the download manager is available */ publicstaticbooleanisDownloadManagerAvailable(Context context) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD) { returntrue; } returnfalse; }
Название метода все объясняет. Как только вы убедитесь, что DownloadManager доступен, вы можете сделать что-то вроде этого:
Stringurl="url you want to download"; DownloadManager.Requestrequest=newDownloadManager.Request(Uri.parse(url)); request.setDescription("Some descrition"); request.setTitle("Some title"); // in order for this if to run, you must use the android 3.2 to compile your app if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { request.allowScanningByMediaScanner(); request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED); } request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, "name-of-the-file.ext");
// get download service and enqueue file DownloadManagermanager= (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE); manager.enqueue(request);
Прогресс загрузки будет отображаться в панели уведомлений.
// this will request for permission when user has not granted permission for the app ActivityCompat.requestPermissions(this, newString[]{Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1); }
else{ //Download Script DownloadManagerdownloadManager= (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE); Uriuri= Uri.parse("URL of file to download"); DownloadManager.Requestrequest=newDownloadManager.Request(uri); request.setVisibleInDownloadsUi(true); request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED); request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, uri.getLastPathSegment()); downloadManager.enqueue(request); }