У меня есть запрос, реализующий RuntimePermission
для Location
. Когда я попытался requestLocationUpdates
, я получил LintError
, предлагающий мне добавить PermissionCheck
для этой строки. Учитывая, что я реализовал разрешения во время выполнения. Так вот как это выглядит,
if (isNetworkEnabled() && networkListener != null) {
if (ActivityCompat.checkSelfPermission(context,
Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED &&
ActivityCompat.checkSelfPermission(context,
Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(activity, new String[]
{Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION}, REQUEST_LOCATION);
} else
mLocationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, networkListener);
}
И мой основной класс реализует обратный вызов onRequestPermissionsResult
. Это похоже,
switch (requestCode) {
case REQUEST_LOCATION:
if (grantResults.length == 2 && grantResults[0] == PackageManager.PERMISSION_GRANTED
&& grantResults[1] == PackageManager.PERMISSION_GRANTED) {
mLocationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, networkListener);
} else
Message.displayToast(context, "Without enabling permission, you can't access this feature");
break;
}
После предоставления разрешения я снова запрашиваю обновления местоположения. Но он снова показывает LintError
, чтобы добавить PermissionCheck
. Обратитесь к изображению ниже
Просто для пробы я checkSelfPermission
перед запросом requestLocationUpdate
внутри onRequestPermissionsResult
и ошибка исчезла. Как показано ниже.
if (ActivityCompat.checkSelfPermission(context, permissions[0]) == PackageManager.PERMISSION_GRANTED &&
ActivityCompat.checkSelfPermission(context, permissions[1]) == PackageManager.PERMISSION_GRANTED)
Итак, мой вопрос: нужно ли мне еще раз проверять разрешение, если пользователь предоставил разрешение? Поправьте меня если я ошибаюсь!
checkAndCallLocationUpdates
и вызвал бы ее изonRequestPermissionResult
- person Much Overflow   schedule 10.02.2016onRequestPermissionsResult
, поэтому я их удалил. Но это был вопрос, просто чтобы понять, почему это так. Если это так, я должен проверить это снова. Спасибо за ваш быстрый ответ. Ценить это - person Kavin Prabhu   schedule 10.02.2016