Search code examples
javaandroidpermissionsandroid-manifest

Programmatically retrieve permissions from manifest.xml in android


I have to programmatically retrieve permissions from the manifest.xml of an android application and I don't know how to do it.

I read the post here but I am not entirely satisfied by the answers. I guess there should be a class in the android API which would allow to retrieve information from the manifest.

Thank you.


Solution

  • You can get an application's requested permissions (they may not be granted) using PackageManager:

    PackageInfo info = getPackageManager().getPackageInfo(context.getPackageName(), PackageManager.GET_PERMISSIONS);
    String[] permissions = info.requestedPermissions;//This array contains the requested permissions.
    

    I have used this in a utility method to check if the expected permission is declared:

    //for example, permission can be "android.permission.WRITE_EXTERNAL_STORAGE"
    public boolean hasPermission(String permission) 
    {
        try {
            PackageInfo info = getPackageManager().getPackageInfo(context.getPackageName(), PackageManager.GET_PERMISSIONS);
            if (info.requestedPermissions != null) {
                for (String p : info.requestedPermissions) {
                    if (p.equals(permission)) {
                        return true;
                    }
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return false;
    }