Android实现静默安装与卸载
来源:互联网 发布:刘双军网络二胡教学15 编辑:程序博客网 时间:2024/05/01 18:19
转自:http://blog.csdn.net/shineflowers/article/details/40824341
一般情况下,Android系统安装apk会出现一个安装界面,用户可以点击确定或者取消来进行apk的安装。
但在实际的项目需求中,有一种需求,就是希望apk在后台安装(不出现安装界面的提示),这种安装方式称为静默安装。
Android实现静默安装的方式有很多,这里只介绍一种比较简单易理解的方法,就是调用Android未公开的API(installPackage)来实现。
下面通过一种简单的Demo来简单实现静默安装,界面如下:
当点击"静默安装"的按钮时,会在后台安装360手机卫士的apk,安装成功后,会弹出Toast提示安装成功。
首先需要再AndroidManifest.xml声明下面的权限:
<uses-permission android:name="android.permission.INSTALL_PACKAGES" />
然后主要实现的代码如下:
从上面可以看出,事先需要再SD卡上放一个需要静默安装的apk(没有检测这个apk是否存在,只是简单实现)
上面的方法中涉及到了PackageInstallObserver类,实现代码如下:
代码部分已经基本实现完成,但是在eclipse里面,这个Demo是编译不过的,因为installPackage这个API没有公开,在上层是调用不到的,所以,需要在Android源码的环境下编译,在Demo根目录下新建Android.mk文件,内容如下:
Android.mk的写法有固定的格式和写法,如果不会写,可以参考Android源码中个系统应用mk文件的写法。
下面简单介绍下mk几个选项的含义:
下面的头和尾的写法都是固定的:
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
......
LOCAL_SRC_FILES := $(call all-subdir-java-files)
......
include $(BUILD_PACKAGE)
按照上面方法,有的人可能会出现下面的这个错误:
java.lang.SecurityException: Neither user 10034 nor current process has android.permission.INSTALL_PACKAGES.
这是因为只有系统应用才有android.permission.INSTALL_PACKAGES这个权限。出现这个问题的原因是,没有将自己的应用放在Android源码packages/app目录下就直接进行模块编译,这样编译出来的APK不是系统应用,没有系统的权限。解决这个问题有两种方法:
1. 将自己的应用放在packages/app目录下再进行模块编译
2. 直接安装out/target/product/generic/obj/APPS/应用名_intermediates/Package.apk.unaligned这个APK,就不会有这个问题。
- Android实现静默安装与卸载
- Android实现静默安装与卸载
- Android实现静默安装与卸载
- Android实现静默安装与卸载
- android实现静默卸载和静默安装
- android静默安装与静默卸载
- android 实现静默安装、卸载
- android 实现静默安装、卸载
- android 实现静默安装、卸载
- android 实现静默安装、卸载
- android 静默安装、卸载实现
- android 实现静默安装、卸载
- android 实现静默安装、卸载
- android 实现静默安装和卸载
- android 实现静默安装和卸载
- android 实现静默安装、卸载(图)
- Android 静默安装与卸载分析
- Android实现静默卸载
- Android应用权限管理总结
- 时间to_date,层级查询 --工作备忘2016/1/8
- 图的遍历 DFS(深度优先),BFS(广度优先)
- gradle老问题
- Android4.0窗口机制和创建过程分析
- Android实现静默安装与卸载
- Hadoop经典案例Spark实现(六)——求最大的K个值并排序
- java中的Cipher类
- Parcelable 复杂对象,对象列表等
- tcpdump filters for HTTP GET & HTTP POST
- 在iPhone5以上机器显示iPhone4尺寸的launchImage
- 算法洗脑系列(8篇)——第二篇 递归思想
- <九度 OJ>题目1526:朋友圈
- linux性能测试命令