android download学习记录

东西拼凑,终于弄出来可以用的代码

[1].[代码] [Java]代码 跳至 [1]

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
public class DownManagerTask {
     
     private static final String TAG = "DownManagerTask" ;
     
     private static DownManagerTask DOWN_TASK = new DownManagerTask();
     
     private Context context;
     private DownloadManager downloadManager;
     long downloadId = - 1 ;
     private Bitmap bitmap;
     private ImageView imageView;
     
     
     
     private DownManagerTask(){}
     
     public static DownManagerTask getInstance(){
         return DOWN_TASK;
     }
     
     @SuppressLint ( "InlinedApi" )
     public void init(Context context,ImageView imageView){
         this .context = context;
         this .imageView = imageView;
         downloadManager = (DownloadManager) context.getSystemService(Context.DOWNLOAD_SERVICE);
     }
     
     /**
      * 将下载的图片转化成bitMap
      *
      */
     @SuppressLint ( "NewApi" )
     private void parseBitMap(){
         try
             ParcelFileDescriptor pfd = downloadManager.openDownloadedFile(downloadId);
             FileDescriptor fileDescriptor = pfd.getFileDescriptor(); 
             bitmap = BitmapFactory.decodeFileDescriptor(fileDescriptor); 
             pfd.close(); 
         } catch (Exception e){ 
             e.printStackTrace(); 
         }
     }
     
     /**
      * 下载方法
      * @param url
      */
     @SuppressLint ( "NewApi" )
     public void download(String url){
         Log.d(TAG, url);
         Uri uri = Uri.parse(url);
         DownloadManager.Request request = new DownloadManager.Request(uri);
         request.setAllowedNetworkTypes(Request.NETWORK_MOBILE
                 | Request.NETWORK_WIFI);
         request.setAllowedOverRoaming( false );
         MimeTypeMap mimeTypeMap = MimeTypeMap.getSingleton();
         String mimeString = mimeTypeMap.getMimeTypeFromExtension(MimeTypeMap
                 .getFileExtensionFromUrl(url));
         request.setMimeType(mimeString);
         //request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, "Bugdroid.png"); 
         request.allowScanningByMediaScanner();
         request.setVisibleInDownloadsUi( true );
         downloadId = downloadManager.enqueue(request);
         Log.d(TAG, "downloadId:" +downloadId);
         context.registerReceiver(receiver, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));
     }
     
     public void unregisterReceiver(){
         context.unregisterReceiver(receiver);
     }
     
     @SuppressLint ( "NewApi" )
     public void temp(){
         Cursor c = downloadManager.query( new DownloadManager.Query().setFilterById(downloadId));
         if (c != null ){
             c.moveToFirst();
             Log.d(TAG,(c.getString(c.getColumnIndex(DownloadManager.COLUMN_LOCAL_FILENAME))));
             c.close();
         }
     }
     
     private BroadcastReceiver receiver = new BroadcastReceiver() {
         
         @SuppressLint ( "NewApi" )
         @Override
         public void onReceive(Context context, Intent intent) {
             //这里可以取得下载的id,这样就可以知道哪个文件下载完成了。适用与多个下载任务的监听 
             if (intent.getAction().equals(DownloadManager.ACTION_DOWNLOAD_COMPLETE)){
                 Log.v(TAG, "" +intent.getLongExtra(DownloadManager.EXTRA_DOWNLOAD_ID, 0 ));
                  Log.v(TAG, "download complete" );
                  parseBitMap();
                  imageView.setImageBitmap(bitmap);
                  Toast.makeText(context, "download complete" , Toast.LENGTH_SHORT).show();
             }
         }
     };
     
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值