2011-03-10 10 views
6

Estoy desarrollando una aplicación para Android y necesito las características del dispositivo Android. Sé que, al usar Package Manager, el método getSystemAvailableFeatures debería estar disponible. Todavía el método no está disponible. ¿Puede alguien ayudarme publicando algún ejemplo o código fuente relacionado con eso?Cómo obtener las características del dispositivo Android usando el administrador de paquetes

+0

¿Qué pasó cuando intentó 'getSystemAvailableFeatures()' ?? –

Respuesta

24

que utilizar la siguiente función para determinar si una función está disponible:

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

El uso (es decir, de la clase de actividad):

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

¿Cómo puedo obtener la lista de todas las características disponibles para un dispositivo Android? El problema que estoy enfrentando es que mi aplicación no es compatible cuando la descargo de Google PlayStore. Por lo tanto, no puedo determinar qué permiso/función no me permite hacer lo mismo. –

+1

@JatinJha Con el fin de ** restringir la visibilidad de la aplicación en Google Play ** a dispositivos que tienen ciertas características (por ejemplo, _flash_, _camera_ etc.), debe anunciar que su aplicación ** depende de que admita funciones/características específicas ** , colocando una etiqueta '' en su archivo de manifiesto. –

9

Si conoce la función que desea comprobar a continuación, no necesita enumerar todas las funciones del sistema y compararlas con la que está buscando. Desde API nivel 5, puede usar la función PackageManager.hasSystemFeature() para realizar el mismo trabajo que la función isFeatureAvailable() que se muestra en la respuesta anterior.

Por ejemplo ...

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"); 
Cuestiones relacionadas