尝试在android中更改组件状态安全性exception

嗨,我在框架端实现一个测试应用程序禁用另一个应用程序,但当我运行我的测试应用程序,它显示

Java.lang.SecurityException: Permission Denial: attempt to change component state from pid=xxx,uid=xxxx,package uid=xxx at xxxxxxxx 

我的java代码

 PackageManager pm = getApplicationContext().getPackagemanager(); pm.setComponentEnabledSetting(new ComponentName("com.example","MainActivity"), PackageManager.COMPONENT_ENABLED_STATE_DISABLED,PackageManager.DONT_KILL_APP); 

AndroidManifest.xml中

  

我已经尝试过两种权限(权限仅授予系统应用程序)并且还尝试过标记,但没有幸运

如何使用授予权限的系统应用程序,

你能不能帮我解决这个问题

提前致谢

如果您的应用程序不是系统分区的一部分,那么您将不会被授予权限。 将应用程序放入系统分区,并在dexopt期间解析您的应用程序时确认PackageManager是否授予您所需的权限。

除非您的应用是系统应用,否则您无法启用/停用应用

我的步骤是:

  1. 使用命令禁用包: pm disable "packageName"

  2. 使用以下命令启用packageName: pm enable packageName

  3. 如果您知道名称活动主体,则启动主体活动, Intent i = new Intent(Intent.ACTION_MAIN); i.setComponent(new ComponentName("namePackage", "namePackage.MainPrincipal")); i.addCategory(Intent.CATEGORY_LAUNCHER); startActivity(i); Intent i = new Intent(Intent.ACTION_MAIN); i.setComponent(new ComponentName("namePackage", "namePackage.MainPrincipal")); i.addCategory(Intent.CATEGORY_LAUNCHER); startActivity(i);

如果您的设备是root用户,只需将apk复制到/ system / app(/ system / priv-app for 4.4+),即可将您的应用程序安装为系统应用程序。 这将允许您使用“仅系统”权限。