繁体   English   中英

Android-将其他系统应用程序卸载为系统应用程序

[英]Android - uninstall other system app as system app

我的应用程序在自定义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)

有人知道如何实现我的目标吗?

  1. 您是否不需要成为具有root用户权限的设备才能卸载System apps ,还是找到了一种无需任何root用户权限即可执行此操作的方法?

  2. 由于运行了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然后重新启动系统

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM