• <kbd id="qyk40"></kbd>
  • <strike id="qyk40"></strike><samp id="qyk40"><pre id="qyk40"></pre></samp>

    DownloadManager主要用來進行長時間http下載,是個系統后臺服務。連接出錯了能自己重連,重啟了也能繼續連。

    1.得到DownloadManager

    DownloadManager dm = (DownloadManager)getSystemService( DOWNLOAD_SERVICE).

     

    2.得到連接請求對象

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

     

    3.對請求設置參數(常用的)與開始下載

    //設置允許使用的網絡類型,移動網絡與wifi都可以
    down.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_MOBILE|DownloadManager.Request.NETWORK_WIFI);

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

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

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

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

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

    //將下載請求放入隊列
                    manager.enqueue(down);

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

     

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

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

     

    4.接收下載完成信息

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

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

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

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

     

    5.remove(long... ids)

    取消正在下載的任務或者刪除下載了一部分或者全部的文件,刪除對應的數據記錄。

    6.id怎么獲取

    可以監聽數據庫文件/data/data/com.android.provider.downloads/database/downloads.db。數據庫有專門的監聽類。也可以用文件監聽類FileObsever監測文件變化。

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

    下載百分比也是這么獲取,數據庫里有兩個字段其中current_bytes是當前下載bit數,在等于total_bytes之前是更新的。

     

    7.點擊正在下載的notification將會受到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服務器提供資源。文件存在了/sdcard/Android/data/<包名>/files/Music/我的歌聲里.mp3

    權限:

     

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

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

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

     

    穩定

    產品高可用性高并發

    貼心

    項目群及時溝通

    專業

    產品經理1v1支持

    快速

    MVP模式小步快跑

    承諾

    我們選擇聲譽

    堅持

    10年專注高端品質開發
    • 返回頂部
    亚洲处破女AV日韩精品| 久久精品日韩一区国产二区| 日韩AV无码精品人妻系列| 久久久WWW免费人成精品| 日韩制服丝袜在线| 国产精品嫩草影院在线播放| 任我爽橹在线精品视频| 91精品国产综合久久香蕉 | 亚洲色无码国产精品网站可下载| 人妻少妇精品视频一区二区三区| 久久99精品国产一区二区三区| 久久久无码精品亚洲日韩软件| 午夜人屠h精品全集| 99在线精品国自产拍中文字幕| 亚洲精品国产啊女成拍色拍| 99久久国产综合精品swag| 婷婷国产成人精品视频| 国产成人亚洲精品青草天美| 久久97精品久久久久久久不卡| 99精品国产99久久久久久97| 精品国产乱码久久久久久浪潮| www.99精品| segui久久综合精品| 全国精品一区二区在线观看| 亚洲日韩国产欧美一区二区三区| 国产成人精品午夜二三区| 国产成人精品影院狼色在线 | 久久久精品久久久久久| 国产精品理论片在线观看| 亚洲精品国产V片在线观看 | 久久丫精品国产亚洲av不卡| 亚洲第一精品在线视频| 亚洲一区精品中文字幕| 麻豆aⅴ精品无码一区二区| 九九精品99久久久香蕉| 亚洲精品资源在线| 精品国产乱码一区二区三区| 国产精品久久久久久久久| 午夜精品久久久久久影视riav | 国产日韩成人亚洲丁香婷婷 | 九九在线精品视频|