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

天大地大妈咪最大 提交于 2019-11-30 00:43:19

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;
    }

Check for permissions:

ContextCompat.checkSelfPermission(Context context, String permission)

Request permissions:

ActivityCompat.requestPermissions(Activity activity, String[] permissions, int requestCode)

or inside a support-v4 Fragment

requestPermissions(String[] permissions, int requestCode)

try this way

if (Build.VERSION.SDK_INT >= 23) {
    if (ActivityCompat.checkSelfPermission(MainActivity.this, Manifest.permission.READ_PHONE_STATE)
                != PackageManager.PERMISSION_GRANTED) {
            requestContactsPermissions1();
    } else {
        // your code
    }
}

EDITED:

Add in dependencies block in lower-level(your app) build.gradle:

compile 'com.android.support:appcompat-v7:23.1.1'

or add below only if you need design support lib

compile 'com.android.support:design:23.1.1'

use one of above

That is because checkSelfPermission() was added in API 23. So you'll have to code conditionally like:

if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.M){
    //use checkSelfPermission()
} else {
    //simply use the required feature
    //as the user has already granted permission to them during installation
}

check the device sdk before calling the request permission

 if(Build.VERSION.SDK_INT==Build.VERSION_CODES.M)
{
//call the request permission here 
}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!