91亚洲精华国内精华精华液_国产高清在线精品一区不卡_精品特级一级毛片免费观看_欧美日韩中文制服有码_亚洲精品无码你懂的网站369

DownloadManager主要用來(lái)進(jìn)行長(zhǎng)時(shí)間http下載,是個(gè)系統(tǒng)后臺(tái)服務(wù)。連接出錯(cuò)了能自己重連,重啟了也能繼續(xù)連。

1.得到DownloadManager

DownloadManager dm = (DownloadManager)getSystemService( DOWNLOAD_SERVICE).

 

2.得到連接請(qǐng)求對(duì)象

DownloadManager.Request   down=new DownloadManager.Request (Uri.parse("http://10.0.11.210:8080/test/我的歌聲里.mp3"));

 

3.對(duì)請(qǐng)求設(shè)置參數(shù)(常用的)與開始下載

//設(shè)置允許使用的網(wǎng)絡(luò)類型,移動(dòng)網(wǎng)絡(luò)與wifi都可以
down.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_MOBILE|DownloadManager.Request.NETWORK_WIFI);

//顯示在下載界面,即下載后的文件在下載管理里顯示
down.setVisibleInDownloadsUi(true);

//設(shè)置下載后文件存放的位置,不設(shè)置會(huì)存在data/data/com.android.provider.downloads/cache/下 面,設(shè)置后存在sd上的Android/data/<包名>/files/下面。第2個(gè)參數(shù)是files下再建目錄的目錄名,第3個(gè)參數(shù)是文 件名,如果第3個(gè)參數(shù)帶路徑,要確保路徑存在,第2個(gè)參數(shù)路徑隨便寫,會(huì)自己創(chuàng)建 down.setDestinationInExternalFilesDir(mContext, Environment.DIRECTORY_MUSIC, "我的歌聲里.mp3"); 

//在通知欄顯示下載詳情,比如百分比。       
 down.setShowRunningNotification(true)(API 9); //默認(rèn)是true,改為false需要權(quán)限android.permission.DOWNLOAD_WITHOUT_NOTIFICATION。

此方法被setNotificationVisibility(int visibility)(API  11)取代。

//以sd卡路徑為根路徑,與上方法只有一個(gè)有效。第一個(gè)參數(shù)創(chuàng)建文件夾用的是mkdir
                down.setDestinationInExternalPublicDir(Environment.DIRECTORY_MUSIC, "我的歌聲里.mp3");

//將下載請(qǐng)求放入隊(duì)列
                manager.enqueue(down);

// 下載完成后保留 下載的notification。文檔上寫明參數(shù)需要API 12以上。4.0的手機(jī)開始。

 

[java] view plaincopy在CODE上查看代碼片派生到我的代碼片

  1. down.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);  

 

4.接收下載完成信息

廣播接收下載完成信息,Action為DownloadManager.ACTION_DOWNLOAD_COMPLETE。

能得到下載完成的文件存在數(shù)據(jù)庫(kù)中的ID:long downId = intent.getLongExtra(DownloadManager.EXTRA_DOWNLOAD_ID, -1);

getUriForDownloadedFile(long id)能得到文件存儲(chǔ)的URI。

也可以通過new一個(gè)DownloadManager.Query再setFilterById(long... ids),接著用DownloadManager的query(DownloadManager.Query query)來(lái)得到Cursor對(duì)象

 

5.remove(long... ids)

取消正在下載的任務(wù)或者刪除下載了一部分或者全部的文件,刪除對(duì)應(yīng)的數(shù)據(jù)記錄。

6.id怎么獲取

可以監(jiān)聽數(shù)據(jù)庫(kù)文件/data/data/com.android.provider.downloads/database/downloads.db。數(shù)據(jù)庫(kù)有專門的監(jiān)聽類。也可以用文件監(jiān)聽類FileObsever監(jiān)測(cè)文件變化。

得到變化的數(shù)據(jù)行。數(shù)據(jù)庫(kù)里的數(shù)據(jù)并不是在下載完后才插入的,而是下載時(shí)通知欄上百分比每變化一次就更新一次。

下載百分比也是這么獲取,數(shù)據(jù)庫(kù)里有兩個(gè)字段其中current_bytes是當(dāng)前下載bit數(shù),在等于total_bytes之前是更新的。

 

7.點(diǎn)擊正在下載的notification將會(huì)受到Action為DownloadManager.ACTION_NOTIFICATION_CLICKED的廣播。

 

下載示例代碼:

[java] view plaincopy在CODE上查看代碼片派生到我的代碼片

  1. private void begainDownload() {  

  2.     DownloadManager dm = (DownloadManager)getSystemService( DOWNLOAD_SERVICE);  

  3.     DownloadManager.Request   down=new DownloadManager.Request (Uri.parse("http://10.0.11.210:8080/test/我的歌聲里.mp3"));  

  4.     down.setVisibleInDownloadsUi(true);  

  5.     down.setDestinationInExternalFilesDir(this, Environment.DIRECTORY_MUSIC, "我的歌聲里.mp3");  

  6.     down.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);  

  7.     dm.enqueue(down);  

  8. }  

tomcat服務(wù)器提供資源。文件存在了/sdcard/Android/data/<包名>/files/Music/我的歌聲里.mp3

權(quán)限:

 

[html] view plaincopy在CODE上查看代碼片派生到我的代碼片

  1. <uses-permission android:name="android.permission.INTERNET"/>  

  2. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

 

穩(wěn)定

產(chǎn)品高可用性高并發(fā)

貼心

項(xiàng)目群及時(shí)溝通

專業(yè)

產(chǎn)品經(jīng)理1v1支持

快速

MVP模式小步快跑

承諾

我們選擇聲譽(yù)

堅(jiān)持

10年專注高端品質(zhì)開發(fā)
  • 返回頂部