Android从没有Root的菜单中隐藏/禁用应用程序

时间:2014-01-14 15:46:37

标签: android permissions hide root

我正在开发一个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

我很抱歉发布了很长的问题,但我试图尽可能详细。

非常感谢任何帮助。

由于

1 个答案:

答案 0 :(得分:3)

查看CHANGE_COMPONENT_ENABLED_STATE标志的android清单权限文档,并注意以下短语:

不适用于第三方应用程序。

据我所知,共享系统用户ID会违反操作系统提供的大部分安全性。

还有另一种解决方案:您可能使用了代替OEM / Google启动器的启动器应用程序(Apex,Nova Launcher)。这些应用程序提供自己的应用程序列表,并允许隐藏应用程序而不禁用它们。很明显,这不是你想要做的,但创建自定义启动器并维护自己的应用列表可能是没有root的最接近的。