我可以在用户应用程序中的非root设备上使用packagemanager.setApplicationEnabledSetting()

时间:2017-05-24 12:38:01

标签: android security app-launcher

我正在尝试从我的应用中禁用其中一个应用。我创建了一个启动器应用程序,并尝试使用以下方法包管理器

pm.setApplicationEnabledSetting(packageInfo.packageName,PackageManager.COMPONENT_ENABLED_STATE_DISABLED,PackageManager.DONT_KILL_APP);

但是我得到的是SecurityException SecurityException:Permission Denial:尝试从pid = 20217更改组件状态,uid = 10066,package uid = 10067

注意:在某个地方我发现解决方法是在清单中提及以下权限

但我在此权限中收到警告,此权限仅授予系统应用。

1 个答案:

答案 0 :(得分:0)

要禁用/启用其他应用程序,您的应用程序必须具有系统特权。要获得特权,您应该执行以下步骤。

将此行添加到清单标头 android:sharedUserId =“ android.uid.system”

将此权限添加到清单“ android.permission.CHANGE_COMPONENT_ENABLED_STATE”

使用系统密钥签名您的应用。

我在启动器应用程序中检查了它。