ContextCompat.checkSelfPermission(Context, Manifest.permission.CAMERA) alway return granted

Viewed 5739

I use Android API lvl 23 in my application. When I check Camera permission, the ContextCompat.checkSelfPermission always return 0 (== PackageManager.PERMISSION_GRANTED)

I managed to change it from ContextCompat to ActivityCompat.

Here is my code:

public static boolean verify(Activity activity, final String[] PERMISSIONS, final int PERMISSIONS_REQUEST_ID) {
    if (underAPI23())
        return true;

    String[] denyPermission = new String[PERMISSIONS.length];
    int denyPermissionLength = 0;
    boolean shouldShowRequest = false;

    for (int i = 0; i < PERMISSIONS.length; i++) {
        int check = ContextCompat.checkSelfPermission(activity, PERMISSIONS[i]);
        LogUtils.e(TAG, PERMISSIONS[i] + ": " + (check != PackageManager.PERMISSION_GRANTED));
        // ===== ===== =====
        // This always return true. :'(
        // ===== ===== =====
        if (check != PackageManager.PERMISSION_GRANTED) {
            denyPermission[denyPermissionLength++] = PERMISSIONS[i];
            if (shouldShowRequest == false) {
                boolean should = ActivityCompat.shouldShowRequestPermissionRationale(activity, PERMISSIONS[i]);
                if (should)
                    shouldShowRequest = true;
            }
        }
    }

    if (denyPermissionLength > 0) {
        if (shouldShowRequest) {
            ActivityCompat.requestPermissions(activity, denyPermission, PERMISSIONS_REQUEST_ID);
        } else {
            ActivityCompat.requestPermissions(activity, denyPermission, PERMISSIONS_REQUEST_ID);
        }
        return false;
    } else {
        return true;
    }
}

My dependencies in Gradle build

dependencies {
    //...
    compile 'com.android.support:support-v4:23.2.0'
    compile 'com.android.support:appcompat-v7:23.2.0'
    //...
}

Updated: Permission call

if (PermissionGrant.verify(getActivity(), new String[]{Manifest.permission.CAMERA}, GRANT_TAKE_PHOTO)) {
    // Do my jobs
}
1 Answers
Related