2011-03-10 31 views
6

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

+0

当你试图'getSystemAvailableFeatures()'发生了什么事? – 2011-03-10 17:02:03

回答

24

我用下面的函数来确定是否存在某种功能可供选择:

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

我如何获得Android设备可用的所有功能列表?我面临的问题是我的应用在从Google PlayStore下载时不兼容。所以我无法弄清楚哪些许可/功能不允许我这样做。 – 2016-06-07 06:28:00

+1

@JatinJha为了**限制应用程序在Google Play **上对具有某些功能的设备(例如_flash_,_camera_等)的可见性,您必须宣传您的应用程序**取决于是否支持特定功能/特性**通过在清单文件中放置一个标签。 – 2017-01-12 16:57:42

9

如果你知道的功能,您要检查,然后您不需要枚举所有系统功能并检查您所查找的功能。由于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"); 
相关问题