Я пытаюсь реализовать разрешение времени выполнения для местоположения. Реализация выглядит следующим образом:Android 6.0 Разрешение на размещение
public class MyLocationManager implements android.location.LocationListener, ActivityCompat.OnRequestPermissionsResultCallback {
private static LocationManager m_locationManager;
private static final int REQUEST_COARSE_LOCATION = 999;
private static final int REQUEST_FINE_LOCATION = 998;
private String provider;
private Context mContext;
public void startListenLocation(Context context) {
this.mContext = context;
m_locationManager = (LocationManager) mContext.getSystemService(Context.LOCATION_SERVICE);
...
if (Build.VERSION.SDK_INT >= 23 && ((ContextCompat.checkSelfPermission(mContext, Manifest.permission.ACCESS_COARSE_LOCATION)) != PackageManager.PERMISSION_GRANTED)) {
ActivityCompat.requestPermissions((Activity) mContext, new String[]{Manifest.permission.ACCESS_COARSE_LOCATION}, REQUEST_COARSE_LOCATION) ;
} else {
Location location = m_locationManager.getLastKnownLocation(provider);
}
...
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
switch (requestCode) {
case REQUEST_COARSE_LOCATION: {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){
//compiler error on the following line
Location myLocation = m_locationManager.getLastKnownLocation(provider);
} else {
//Permission denied
}
return;
}
}
}
}
Я получаю синтаксическую ошибку, когда я звоню getLastKnownLocation()
в onRequestPermissionResult()
. Он говорит мне снова проверить разрешение, даже если я уже это сделал. Так может кто-нибудь сказать, что случилось с моей реализацией здесь