模拟APK版本更新
2016-07-03 10:46
197 查看
1、启动文件下载
public class DownloadApk { public static long taskId = -1;//用于最终查询下载状态 public static DownloadManager manager; public static String file_dir = "/Dowload/";//下载路径 public static String file_name = "yang_xiao_ru.html";//文件名字 public static void downLoad(final Context c, final String URLname) { new Thread() { @Override public void run() { String sdDir = Environment.getExternalStorageDirectory()+"/";//获取跟目录 File file=new File(sdDir+file_dir+file_name); if (file.exists()){ System.out.println("文件已经存在!"); file.delete(); System.out.println("文件已经删除"); } DownloadManager.Request request = new DownloadManager.Request(Uri.parse(URLname)); request.setVisibleInDownloadsUi(true);//在状态栏可见 request.setDestinationInExternalPublicDir(file_dir, file_name); manager = (DownloadManager) c.getSystemService(Context.DOWNLOAD_SERVICE); if (manager == null) return; //加入到下载队列 taskId = manager.enqueue(request); } }.start(); } }
2、当系统下载器下载完成之后,会发送一个广播,我们接收并处理就行了
启动广播监听器:
private void initeReceiver() {receiver = new Dowload_ok_receiver();IntentFilter filter = new IntentFilter();filter.addAction(DownloadManager.ACTION_DOWNLOAD_COMPLETE);registerReceiver(receiver, filter);}
//BroadcastReceiver 的具体实现
public class Dowload_ok_receiver extends BroadcastReceiver {private Context c;@Overridepublic void onReceive(Context context, Intent intent) {//下载结束系统就会发送一个广播c = context;DownloadManager.Query query = new DownloadManager.Query();query.setFilterById(DownloadApk.taskId);Cursor c = DownloadApk.manager.query(query);if (c.moveToFirst()) {int status = c.getInt(c.getColumnIndex(DownloadManager.COLUMN_STATUS));switch (status) {case DownloadManager.STATUS_SUCCESSFUL://下载完成System.out.println("文件下载成功");instal();break;default:System.out.println("文件下载失败");break;}}}private void instal() {Intent intent = new Intent(Intent.ACTION_VIEW);// String name = "tencent/QQfile_recv/cet_4.apk";String name = DownloadApk.file_dir + DownloadApk.file_name;File file = new File(Environment.getExternalStorageDirectory() + "/" + name);if (file.exists()) {System.out.println("开始安装!");// Uri uri = Uri.parse("file://" + DownloadApk.file_dir + DownloadApk.file_name);Uri uri = Uri.parse("file://" + Environment.getExternalStorageDirectory() + "/" + name);intent.setDataAndType(uri, "application/vnd.android.package-archive");intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);c.startActivity(intent);} else {System.out.println("要安装的文件不存在!");}}}
相关文章推荐
- CrackingtheCodeInterview之栈与队列
- SSH安装
- WPF EventSetter Handler Command
- NASA 美国国家航空航天局开源项目列表
- NLTK-自然语言工具包
- xamarin android webview XHR错误
- storm入门
- TSP问题之状态压缩dp法
- Leetcode add-two-numbers
- 202. Happy Number
- Java千百问_06数据结构(024)_用二进制如何表示整型数值
- Handler消息机制原理
- 线程基础知识系列(五)认识volatile
- HDU 1564 Play a game(博弈找规律)
- 神经网络:卷积神经网络(转)
- socket.io多房间聊天
- PyQt界面编程应用与实践
- 第k个排列
- 华为入职
- Python: 渐进猜数字游戏 <1> 代码、测试与猜数字