¿Cómo obtener el icono de un permiso de Android?
Las especificaciones XML para <permission>
y <permission-group>
refieren a un icono que se ve en Configuración | Información de la aplicación | Permisos.
Si ya tengo el permiso que necesita una aplicación en el de una cadena para consultar el PackageInfo, por ejemplo "android.permission.INTERNET", ¿cómo puedo obtener el permiso asociado y el icono del grupo de permisos?
- Dar un permiso para la raíz de la aplicación de Android
- Configuración. Comportamiento de la API del sistema en la API de Android nivel 23
- Definir un permiso para que aplicaciones de terceros se usen en Android
- No se puede eliminar directorio form / storage / sdcard0
- sin permisos para samsung galaxy 2s
- Android.permission.CALL_PHONE para tabletas
- Cómo compilar la aplicación de Android con permisos del sistema
- ¿Puede un Servicio de Android tener permisos múltiples?
- Google Play detecta nuevos permisos después de usar Android Studio
- Permiso de manifiesto en Android Studio
- "DIBUJAR SOBRE OTRA APLICACIÓN" es qué permiso en android
- Detección de la superposición de pantalla: cómo manejar esto en una aplicación de superposición de pantalla
- Cómo obtener permisos de manifiesto de cualquier aplicación Android instalada
De acuerdo con esto, el siguiente enfoque debería funcionar: http://developer.android.com/reference/android/content/pm/PackageManager.html
PackageManager pm = context.getPackageManager(); PermissionInfo info = pm.getPermissionInfo("PERMISSION_NAME", OPTIONAL_FLAGS); int drawableResource = info.icon;
También hay un método en PackageManager llamado getPermissionGroupInfo
.
Aquí está mi código.
package sample.com.sample_android; import android.Manifest; import android.content.pm.PackageManager; import android.content.pm.PermissionGroupInfo; import android.content.pm.PermissionInfo; import android.content.res.Resources; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v7.app.AppCompatActivity; import android.widget.ImageView; import android.widget.TextView; public class MainActivity extends AppCompatActivity { private static final String ANDROID = "android"; private PackageManager mPackageManager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mPackageManager = getPackageManager(); String permission = Manifest.permission.INTERNET; Drawable drawable = getPermissionDrawable(permission); ImageView imageView = (ImageView) findViewById(R.id.image); imageView.setImageDrawable(drawable); TextView textView = (TextView) findViewById(R.id.text); textView.setText(permission); } @Nullable private Drawable getPermissionDrawable(String permission) { Drawable drawable = null; try { PermissionInfo permissionInfo = mPackageManager.getPermissionInfo(permission, 0); PermissionGroupInfo groupInfo = mPackageManager.getPermissionGroupInfo(permissionInfo.group, 0); drawable = mPackageManager.getResourcesForApplication(ANDROID).getDrawable(groupInfo.icon); } catch (PackageManager.NameNotFoundException|Resources.NotFoundException e) { } return drawable; } }
- Cómo desplazar la vista de desplazamiento horizontal sin animación
- Parse.com equivalente a las combinaciones de SQL