Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can I detect that a particular permission has been removed for my android app?

So with the arrival of Android 4.3 comes the ability to selectively disable particular permissions for apps.

This could obviously cause problems where an app loses a permission it needs to operate correctly.

Does the system broadcast a message when a permission is revoked, or how could I tell that my app no longer has a certain permission? Ideally I would like to inform the user that turning off permission A will break xyz in the application.

like image 975
user1088166 Avatar asked Aug 01 '13 11:08

user1088166


1 Answers

There is no broadcast, but you can check permissions yourself on startup(or resume, etc). Context#checkCallingOrSelfPermission() is provided for this.

If you want to check all your permissions, you could do something like this:

public static boolean[] getPermissionsGranted(Context context, String[] permissions){
    boolean[] permissionsGranted = new boolean[permissions.length];
    for(int i=0;i<permissions.length;i++){
        int check = context.checkCallingOrSelfPermission(permissions[i]);
        permissionsGranted[i] = (check == PackageManager.PERMISSION_GRANTED);
    }
    return permissionsGranted;
}

Where the input Strings are the permissions' names, such as "android.permission.INTERNET".

like image 71
Geobits Avatar answered Oct 05 '22 11:10

Geobits