在后台下载图片
来源:互联网 发布:vb自动登录弹出窗口 编辑:程序博客网 时间:2024/04/28 06:17
Request.setAllowedNetworkTypes();
指定下载所使用的网络类型
Request.setAllowedOverRoaming();
指定当前设备处于漫游模式的时候是否进行下载
Request.setTitle();
设置下载在系统通知栏中显示的标题
Request.setDescription();
设置下载在系统通知栏显示的描述信息
在没有指定下载保存的位置的时候文件会被下载到共享的下载缓存中,系统随时都有可能为了释放存储空间而将文件删除。正因如此,这是一种下载资源的快捷方式。
但要长期保存文件的话,就要指定保存的位置
Request.setDestinationUri();
用外部存储上的文件uri设置下载的保存位置
Request.setDestinationInExternalFilesDir();
将外部存储上的隐藏文件夹设这为下载位置
Request.setDestinationInExternalPublicDir();
将外部存储上的共享文件夹设这为下载位置
DownloadManager.remove();
package com.android.download;import java.io.FileInputStream;import java.io.FileNotFoundException;import android.app.Activity;import android.app.DownloadManager;import android.app.DownloadManager.Request;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.content.IntentFilter;import android.content.SharedPreferences;import android.database.Cursor;import android.graphics.BitmapFactory;import android.net.Uri;import android.os.Bundle;import android.os.ParcelFileDescriptor;import android.preference.PreferenceManager;import android.widget.ImageView;public class DownloadActivity extends Activity {private static final String DL_ID = "download_id";private SharedPreferences prefs;private DownloadManager dm;private ImageView imageView; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); imageView = new ImageView(this); setContentView(imageView); prefs = PreferenceManager.getDefaultSharedPreferences(this); dm = (DownloadManager) getSystemService(DOWNLOAD_SERVICE); } @Overrideprotected void onResume() { super.onResume();if(!prefs.contains("DL_ID")){Uri resource = Uri.parse("");DownloadManager.Request request = new DownloadManager.Request(resource);request.setAllowedNetworkTypes(Request.NETWORK_MOBILE|Request.NETWORK_WIFI);request.setAllowedOverRoaming(false);request.setTitle("download sample");long id = dm.enqueue(request);prefs.edit().putLong(DL_ID, id).commit();}else{queryDownloadStatus();}registerReceiver(receiver,new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));} @Overrideprotected void onPause() { super.onPause();unregisterReceiver(receiver);} private BroadcastReceiver receiver = new BroadcastReceiver(){ public void onReceive(Context context, Intent intent) { queryDownloadStatus();} }; private void queryDownloadStatus() { DownloadManager.Query query = new DownloadManager.Query(); query.setFilterById(prefs.getLong(DL_ID,0)); Cursor c = dm.query(query); if(c.moveToFirst()){ int status = c.getInt(c.getColumnIndex(DownloadManager.COLUMN_STATUS)); switch(status){ case DownloadManager.STATUS_PAUSED: case DownloadManager.STATUS_PENDING: case DownloadManager.STATUS_RUNNING: break; case DownloadManager.STATUS_SUCCESSFUL: try {ParcelFileDescriptor file = dm.openDownloadedFile(prefs.getLong(DL_ID, 0)); FileInputStream fis = new ParcelFileDescriptor.AutoCloseInputStream(file); imageView.setImageBitmap(BitmapFactory.decodeStream(fis)); } catch (Exception e) { e.printStackTrace();}break; case DownloadManager.STATUS_FAILED: dm.remove(prefs.getLong(DL_ID,0)); prefs.edit().clear().commit(); break; } }}}
- 在后台下载图片
- 在后台下载指定地址APK操作
- 使用 DownloadManager 实现完全在后台下载
- 使用services在后台实现下载与远程服务
- asp.net中在后台更换控件图片的代码
- django1.11.5版本在后台显示图片方法,
- echarts在后台生成图片的研究及最终解决办法
- 在后台创建MultiScaleImage
- voip在后台运行
- NSTimer在后台运行
- 在后台运行软件
- 在后台运行rtorrent
- Elasticsearch在后台启动
- Elasticsearch在后台启动
- python在后台运行
- 三种方式使得iOS应用能够在后台进行数据更新和下载
- 三种方式使得iOS应用能够在后台进行数据更新和下载
- 三种方式使得iOS应用能够在后台进行数据更新和下载
- 微软等数据结构+算法面试100题(45)-- 在二元树中找出和为某一值的所有路径
- ubuntu install navicat
- 关于c++中虚函数和接口的关系区分
- iPhone 掌握蓝牙通信编程
- com组件相关
- 在后台下载图片
- C++之预处理
- 【PHP】PHP网站安全漏洞全解
- vim 列编辑
- Qt 5.0 将支持 Android
- java反射详解
- C++自增运算符的探索
- 爬虫larbin主函数说明
- 医药经验