如何查找默认设置应用程序的包名?

时间:2013-04-10 10:05:24

标签: android package settings taskmanager

我想阻止在我的应用程序中启动任务管理器和设置应用程序。为此,我尝试获取当前正在运行的应用程序并检查是否允许其包名。如果不允许,则显示新活动。

当计算出来时,它显示默认的android Settings应用程序的包名是com.android.settings。现在我有一些疑问

  1. 在所有Android版本中,Settings应用程序的包名是com.android.settings吗?如果不是,它们是哪个?

  2. 如何查找任务管理器的包名?

5 个答案:

答案 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;
&#13;
&#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