我的应用程序在自定义AOSP映像上作为系统应用程序运行。我可以卸载/安装从后端下载的其他APK。但是,我无法卸载其他系统应用程序(这对我来说是一项硬性要求)。我当前的机制是通过反射使用Android包管理器中的deletePackage机制:
val cPackageManager = Class.forName("android.content.pm.PackageManager")
cPackageDeleteObserver = Class.forName("android.content.pm.IPackageDeleteObserver")
deletePackage = cPackageManager.getMethod("deletePackage", String::class.java, cPackageDeleteObserver, Integer.TYPE)
deletePackage!!.invoke(context.packageManager, packageName, deleteObserver, DELETE_ALL_USERS)
有人知道如何实现我想做的事吗?
答案 0 :(得分:1)
您不需要成为root用户的设备来卸载System apps
,还是找到了一种无需任何root用户的方法来进行安装?
由于您必须运行SELinux,因此必须remount
系统才能重新排列系统中的锁定文件。
3。您可以在应用中运行此代码
try{
Process su = Runtime.getRuntime().exec("su");
DataOutputStream outputStream = new DataOutputStream(su.getOutputStream());
outputStream.writeBytes("pm uninstall com.package.name");
outputStream.flush();
outputStream.writeBytes("exit\n");
outputStream.flush();
su.waitFor();
}catch(IOException e){
throw new Exception(e);
}catch(InterruptedException e){
throw new Exception(e);
}
如果pm uninstall
不起作用,请使用rm -rf path/deletefolder
然后重新启动系统