Ich muss die Berechtigung in Fragment zur Laufzeit überprüfen, um die Position zu erhalten. Hier ist eine Funktion zum Überprüfen der Berechtigung.Laufzeitberechtigung (requestPermissions) funktioniert nicht
public void weather() {
mFusedLocationClient = LocationServices.getFusedLocationProviderClient(getActivity());
try {
if (checkSelfPermission(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
requestPermissions(new String[]{Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION}, 123);
return;
}
mFusedLocationClient.getLastLocation()
.addOnSuccessListener(getActivity(), new OnSuccessListener<Location>() {
@Override
public void onSuccess(Location location) {
if (location != null) {
latitude = location.getLatitude();
longitude = location.getLongitude();
syncData(latitude, longitude);
}
}
});
return;
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == 123) {
weather();
}
}
Das Problem ist, dass mein Code in diesem wie eine Schleife stecken. Es gewährt keine Berechtigungen, und jedes Mal, wenn dies der Fall ist, wird true und mein Code wie eine Schleife zwischen der Überschreibungsberechtigung und der if-Anweisung zurückgegeben. Und eine Sache mehr brauchen wir diese zwei permission im Manifest auch?
if (checkSelfPermission(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
requestPermissions(new String[]{Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION}, 123);
return;
}
Ich bin Ganz sicher nicht, können Sie versuchen, indem Sie ActivityCompat als Präfix wie Acti hinzufügen vityCompat.checkSelfPermission und ActivityCompat.requestPermissions und versuchen? – Raghavendra
Es funktioniert nicht ... auf Android-Versionen niedriger als Marshmallow! –
@ Raghavendra danke, aber ich arbeite in einem Fragment, indem ich Präfix es zuerst an die Elternklasse gehen.Ich denke, wir müssen das nicht tun.am richtig? –