【问题标题】:How to get Android device Features using package manager如何使用包管理器获取 Android 设备功能
【发布时间】:2011-07-12 21:27:35
【问题描述】:

我正在开发一个 android 应用程序,我需要 android 设备功能。我知道,通过使用包管理器,getSystemAvailableFeatures 方法应该可用。该方法仍然不可用,任何人都可以通过发布一些与之相关的示例或源代码来帮助我。

【问题讨论】:

  • 你尝试getSystemAvailableFeatures()时发生了什么??

标签: android package-managers


【解决方案1】:

我使用以下函数来确定某个功能是否可用:

    public final static boolean isFeatureAvailable(Context context, String feature) {
        final PackageManager packageManager = context.getPackageManager();
        final FeatureInfo[] featuresList = packageManager.getSystemAvailableFeatures();
        for (FeatureInfo f : featuresList) {
            if (f.name != null && f.name.equals(feature)) {
                 return true;
            }
        }

       return false;
    }

用法(即来自 Activity 类):

    if (isFeatureAvailable(this, PackageManager.FEATURE_CAMERA)) {
        ...
    }

【讨论】:

  • 如何获取适用于 android 设备的所有功能列表?我面临的问题是我的应用从 Google PlayStore 下载时不兼容。所以我无法弄清楚哪个权限/功能不允许我做同样的事情。
  • @JatinJha 为了将应用在 Google Play 上的可见性限制在具有某些功能的设备(例如 flashcamera 等),您必须通过在清单文件中放置 <uses-feature> 标记来宣传您的应用程序依赖于支持特定功能/功能
【解决方案2】:

如果您知道要检查的功能,则无需列举所有系统功能并对照您要查找的功能进行检查。从 API 级别 5 开始,您可以使用 PackageManager.hasSystemFeature() 函数来完成与上一个答案中显示的 isFeatureAvailable() 函数相同的工作。

例如...

PackageManager packageManager = this.getPackageManager();

if (packageManager.hasSystemFeature(PackageManager.FEATURE_NFC))
    Log.d("TEST", "NFC IS AVAILABLE\n");
else
    Log.d("TEST", "NFC IS *NOT* AVAILABLE\n");

【讨论】:

    猜你喜欢
    • 2019-06-02
    • 1970-01-01
    • 2020-11-09
    • 2013-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多