Auf Ihrer Aktivität:
private static final int REQUEST_FINE_LOCATION=0
...
loadPermissions(Manifest.permission.ACCESS_FINE_LOCATION,REQUEST_FINE_LOCATION);
Umsetzung:
private void loadPermissions(String perm,int requestCode) {
if (ContextCompat.checkSelfPermission(this, perm) != PackageManager.PERMISSION_GRANTED) {
if (!ActivityCompat.shouldShowRequestPermissionRationale(this, perm)) {
ActivityCompat.requestPermissions(this, new String[]{perm},requestCode);
}
}
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
switch (requestCode) {
case REQUEST_FINE_LOCATION: {
// If request is cancelled, the result arrays are empty.
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// granted
}
else{
// no granted
}
return;
}
}
}
In der 'loadPermissions()' -Funktion, sollte es nicht eine 'else'-Klausel geben (wenn 'checkSelfPermission()' '' PackageManager.PERMISSION_GRANTED' zurückgibt, wo Sie Ihre Erlaubnis-weise Zeug tun? 'OnRequestPermissionsResult()' wird aufgerufen nur nach dem Aufruf von 'requestPermissions()', also in dem Fall, dass ich beschrieben habe, wird nichts passieren. –
Ist nur die Hauptidee ein Beispiel, vielleicht hast du in einigen Situationen "else" Implementierung geschrieben. – Hpsaturn