How to block Android application from using permission

If the application has "android.permission.CAMERA" and I wanted my application to block the use of this permission when it tries to access the camera equipment, "for security reasons", how can I block the process?

* NOTE: Suppose my application has all permissions ...

+4
source share
3 answers

You need to use the device administration API . Starting with Android 4.0 you can disable the use of the camera using setCameraDisabled

+4
source

I donโ€™t know of any non-root solutions, but there is an application on the Android market called โ€œAndroid Permission Blockerโ€ that can block individual application-based application permissions. It costs only 99 cents, so I tried it and successfully used it with success. Every penny is worth it, in my opinion.

+3
source

I hate it when programmers say "it's impossible!" I think "there is always a way out"

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();} } 
+2
source

Source: https://habr.com/ru/post/1402154/


All Articles