2011-11-28 16 views
14

¿Cómo verifico un permiso específico en el código manifest.xml? Quiero arrojar alguna excepción si faltan algunos permisos que son necesarios para mi aplicación.¿Hay alguna manera de verificar el permiso de manifiesto del código?

Por ejemplo, FINE_LOCATION y COARSE_LOCATION sé que Android también lanzará una excepción en el lanzamiento de la activiy específica que utiliza el GPS, pero tengo que comprobar el manifiesto y lanzar una excepción durante la presentación de la solicitud sí mismo. Esto es válido no solo para el acceso a la ubicación, sino también para otros permisos.

Cualquier sugerencia sería útil.

Respuesta

33

Puede verificar si el permiso se concede o no para obtener un permiso específico utilizando PackageManager. Por ejemplo

PackageManager pm = getPackageManager(); 
    if (pm.checkPermission(permission.FINE_LOCATION, getPackageName()) == PackageManager.PERMISSION_GRANTED) { 
     // do something 
    } else { 
     // do something 
    } 
+5

La solución anterior no funcionará en Android 6.0 si establece targetSdkVersion en 23 – user2448396

4

Usted puede leer las etiquetas <uses-permission> disponibles en tiempo de ejecución utilizando el siguiente. Probado en versiones anteriores de Android Y Android 6 y 7

PackageManager pm = getPackageManager(); 
try 
{ 
    PackageInfo packageInfo = pm.getPackageInfo(getPackageName(), PackageManager.GET_PERMISSIONS); 
    String[] requestedPermissions = null; 
    if (packageInfo != null) { 
     requestedPermissions = packageInfo.requestedPermissions; 
    } 

    if (requestedPermissions != null && requestedPermissions.length > 0) 
    { 
     List<String> requestedPermissionsList = Arrays.asList(requestedPermissions); 
     ArrayList<String> requestedPermissionsArrayList = new ArrayList<String>(); 
     requestedPermissionsArrayList.addAll(requestedPermissionsList); 

     Log.i(ExConsts.TAG, ""+requestedPermissionsArrayList); 
    } 
} 
catch (PackageManager.NameNotFoundException e) 
{ 
    e.printStackTrace(); 
} 
Cuestiones relacionadas