Android

Android: How to use download manager class?

Android: Как использовать класс download Manager?

Я хочу загрузить двоичный файл по 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
*/

public static boolean isDownloadManagerAvailable(Context context) {

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD) {
return true;
}
return false;
}

Название метода все объясняет. Как только вы убедитесь, что DownloadManager доступен, вы можете сделать что-то вроде этого:

String url = "url you want to download";
DownloadManager.Request request = new DownloadManager.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
DownloadManager manager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
manager.enqueue(request);

Прогресс загрузки будет отображаться в панели уведомлений.

Ответ 3
DownloadManager downloadmanager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
Uri uri = Uri.parse("http://www.example.com/myfile.mp3");
DownloadManager.Request request = new DownloadManager.Request(uri);
request.setTitle("My File");
request.setDescription("Downloading");
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
request.setDestinationUri(Uri.parse("file://" + folderName + "/myfile.mp3"));
downloadmanager.enqueue(request);
Ответ 4

Убедитесь, что разрешения read_external_storage и write_external_storage будет в файле manifest.xml :

А затем включите этот код в свою функцию загрузки

if(ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED
|| ActivityCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED){

// this will request for permission when user has not granted permission for the app
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
}

else{
//Download Script
DownloadManager downloadManager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
Uri uri = Uri.parse("URL of file to download");
DownloadManager.Request request = new DownloadManager.Request(uri);
request.setVisibleInDownloadsUi(true);
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, uri.getLastPathSegment());
downloadManager.enqueue(request);
}
java android