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 ..
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;
}
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)
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
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
}
Ü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
}