我正在开发一个Android应用程序,可以在没有root权限的情况下管理手机上安装的应用程序。
我已经完成了大部分功能,但我坚持使用一个功能。
我必须隐藏用户从菜单中选择的特定应用程序。但是我无法实现这一点。
我已经尝试了
PackageManager p = getPackageManager();
p.setApplicationEnabledSetting(packageNameOfApp, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);
但是我得到了一个允许拒绝的错误...我怎么能过来请帮助
这是我的清单权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.CHANGE_COMPONENT_ENABLED_STATE" />
我已经尝试添加
android:sharedUserId="android.uid.system"
标记为Manifest但是发出错误,看起来像这样
INSTALL_FAILED_SHARED_USER_INCOMPATIBLE
我很抱歉发布了很长的问题,但我试图尽可能详细。
非常感谢任何帮助。
由于
答案 0 :(得分:3)
查看CHANGE_COMPONENT_ENABLED_STATE
标志的android清单权限文档,并注意以下短语:
不适用于第三方应用程序。
据我所知,共享系统用户ID会违反操作系统提供的大部分安全性。
还有另一种解决方案:您可能使用了代替OEM / Google启动器的启动器应用程序(Apex,Nova Launcher)。这些应用程序提供自己的应用程序列表,并允许隐藏应用程序而不禁用它们。很明显,这不是你想要做的,但创建自定义启动器并维护自己的应用列表可能是没有root的最接近的。