【发布时间】:2015-01-16 13:27:57
【问题描述】:
我想从我的应用程序中隐藏任何应用程序(whatsapp、facebook...)。我尝试使用我自己的应用程序从列表中隐藏/取消隐藏。它的工作完美。但我想从我的应用程序中隐藏另一个应用程序。我尝试使用此代码。
我使用此代码获取应用程序包名称及其活动名称。
public void getPackageAndActivityname() {
final PackageManager pm = getPackageManager();
Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
List < ResolveInfo > appList = pm.queryIntentActivities(mainIntent, 0);
Collections.sort(appList, new ResolveInfo.DisplayNameComparator(pm));
for (ResolveInfo temp: appList) {
Log.e("HIDEAPP", "package:- " + temp.activityInfo.packageName + " activity name:- " + temp.activityInfo.name);
}
}
在下面的方法中使用这个包名称和活动名称(例如隐藏 UC 浏览器)。
public void hideApp() {
PackageManager p = getPackageManager();
ComponentName componentName = new ComponentName("com.UCMobile.intl", "com.uc.browser.UCMobileApp"); // ucWebbrowser hide from app list
p.setComponentEnabledSetting(componentName,PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);
}
我的清单文件放了这个权限。
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.CHANGE_COMPONENT_ENABLED_STATE"/>
但我遇到了这种类型的错误
java.lang.SecurityException: Permission Denial: attempt to change component state from pid=26587, uid=10477, package uid=10426
我参考这两个链接。 Link 1 和 Link 2。 但是我遇到了这种类型的错误。我在摩托罗拉 Moto G 手机(操作系统:Kitkat 4.4.4)中运行这个应用程序。我该如何解决这个问题?
【问题讨论】:
标签: android