静默安装和卸载经验:
String appPackage ="被卸载应用的包名";
Intent intent = new Intent(mContext, mContext.getClass());
PendingIntent sender = PendingIntent.getActivity(mContext, 0, intent,0);
PackageInstaller mPackageInstaller = mContext.getPackageManager().getPackageInstaller();
mPackageInstaller.uninstall(appPackage, sender.getIntentSender());
上面为调用PackageInstaller接口实现静默卸载的简单源码。
需要新建一个文件名为device_owner.xml的文件(可以在windows下新建编辑,然后push),写入如下信息:
然后通过adb push到/data/system中。
然后在代码中通过简单源码即可实现静默卸载功能。
静默安装需要root权限,或将app作为系统应用,赋予:
<uses-permissionandroid:name="android.permission.DELETE_PACKAGES"/>
<uses-permissionandroid:name="android.permission.INSTALL_PACKAGES"/>
权限之后方能使用 pm install或者 pm uninstall命令实现静默安装或卸载。
方法如下:
首先,将apk进行系统签名(网上说需要先反编译,重新添加AndroidManifest.xml文件中的INSTALL和DELETE的权限,但是我这次的情况反编译后发现Manifest文件中有,于是直接进行系统签名即可),之后将apk 通过adb push到/system/app/“APP名称”下(需要Root权限),随后adb reboot生效。
另外需要注意:
待安装的apk的路径,例如/sdcard/download/*.apk 保险起见,每一级目录都要进行权限赋予:
chmod 777 /sdcard
chmod 777 /sdcard/download
chmod 777 /sdcard/download/*.apk
否则安装时会出现 INSTALLED_FAILED_INVALID_URI(意思是无效路径)的错误。