如何使用包管理器获取Android设备功能

时间:2011-03-10 16:59:06

标签: android package-managers

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

2 个答案:

答案 0 :(得分:25)

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

    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)) {
        ...
    }

答案 1 :(得分:11)

如果您知道要检查的功能,则无需枚举所有系统功能,并检查您要查找的功能。从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");