Recuperar mediante programación permisos de manifest.xml en android

Tengo que recuperar los permisos mediante programación desde el manifest.xml de una aplicación de Android y no sé cómo hacerlo.

Leí el mensaje aquí, pero las respuestas no me satisfacen totalmente. Supongo que debería haber una clase en la API de Android que permitiría recuperar información del manifiesto.

Gracias.

Puede utilizar este método:

//for example, permission can be "android.permission.WRITE_EXTERNAL_STORAGE" public boolean hasPermission(String permission) { try { PackageInfo info = getPackageManager().getPackageInfo(context.getPackageName(), PackageManager.GET_PERMISSIONS); if (info.requestedPermissions != null) { for (String p : info.requestedPermissions) { if (p.equals(permission)) { return true; } } } } catch (Exception e) { e.printStackTrace(); } return false; } 

Aquí hay un método de utilidad útil que hace exactamente eso.

 public static String[] retrievePermissions(Context context) { try { return context .getPackageManager() .getPackageInfo(context.getPackageName(), PackageManager.GET_PERMISSIONS) .requestedPermissions; } catch (PackageManager.NameNotFoundException e) throw new RuntimeException ("This should have never happened.", e); // I'd return null and Log.wtf(...) in production } 

Utilizar esta:

 public static String getListOfPermissions(final Context context) { String _permissions = ""; try { final AssetManager _am = context.createPackageContext(context.getPackageName(), 0).getAssets(); final XmlResourceParser _xmlParser = _am.openXmlResourceParser(0, "AndroidManifest.xml"); int _eventType = _xmlParser.getEventType(); while (_eventType != XmlPullParser.END_DOCUMENT) { if ((_eventType == XmlPullParser.START_TAG) && "uses-permission".equals(_xmlParser.getName())) { for (byte i = 0; i < _xmlParser.getAttributeCount(); i ++) { if (_xmlParser.getAttributeName(i).equals("name")) { _permissions += _xmlParser.getAttributeValue(i) + "\n"; } } } _eventType = _xmlParser.nextToken(); } _xmlParser.close(); // Pervents memory leak. } catch (final XmlPullParserException exception) { exception.printStackTrace(); } catch (final PackageManager.NameNotFoundException exception) { exception.printStackTrace(); } catch (final IOException exception) { exception.printStackTrace(); } return _permissions; } // Test: Log.wtf("test", getListOfPermissions(getApplicationContext())); 

Puede utilizar esta función:

 public boolean hasPermission(Context ctx,String permission){ return ctx.getPackageManager().checkPermission(permission, ctx.getPackageName()) == PackageManager.PERMISSION_GRANTED); } 

Uso:

 hasPermission(this,Manifest.permission.GET_ACCOUNTS); 
  • La base de datos Sqlite onUpgrade () no se llama
  • Cómo obtener la altura en píxeles de LinearLayout con layout_weight
  • Cómo hacer una página de configuración simple en android?
  • ¿Cómo mantener un ScrollView desplazado hacia abajo?
  • ¿Puedo almacenar archivos de imagen en firebase usando Java API?
  • Cómo centrar un ImageView verticalmente en su matriz?
  • Android studio - agrega la biblioteca de github
  • Intento pendiente siempre hacer nueva actividad
  • Cómo utilizar el widget de NumberPicker Android 4.0
  • ¿Por qué overridePendingTransition no tiene efecto cuando salto de Fragment a una nueva Activity?
  • ¿Utilizar javamail para enviar desde hotmail?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.