/ / Wie behandelt man die ACCESS_FINE_LOCATION-Berechtigung für Android 6.0? [Duplikat] - Android, Standort

Wie behandelt man die ACCESS_FINE_LOCATION-Berechtigung für Android 6.0? [Duplikat] - Android, Standort

Wenn ich meinen LocationService auf einem Gerät mit Android Version 6.0 oder höher starte, bekomme ich folgenden Fehler:

java.lang.SecurityException: Der Client muss die Berechtigung ACCESS_FINE_LOCATION besitzen, um PRIORITY_HIGH_ACCURACY-Speicherorte anzufordern. bei android.os.Parcel.readException (Parcel.java:1620) bei android.os.Parcel.readException (Parcel.java:1573) bei com.google.android.gms.internal.ni $ a $ a.a (Unbekannte Quelle) unter com.google.android.gms.internal.nj.a (Unbekannte Quelle) unter com.google.android.gms.internal.nk.a (Unbekannte Quelle) bei com.google.android.gms.internal.nf $ 1.a (Unbekannte Quelle) bei com.google.android.gms.internal.nf $ 1.a (Unbekannte Quelle) unter com.google.android.gms.common.api.BaseImplementation $ a.b (Unbekannte Quelle) unter com.google.android.gms.common.api.c.a (unbekannte Quelle) unter com.google.android.gms.common.api.c.b (Unbekannte Quelle) unter com.google.android.gms.internal.nf.requestLocationUpdates (Unbekannte Quelle) unter com.google.android.gms.internal.jm.f (Unbekannte Quelle) unter com.google.android.gms.common.api.c.gJ (Unbekannte Quelle) unter com.google.android.gms.common.api.c.d (Unbekannte Quelle) bei com.google.android.gms.common.api.c $ 2.onConnected (unbekannte Quelle) unter com.google.android.gms.internal.jm.f (Unbekannte Quelle) unter com.google.android.gms.internal.jm.dU (unbekannte Quelle) unter com.google.android.gms.internal.jl $ h.b (Unbekannte Quelle) at com.google.android.gms.internal.jl $ h.g (Unbekannte Quelle) unter com.google.android.gms.internal.jl $ b.hy (Unbekannte Quelle) at com.google.android.gms.internal.jl $ a.handleMessage (Unbekannte Quelle) bei android.os.Handler.dispatchMessage (Handler.java:102) bei android.os.Looper.loop (Looper.java:148) bei android.app.ActivityThread.main (ActivityThread.java:5466) bei java.lang.reflect.Method.invoke (native Methode) bei com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:726) bei com.android.internal.os.ZygoteInit.main (ZygoteInit.java:616)

Ich habe die erforderlichen Vorrechte in der Manifest.xml! Dann habe ich gelesen, dass die Vorsätze auf Android 6.0 anders gehandhabt werden, aber wie kann ich den Nutzer bitten, die erforderlichen Vorbehalte für die App zu akzeptieren oder festzulegen?

Irgendwelche Vorschläge?

Antworten:

2 für die Antwort № 1

Überprüfen Sie zunächst, ob die Berechtigung bereits erteilt wurde

if (ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
requestPermissions(new String[]{Manifest.permission.CAMERA}, 108);
return;
} else {
//continueYourTask
}

Wenn es nicht gewährt wird, zeigt es automatisch einen Dialog an, um den Zugriff zu gewähren und wenn er gewährt wird, wird ein Rückruf als erhalten

@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
switch (requestCode) {
case 108:
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
//continueYourTask
}
break;
default:
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
}