web-dev-qa-db-ja.com

Android:ダウンロードマネージャークラスの使用方法

URLからバイナリファイルをダウンロードしたいのですが。 Androidダウンロードマネージャクラス DownloadManager class を使用することは可能ですか?

20
Kris

ここで見つけたAndroidダウンロードマネージャークラスを使用することは可能ですか?

はい、ただしAndroid APIレベル9(バージョン2.3)以降にのみ利用可能です。) これはサンプルプロジェクトですDownloadManagerの使用方法を示しています。

37
CommonsWare

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);

ダウンロードの進行状況が通知バーに表示されます。

12
m.chorakchi
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);
6
Dmarp

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);
 }
0
Segun Emmanuel