安卓service后台下载安装升级包
来源:互联网 发布:黎明杀机n卡优化 编辑:程序博客网 时间:2024/04/30 00:46
Android sdk version 9以上就有DownManager
使用DownManager,我们可以很简便的在各个安卓机子上升级自家的应用
本例写了一个UpdataService实现后台下载新的APK到sdcard,并自动安装更新。
[java] view plain copy
/**
* 检测安装更新文件的助手类
*
* @author G.Y.Y
*
*/
public class UpdataService extends Service {
/** 安卓系统下载类 **/ DownloadManager manager; /** 接收下载完的广播 **/ DownloadCompleteReceiver receiver; /** 初始化下载器 **/ private void initDownManager() { manager = (DownloadManager) getSystemService(DOWNLOAD_SERVICE); receiver = new DownloadCompleteReceiver(); //设置下载地址 DownloadManager.Request down = new DownloadManager.Request( Uri.parse("http://gdown.baidu.com/data/wisegame/fd84b7f6746f0b18/baiduyinyue_4802.apk")); // 设置允许使用的网络类型,这里是移动网络和wifi都可以 down.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_MOBILE | DownloadManager.Request.NETWORK_WIFI); // 下载时,通知栏显示途中 down.setNotificationVisibility(Request.VISIBILITY_VISIBLE); // 显示下载界面 down.setVisibleInDownloadsUi(true); // 设置下载后文件存放的位置 down.setDestinationInExternalFilesDir(this, Environment.DIRECTORY_DOWNLOADS, "baidumusic.apk"); // 将下载请求放入队列 manager.enqueue(down); //注册下载广播 registerReceiver(receiver, new IntentFilter( DownloadManager.ACTION_DOWNLOAD_COMPLETE)); } @Override public int onStartCommand(Intent intent, int flags, int startId) { // 调用下载 initDownManager(); return super.onStartCommand(intent, flags, startId); } @Override public IBinder onBind(Intent intent) { return null; } @Override public void onDestroy() { // 注销下载广播 if (receiver != null) unregisterReceiver(receiver); super.onDestroy(); } // 接受下载完成后的intent class DownloadCompleteReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { //判断是否下载完成的广播 if (intent.getAction().equals( DownloadManager.ACTION_DOWNLOAD_COMPLETE)) { //获取下载的文件id long downId = intent.getLongExtra( DownloadManager.EXTRA_DOWNLOAD_ID, -1); //自动安装apk installAPK(manager.getUriForDownloadedFile(downId)); //停止服务并关闭广播 UpdataService.this.stopSelf(); } } /** * 安装apk文件 */ private void installAPK(Uri apk) { // 通过Intent安装APK文件 Intent intents = new Intent(); intents.setAction("android.intent.action.VIEW"); intents.addCategory("android.intent.category.DEFAULT"); intents.setType("application/vnd.android.package-archive"); intents.setData(apk); intents.setDataAndType(apk,"application/vnd.android.package-archive"); intents.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); android.os.Process.killProcess(android.os.Process.myPid()); // 如果不加上这句的话在apk安装完成之后点击单开会崩溃 startActivity(intents); } }
}
AndroidManifest.xml注册service
[html] view plain copy
阅读全文
0 0
- 安卓service后台下载安装升级包
- 安卓 app 本地升级下载后自动安装(小米手机安装包解析失败问题)
- 安卓源码google安卓设备OTA升级包及工厂镜像下载
- 安卓后台音乐播放(Service)
- 终于来了:360 N5发布安卓7.0测试版升级包下载
- 安卓开发包下载
- Android 后台Service下载
- service 后台下载
- 安卓安装包网址
- 从APP升级更新浅谈安卓Service知识
- 安卓手机后台Service自动转发短信
- 安卓apk下载安装
- 让IIS支持安卓客户端安装包(.apk)下载
- android Service实现后台下载
- Android通过后台service下载
- 使用Service进行后台下载
- service下载安装包并在notification中更新进度,最后启动安装包
- Mcafee 升级包下载地址
- CS:APP二进制炸弹phase1
- 如何选择深度学习优化器
- 前端解决跨域问题的8种方案(最新最全)
- java四种引用
- 03_程序员必须掌握的8大排序算法_简单选择排序
- 安卓service后台下载安装升级包
- Linux Kernel Interrupt 分析
- 24点游戏算法
- OPC--open packaging convention学习
- jQuery常用选择器和方法
- pushKit使用总结
- CS:APP二进制炸弹phase2
- Java集合类的总结
- iOS非常全的第三方库