Search code examples
androidandroid-support-libraryandroid-permissionsandroid-6.0-marshmallow

Call requires API level 23 (current min is 14): android.app.Activity#requestPermissions,checkSelfPermission


I am trying add run time permissions android(6.0.1) API 23,If I use SDK version(min and target version both 23) it woks fine, like below,

    <uses-sdk
                android:minSdkVersion="23"
                android:targetSdkVersion="23" />

If I change android:minSdkVersion(less then 23)

For example:

I am getting error below:

Call requires API level 23 (current min is 14): android.app.Activity#requestPermissions,checkSelfPermission

For following 2 methods,

1)requestPermissions(permissionsList.toArray(new String[permissionsList.size()]),REQUEST_CODE_ASK_MULTIPLE_PERMISSIONS)

2)checkSelfPermission(permission)

I tried ActivityCompat.checkSelfPermission() and ContextCompat.checkSelfPermission() both are not working.

What I missing could not understand..


Solution

  • Either check for target >=23 or simply add below line above your method

    @TargetApi(Build.VERSION_CODES.M)
    

    For example, If you are checking for storage permissions, then you can refer to this function,

    @TargetApi(Build.VERSION_CODES.M)
        public boolean CheckStoragePermission() {
            int permissionCheckRead = ContextCompat.checkSelfPermission(context,
                    Manifest.permission.READ_EXTERNAL_STORAGE);
            if (permissionCheckRead != PackageManager.PERMISSION_GRANTED) {
                if (ActivityCompat.shouldShowRequestPermissionRationale((Activity) context,
                        Manifest.permission.READ_EXTERNAL_STORAGE)) {
                    // Show an expanation to the user *asynchronously* -- don't block
                    // this thread waiting for the user's response! After the user
                    // sees the explanation, try again to request the permission.
                    ActivityCompat.requestPermissions((Activity) context,
                            new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
                            Define.PERMISSION_STORAGE);
                } else {
                    // No explanation needed, we can request the permission.
    
                    ActivityCompat.requestPermissions((Activity) context,
                            new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
                            Define.PERMISSION_STORAGE);
    
                    // MY_PERMISSIONS_REQUEST_READ_CONTACTS is an
                    // app-defined int constant. The callback method gets the
                    // result of the request.
                }
                return false;
            } else
                return true;
        }