it-swarm.com.de

Aufruf erfordert API-Level 23 (aktuelle Min ist 14): Android.app.Aktivität # requestPermissions, checkSelfPermission

Ich versuche, Laufzeitberechtigungen hinzuzufügen. Android (6.0.1) API 23, Wenn ich SDK-Version ( min und Zielversion sowohl 23 ) als auch

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

Wenn ich Android ändere: minSdkVersion (weniger als 23) 

Zum Beispiel: 

Ich bekomme eine Fehlermeldung unten:

Aufruf erfordert API-Ebene 23 (aktuell ist min 14): Android.app.Activity # requestPermissions, checkSelfPermission

Für die folgenden 2 Methoden

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

2)checkSelfPermission(permission)

Ich habe versucht, ActivityCompat.checkSelfPermission() und ContextCompat.checkSelfPermission(), beide funktionieren nicht.

Was mir fehlt, konnte ich nicht verstehen ..

21
Joe

Prüfen Sie entweder nach target> = 23 oder fügen Sie unterhalb Ihrer Methode einfach eine Zeile hinzu

@TargetApi(Build.VERSION_CODES.M)

Wenn Sie beispielsweise nach Speicherberechtigungen suchen, können Sie auf diese Funktion verweisen.

@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;
    }
28
ranjitzade

Auf Berechtigungen prüfen:

ContextCompat.checkSelfPermission(Context context, String permission)

Berechtigungen anfordern:

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

oder in einem support-v4 Fragment

requestPermissions(String[] permissions, int requestCode)

33
Egor

versuchen Sie es auf diese Weise

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

BEARBEITET:

Fügen Sie einen abhängigen Block in unterer Ebene hinzu (Ihre App) build.gradle:

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

oder fügen Sie unten nur hinzu, wenn Sie die Entwurfsunterstützung lib benötigen

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

verwenden Sie eine der oben genannten

13

Das liegt daran, dass checkSelfPermission() in API 23 hinzugefügt wurde. Sie müssen also bedingt wie folgt codieren:

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
}
3
camelCaseCoder

Überprüfen Sie die Geräte-SDK, bevor Sie die Anforderungserlaubnis aufrufen

 if(Build.VERSION.SDK_INT==Build.VERSION_CODES.M)
{
//call the request permission here 
}
0
prasanthMurugan