Android-Laufzeitberechtigungen in Android 6.0 (API-Stufe 23) - Best Practices
Android-Laufzeitberechtigungen in Android 6.0 (API-Stufe 23) - Best Practices
Ich habe meiner App mit @ erfolgreich Berechtigungen für die Laufzeit hinzugefüg
Diese Erfrischungen
http: //developer.android.com/training/permissions/requesting.htm
un
https: //www.learn2crack.com/2015/10/android-marshmallow-permissions.htm
dies ist der Code, den ich verwendet habe
private static final int PERMISSION_REQUEST_CODE = 1;
switch (id){
case R.id.check_permission:
if (checkPermission()) {
Snackbar.make(view,"Permission already granted.",Snackbar.LENGTH_LONG).show();
} else {
Snackbar.make(view,"Please request permission.",Snackbar.LENGTH_LONG).show();
}
break;
case R.id.request_permission:
if (!checkPermission()) {
requestPermission();
} else {
Snackbar.make(view,"Permission already granted.",Snackbar.LENGTH_LONG).show();
}
break;
}
private boolean checkPermission(){
int result = ContextCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION);
if (result == PackageManager.PERMISSION_GRANTED){
return true;
} else {
return false;
}
}
private void requestPermission(){
if (ActivityCompat.shouldShowRequestPermissionRationale(activity,Manifest.permission.ACCESS_FINE_LOCATION)){
Toast.makeText(context,"GPS permission allows us to access location data. Please allow in App Settings for additional functionality.",Toast.LENGTH_LONG).show();
} else {
ActivityCompat.requestPermissions(activity,new String[]{Manifest.permission.ACCESS_FINE_LOCATION},PERMISSION_REQUEST_CODE);
}
}
@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
switch (requestCode) {
case PERMISSION_REQUEST_CODE:
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Snackbar.make(view,"Permission Granted, Now you can access location data.",Snackbar.LENGTH_LONG).show();
} else {
Snackbar.make(view,"Permission Denied, You cannot access location data.",Snackbar.LENGTH_LONG).show();
}
break;
}
}
Die Best Practices von Android
http: //developer.android.com/training/permissions/best-practices.htm
state das folgende
1) Erwägen Sie die Verwendung einer Absicht
2) Fragen Sie nur nach den Berechtigungen, die Sie benötigen
3) Überfordert den Benutzer nicht
4) Erklären Sie, warum Sie Berechtigungen benötigen
Nun fragen wir nach den oben genannten Berechtigungen nur bei Bedarf und nur nach der spezifischen Berechtigung, die für diese Aktivität erforderlich ist.
JedochDiese Best Practices geben nicht die Häufigkeit der Erlaubnis an, dh wie oft diese Erlaubnis gezeigt werden muss oder kann sie nur einmal gezeigt werden
Jetzt ist das Problem, vor dem ich stehe,
1) Jedes Mal, wenn die Aktivität in der App aufgerufen wird, werden die Berechtigungen angezeigt. Dies geschieht für die jeweilige Sitzung der App-Nutzung (wenn dieselbe Aktivität in derselben Sitzung aufgerufen wird, wird die Berechtigung nicht aufgerufen, sobald sie erteilt wurde
2) Können erteilte Berechtigungen gespeichert werden (dh die statische Variable, die die erste Prüfung in gemeinsamen Einstellungen durchführt, damit Berechtigungen nicht immer wieder aufgerufen werden)
3) Müssen wir jedes Mal, wenn die App verwendet wird, den Berechtigungszugriff beantragen?
4) Wenn gemeinsame Einstellungen nicht erlaubt sind, wie wir diese Berechtigungen eleganter verwalten können