【问题标题】:How to find the package name of default settings application?如何找到默认设置应用程序的包名?
【发布时间】:2013-04-02 02:45:44
【问题描述】:

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

当工作时显示默认android Settings应用程序的包名称是com.android.settings。现在我有一些疑问

  1. Settings 应用程序是否在所有 android 版本中都有包名称 com.android.settings?如果没有,它们是什么?

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

【问题讨论】:

  • 不建议从任何地方屏蔽设置和任务管理器
  • 我不是说你不能,但你不应该
  • "不建议从任何地方阻止任何设置" 为什么?我在条码扫描仪设备上使用 Android。这些设备经过许多人的手。用户没有理由更改任何设置。

标签: android package settings taskmanager


【解决方案1】:

为此,我尝试获取当前正在运行的应用程序并检查它们的包名是否被允许。如果不允许,则显示一个新的活动。

幸运的是,对于受您的应用影响的用户,这将是不可靠的。

设置应用程序在所有安卓版本中都有包名 com.android.settings 吗?

不一定。更重要的是,任何给定的固件都可以有任意数量的修改设置的应用程序,由固件作者提供。某些设置即使不包含在固件中也可以修改,尤其是在 root 设备上。

如果不是,它们是什么?

欢迎您列出所有设备制造商和 ROM 模组作者,并向他们提出这个问题。

如何找到任务管理器的包名?

设备、ROM 模组中包含任意数量的“任务管理器”应用,可在 Play 商店和其他分发点上使用。欢迎您列出所有这些人,并向他们的作者提出这个问题。

【讨论】:

  • 您能否建议我们在这种情况下需要遵循的正确方法?就像问题中所说的,该设备将被第三方使用,我们不希望他们更改设备的任何设置?
  • @RenjithKN:如果这是您自己的设备,请设置一个二级受限帐户,该帐户无权访问“设置”应用。这是主设备帐户可以做的事情,不需要任何编程。
  • @CommnsWare 感谢您的回复,不,不适用于我的设备,场景不同,这是针对商店中的演示设备。在演示设备中,我们安装了我们的 KIOSK 应用程序,该设备将可公开访问且无人值守。我们需要限制客户设置设备屏幕锁定和卸载 KIOSK 应用程序。在没有任何 EMM 控制台和托管 Play 商店的情况下,是否可以从 KIOSK 应用程序本身进行所有这些限制? (我对EMM了解不多,刚开始读)
  • @RenjithKN:Android 本身从 Android 5.0 左右开始就支持 kiosk 模式。我没有太注意细节。
【解决方案2】:

使用 adb 进入设备,并调用:

pm 列出包

这将为您提供一个包装清单。从那里你会看到: com.android.settings

【讨论】:

    【解决方案3】:
        final PackageManager pm = getPackageManager();
        List<ApplicationInfo> packages = pm.getInstalledApplications(PackageManager.GET_META_DATA);
    
        for (ApplicationInfo packageInfo : packages) {
            Log.d("Packages", "" + packageInfo.packageName);
        }
    

    上面的代码应该对你有帮助

    【讨论】:

      【解决方案4】:

      试试这个

      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;
          }

      【讨论】:

        【解决方案5】:

        目前还不完全清楚场景是什么。 我想这类似于向公众炫耀设备,而不是让他们为其他人改造设备。

        也许做一个白名单而不是黑名单会更好。这意味着商店应该说明哪些应用程序可以在设备上进行测试,然后如果是其他应用程序,您就可以开始您的活动。

        但这又需要维护:流行应用程序的包名称也可能会更改。您最好提供一种通过在线服务更新应用设置的方法,这样您就可以更改所需的软件包,而无需物理访问设备,也无需下载和安装完整的应用。

        如果您只需要一个经过很多人手的设备并且不应该被调和,我建议使用经过修改的设备。我只知道 Sonim:他们提供了一个库(需要在清单中提供 Sonim 提供的哈希键才能使用它)。有了它,您可以在不阻止访问整个设置应用程序的情况下禁止更改许多设置。

        【讨论】:

          猜你喜欢
          • 2017-09-04
          • 1970-01-01
          • 2014-12-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-06-16
          • 2011-03-09
          • 2013-09-03
          相关资源
          最近更新 更多