varios usar studio riesgosos permisos pedir para multiples camara bloquear aplicaciones administrador android permissions

usar - Enlace entre permisos de Android y grupos de permisos



permisos para usar camara android studio (4)

Es posible usar PackageManager getAllPermissionGroups () y queryPermissionsByGroup () para enumerar toda la jerarquía de permisos de Android. El siguiente código produjo la salida mostrada al final en un dispositivo 5.1.1 (SDK 22). Los grupos marcados como "personales" tienen groupInfo.flags == 1, y parecen corresponder a los grupos de permisos que se llaman "peligrosos" en Marshmallow.

Obtendrá diferentes jerarquías de permisos en diferentes dispositivos debido a las diferencias en los niveles de SDK y al hecho de que las aplicaciones pueden definir permisos personalizados.

/** * Uses PackageManager getAllPermissionGroups() and queryPermissionsByGroup() * to enumerate the Android permission hierarchy. */ private void showPermissionTree() { final PackageManager pm = m_context.getPackageManager(); if (pm == null) return; /* * Get a list of all permission groups and sort them alphabetically. * Then add to the end of the list the special case of a null group name. There can be * numerous permissions that are not listed under a group name. */ List<PermissionGroupInfo> groupInfoList = pm.getAllPermissionGroups(0); if (groupInfoList == null) return; ArrayList<String> groupNameList = new ArrayList<>(); for (PermissionGroupInfo groupInfo : groupInfoList) { String groupName = groupInfo.name; if (groupName != null) { if (Build.VERSION.SDK_INT >= 17) { /* * SDK 17 added the flags field. If non-zero, the permission group contains * permissions that control access to user personal data. * N.B. These are the permissions groups that are called "dangerous" in * Marshmallow. */ if (groupInfo.flags != 0) { groupName += " (personal)"; } } groupNameList.add(groupName); } } Collections.sort(groupNameList); groupNameList.add(null); /* * Loop though each permission group, adding to the StringBuilder the group name and * the list of all permissions under that group. */ StringBuilder sb = new StringBuilder(10000); final String INDENT = " "; for (String groupName : groupNameList) { if (groupName == null) groupName = "null"; sb.append("* ").append(groupName).append("/n"); ArrayList<String> permissionNameList = getPermissionsForGroup(groupName); if (permissionNameList.size() > 0) { for (String permission : permissionNameList) { sb.append(INDENT).append(permission).append("/n"); } } else { sb.append(INDENT).append("no permissions under group/n"); } sb.append("/n"); } m_textView.setText(sb.toString()); } /* * Gets and returns a list of all permission under the specified group, sorted alphabetically. * * N.B. groupName can be null. The docs for PackageManager.queryPermissionsByGroup() say * "Use null to find all of the permissions not associated with a group." */ private ArrayList<String> getPermissionsForGroup(String groupName) { final PackageManager pm = m_context.getPackageManager(); final ArrayList<String> permissionNameList = new ArrayList<>(); try { List<PermissionInfo> permissionInfoList = pm.queryPermissionsByGroup(groupName, PackageManager.GET_META_DATA); if (permissionInfoList != null) { for (PermissionInfo permInfo : permissionInfoList) { String permName = permInfo.name; if (permName == null) { permName = "null"; } else if (permName.isEmpty()) { permName = "empty"; } permissionNameList.add(permName); } } } catch (PackageManager.NameNotFoundException e) { // e.printStackTrace(); Log.d(TAG, "permissions not found for group = " + groupName); } Collections.sort(permissionNameList); return permissionNameList; }

* android.permission-group.ACCESSIBILITY_FEATURES no permissions under group * android.permission-group.ACCOUNTS (personal) no permissions under group * android.permission-group.AFFECTS_BATTERY android.permission.CHANGE_WIFI_MULTICAST_STATE android.permission.FLASHLIGHT android.permission.TRANSMIT_IR android.permission.VIBRATE android.permission.WAKE_LOCK * android.permission-group.APP_INFO android.permission.GET_TASKS android.permission.KILL_BACKGROUND_PROCESSES android.permission.MANAGE_ACTIVITY_STACKS android.permission.PERSISTENT_ACTIVITY android.permission.REAL_GET_TASKS android.permission.RECEIVE_BOOT_COMPLETED android.permission.REMOVE_TASKS android.permission.REORDER_TASKS android.permission.RESTART_PACKAGES * android.permission-group.AUDIO_SETTINGS android.permission.MODIFY_AUDIO_SETTINGS * android.permission-group.BLUETOOTH_NETWORK android.permission.BLUETOOTH android.permission.BLUETOOTH_ADMIN android.permission.BLUETOOTH_MAP android.permission.BLUETOOTH_PRIVILEGED * android.permission-group.BOOKMARKS (personal) no permissions under group * android.permission-group.CALENDAR (personal) no permissions under group * android.permission-group.CAMERA (personal) no permissions under group * android.permission-group.COST_MONEY no permissions under group * android.permission-group.DEVELOPMENT_TOOLS android.permission.ACCESS_ALL_EXTERNAL_STORAGE android.permission.CHANGE_CONFIGURATION android.permission.DUMP android.permission.READ_LOGS android.permission.SET_ALWAYS_FINISH android.permission.SET_DEBUG_APP android.permission.SET_PROCESS_LIMIT android.permission.SIGNAL_PERSISTENT_PROCESSES android.permission.WRITE_SECURE_SETTINGS com.android.chrome.permission.DEBUG * android.permission-group.DEVICE_ALARMS (personal) no permissions under group * android.permission-group.DISPLAY android.permission.SYSTEM_ALERT_WINDOW * android.permission-group.HARDWARE_CONTROLS android.permission.ACCESS_FM_RADIO android.permission.ACCESS_MTP android.permission.HARDWARE_TEST android.permission.MANAGE_USB * android.permission-group.LOCATION (personal) no permissions under group * android.permission-group.MESSAGES (personal) no permissions under group * android.permission-group.MICROPHONE (personal) no permissions under group * android.permission-group.NETWORK android.permission.ACCESS_NETWORK_STATE android.permission.ACCESS_WIFI_STATE android.permission.ACCESS_WIMAX_STATE android.permission.BROADCAST_NETWORK_PRIVILEGED android.permission.CHANGE_NETWORK_STATE android.permission.CHANGE_WIFI_STATE android.permission.CHANGE_WIMAX_STATE android.permission.CONNECTIVITY_INTERNAL android.permission.DOWNLOAD_WITHOUT_NOTIFICATION android.permission.INTERNET android.permission.LOOP_RADIO android.permission.NFC android.permission.READ_WIFI_CREDENTIAL android.permission.RECEIVE_DATA_ACTIVITY_CHANGE android.permission.SCORE_NETWORKS com.android.vending.BILLING com.android.vending.CHECK_LICENSE com.google.android.c2dm.permission.RECEIVE com.google.android.c2dm.permission.SEND com.google.android.gtalkservice.permission.SEND_HEARTBEAT com.google.android.permission.BROADCAST_DATA_MESSAGE com.google.android.xmpp.permission.BROADCAST com.google.android.xmpp.permission.SEND_RECEIVE com.google.android.xmpp.permission.USE_XMPP_ENDPOINT com.google.android.xmpp.permission.XMPP_ENDPOINT_BROADCAST com.gsma.services.nfc.permission.TRANSACTION_EVENT * android.permission-group.PERSONAL_INFO (personal) no permissions under group * android.permission-group.PHONE_CALLS (personal) no permissions under group * android.permission-group.SCREENLOCK (personal) no permissions under group * android.permission-group.SOCIAL_INFO (personal) no permissions under group * android.permission-group.STATUS_BAR android.permission.EXPAND_STATUS_BAR * android.permission-group.STORAGE (personal) no permissions under group * android.permission-group.SYNC_SETTINGS android.permission.READ_SYNC_SETTINGS android.permission.READ_SYNC_STATS android.permission.WRITE_SYNC_SETTINGS * android.permission-group.SYSTEM_CLOCK android.permission.SET_TIME_ZONE * android.permission-group.SYSTEM_TOOLS android.permission.ACCESS_LOCATION_EXTRA_COMMANDS android.permission.ACCESS_MOCK_LOCATION android.permission.ACCESS_PDB_STATE android.permission.ASEC_ACCESS android.permission.ASEC_CREATE android.permission.ASEC_DESTROY android.permission.ASEC_MOUNT_UNMOUNT android.permission.ASEC_RENAME android.permission.BATTERY_STATS android.permission.BLUETOOTH_STACK android.permission.BROADCAST_PACKAGE_REMOVED android.permission.BROADCAST_STICKY android.permission.CHANGE_BACKGROUND_DATA_SETTING android.permission.CLEAR_APP_CACHE android.permission.DIAGNOSTIC android.permission.FORCE_STOP_PACKAGES android.permission.GET_APP_OPS_STATS android.permission.GET_DETAILED_TASKS android.permission.GET_PACKAGE_SIZE android.permission.GLOBAL_SEARCH android.permission.GLOBAL_SEARCH_CONTROL android.permission.INTERACT_ACROSS_USERS android.permission.INTERACT_ACROSS_USERS_FULL android.permission.MANAGE_USERS android.permission.MODIFY_APPWIDGET_BIND_PERMISSIONS android.permission.MOUNT_FORMAT_FILESYSTEMS android.permission.MOUNT_UNMOUNT_FILESYSTEMS android.permission.NET_ADMIN android.permission.NET_TUNNELING android.permission.OEM_UNLOCK_STATE android.permission.READ_DREAM_STATE android.permission.READ_SEARCH_INDEXABLES android.permission.RECOVERY android.permission.REMOTE_AUDIO_PLAYBACK android.permission.SET_ANIMATION_SCALE android.permission.SET_PREFERRED_APPLICATIONS android.permission.SET_SCREEN_COMPATIBILITY android.permission.SET_WALLPAPER_COMPONENT android.permission.START_ANY_ACTIVITY android.permission.START_TASKS_FROM_RECENTS android.permission.SUBSCRIBED_FEEDS_READ android.permission.SUBSCRIBED_FEEDS_WRITE android.permission.WRITE_APN_SETTINGS android.permission.WRITE_DREAM_STATE android.permission.WRITE_SETTINGS com.android.launcher.permission.INSTALL_SHORTCUT com.android.launcher.permission.UNINSTALL_SHORTCUT com.android.launcher3.permission.READ_SETTINGS com.android.launcher3.permission.WRITE_SETTINGS com.google.android.launcher.permission.READ_SETTINGS com.google.android.launcher.permission.WRITE_SETTINGS com.motorola.permission.ACCESS_COGRADIO * android.permission-group.USER_DICTIONARY (personal) no permissions under group * android.permission-group.VOICEMAIL (personal) no permissions under group * android.permission-group.WALLPAPER android.permission.SET_WALLPAPER android.permission.SET_WALLPAPER_HINTS * android.permission-group.WRITE_USER_DICTIONARY android.permission.WRITE_USER_DICTIONARY * com.google.android.gms.permission.CAR_INFORMATION com.google.android.gms.permission.CAR_FUEL com.google.android.gms.permission.CAR_MILEAGE com.google.android.gms.permission.CAR_VENDOR_EXTENSION * null no permissions under group

Soy un nuevo desarrollador de Android. Estaba mirando los permisos de manifiesto de Android. Hay dos cosas Permisos y grupos de permisos. Sé que la lista en

http://developer.android.com/reference/android/Manifest.permission.html

no es exhaustivo y usted puede agregar su propio permiso también. Pero, quiero preguntarle si es posible mapear cada permiso en los grupos de permisos mencionados en

http://developer.android.com/reference/android/Manifest.permission_group.html .



La fuente de Android contiene las asignaciones reales entre los permisos y grupos predeterminados.

https://github.com/android/platform_frameworks_base/blob/master/core/res/AndroidManifest.xml

Si quería un mapeo de un grupo de permisos a un permiso, podría tomar el archivo AndroidMainifest.xml para la versión de Android con la que está trabajando y analizar el XML para crear la asignación. Entonces, para responder a su pregunta sí, es posible, pero parece que esto puede ser excesivo para su tarea.

ACTUALIZACIÓN: porque realmente necesitaba este mapeo para otro proyecto, decidí compartir mi código para crear este mapeo. Puede ver los resultados en el repositorio github.

Enlace: https://github.com/benjholla/AndroidPermissionAttributeMapper

ACTUALIZACIÓN 2:

Mi grupo abierto originó nuestra solución que genera esta asignación y algunos otros contenedores de objetos en torno a la documentación de Android para obtener permisos. Hay algunos tutoriales en la página del proyecto y el repositorio github.

Página del proyecto: https://ensoftcorp.github.io/android-essentials-toolbox/

Fuente: https://github.com/EnSoftCorp/android-essentials-toolbox


Por lo que yo sé: Manifest.permission_group * AB * = Manifest.permission * A * + Manifest.permission * B * eche un vistazo a esta instancia:

android.permission-group.MESSAGES = SEND_SMS + WRITE_SMS + RECEIVE_SMS + READ_SMS + BROADCAST_SMS

Espero que captes la idea.