Cómo bloquear una aplicación de Android de usar un permiso
Si una aplicación tiene el archivo "android.permission.CAMERA", y quería que mi aplicación bloqueara el uso de este permiso cuando intente acceder al Hardware de la Cámara, "por razones de seguridad", ¿cómo podría bloquear el proceso?
* NOTA: Supongamos que Mi aplicación tiene todos los permisos …
- Excepción de seguridad poco clara al utilizar la copia de seguridad de servicio de Android (copia de seguridad en la nube)
- Permisos no mostrados durante la instalación de apk
- ACCESS_FINE_LOCATION Permisos de AndroidManifest no concedidos
- Acceso directo para iniciar una actividad
- Error de permiso publish_actions
- ¿Se necesita permiso para usar Intent para llamar al teléfono?
- ¿Qué sucede cuando se deshabilita el permiso con la nueva función de OS 4.3?
- INJECT_EVENTS permiso en un dispositivo enraizado
- ¿Cómo hacer cumplir el permiso personalizado en una actividad en Android?
- Permisos de lectura y escritura de Android ContentProvider
- Solicitar y permitir permiso WRITE_EXTERNAL_STORAGE en tiempo de ejecución no tiene efectos en la sesión actual
- aplicación no se muestra en Galaxy Tab 2 10.1 y 7.0
- Android Marshmallow Permisos de Pruebas
Debe utilizar la API de administración de dispositivos . A partir de Android 4.0, puede desactivar el uso de la cámara con setCameraDisabled
No sé de ninguna solución no enraizada, sin embargo hay una aplicación en el mercado androide llamado "bloqueador de permisos de Android" que puede bloquear los permisos de aplicación individuales en una base de aplicación. Sólo cuesta 99 centavos, así que lo probé y lo he estado utilizando con éxito desde entonces. Vale la pena cada centavo en mi opinión.
Odio cuando los programadores dicen "esto es imposible!" Creo que "siempre hay una salida"
public static void killAppByPermission (Context context, String permissionToKill) { try { PackageManager p = context.getPackageManager(); final List <PackageInfo> appinstall = p.getInstalledPackages(PackageManager.GET_PERMISSIONS); for(PackageInfo pInfo:appinstall) { String[] reqPermission = pInfo.requestedPermissions; if(reqPermission != null) { for(int i=0;i<reqPermission.length;i++) { if (((String)reqPermission[i]).toLowerCase().contains(permissionToKill.toLowerCase())) { killAppByPackName(pInfo.packageName.toString()); break; } } } } } catch (Throwable t){t.printStackTrace();} } public static void killAppByPackName (String packageToKill) { try { ActivityManager actvityManager = (ActivityManager) Sett.context.getSystemService(Context.ACTIVITY_SERVICE); final List<RunningAppProcessInfo> procInfos = actvityManager.getRunningAppProcesses(); for (RunningAppProcessInfo runningAppProcessInfo : procInfos) { //Log.e("running",runningAppProcessInfo.processName); if(runningAppProcessInfo.processName.toLowerCase().contains(packageToKill.toLowerCase())) { android.os.Process.sendSignal(runningAppProcessInfo.pid, android.os.Process.SIGNAL_KILL); actvityManager.killBackgroundProcesses(packageToKill); //Log.e("killed", "!!! killed "+ packageToKill); } } } catch (Throwable t){History.Error(t);} } public static void killAppByName (Context context, String appNameToKill) { try { ActivityManager manager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); List<ActivityManager.RunningAppProcessInfo> listOfProcesses = manager.getRunningAppProcesses(); for (ActivityManager.RunningAppProcessInfo process : listOfProcesses) { if (process.processName.toLowerCase().contains(appNameToKill.toLowerCase())) { //Log.e("killed", process.processName); manager.killBackgroundProcesses(process.processName); break; } } } catch (Throwable t){t.printStackTrace();} }