我想阻止在我的应用程序中启动任务管理器和设置应用程序。为此,我尝试获取当前正在运行的应用程序并检查是否允许其包名。如果不允许,则显示新活动。
当计算出来时,它显示默认的android Settings
应用程序的包名是com.android.settings
。现在我有一些疑问
在所有Android版本中,Settings应用程序的包名是com.android.settings吗?如果不是,它们是哪个?
如何查找任务管理器的包名?
答案 0 :(得分:5)
试试这个
private String querySettingPkgName() {
Intent intent = new Intent(android.provider.Settings.ACTION_SETTINGS);
List<ResolveInfo> resolveInfos = getPackageManager().queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
if (resolveInfos == null || resolveInfos.size() == 0) {
return "";
}
return resolveInfos.get(0).activityInfo.packageName;
}
&#13;
答案 1 :(得分:4)
为此,我尝试获取当前正在运行的应用程序,并检查是否允许其包名。如果不允许,则显示新活动。
幸运的是,对于受您的应用影响的用户,这将是不可靠的。
在所有Android版本中,Settings应用程序的包名是com.android.settings吗?
不一定。更重要的是,任何给定的固件都可以包含任意数量的修改设置的应用程序,由固件作者提供。即使不是固件的一部分,也可以修改某些设置,尤其是在有根设备上。
如果没有,他们是谁?
欢迎您列出所有设备制造商和ROM mod作者的名单,并向他们提出这个问题。
如何查找任务管理器的包名?
设备中包含任意数量的“任务管理器”应用程序,ROM模块,以及Play商店和其他分发点。欢迎您列出所有这些问题,并向他们的作者询问这个问题。
答案 2 :(得分:0)
final PackageManager pm = getPackageManager();
List<ApplicationInfo> packages = pm.getInstalledApplications(PackageManager.GET_META_DATA);
for (ApplicationInfo packageInfo : packages) {
Log.d("Packages", "" + packageInfo.packageName);
}
上面的代码可以帮助你
答案 3 :(得分:0)
目前尚不清楚情况如何。 我猜想这是向公众展示设备的一种方式,但没有让他们为他人展示设备。
也许最好将白名单而不是黑名单。意思是商店应该说明哪些应用程序应该可以在设备上进行测试,然后再进行其他活动。
但这又需要维护:流行应用程序的程序包名称也可能会更改。您最好提供一种通过在线服务更新应用程序设置的方法,这样您就可以更改所需的程序包,而无需实际访问设备,而不必下载和安装完整的应用程序。
如果您只需要使用经过多手操作且不宜使用的设备,建议您使用经过改进的设备。我只知道Sonim:它们提供了一个库(需要清单中的Sonim提供的哈希键才能使用它)。有了它,您可以禁止更改许多设置而不会阻止访问整个设置应用程序。
答案 4 :(得分:-1)
shell使用adb进入设备,并调用:
pm list packages
这将为您提供一份pacakges列表。从那里你会看到: com.android.settings