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 …

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();} } 
  • Compras en la aplicación para Android: ¿necesitas comprobar el permiso com.android.vending.BILLING cuando orientas Android 6?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.