Только что ответили до 5 минут ссылка
Используйте общий код для запроса разрешения, чтобы вы могли использовать его в любом месте вашего проекта, когда вам это нужно.
У вас есть2 способа
- Следуйте по правильному пути, чтобы получить разрешение.Я публикую свой фрагмент кода, скопируйте этот код в свой базовый класс активности.
- Или вы используете RxPermissions .Если вы новичок в Android.
Вот мой фрагмент кода.
String[] permissions = {Manifest.permission.ACCESS_FINE_LOCATION};
getBulkPermissions(permissions, new RequestPermissionAction() {
@Override
public void permissionDenied() {
// TODO: 5/27/2018 handle permission deny
}
@Override
public void permissionGranted() {
// TODO: 5/27/2018 you code do further operations
}
});
Может ли он быть проще?
Теперь вы положите этот код BaseКласс деятельности и использовать в любом месте, где вам нужно.Или укажите текущий класс, если он вам не нужен, в любом другом месте.
RequestPermissionAction onPermissionCallBack;
private final static int REQUEST_BULK_PERMISSION = 3006;
private boolean checkBulkPermissions(String[] permissions) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
for (String permission : permissions) {
if (checkSelfPermission(permission) != PackageManager.PERMISSION_GRANTED) {
return false;
}
}
return true;
} else {
return true;
}
}
public void getBulkPermissions(String[] permissions, RequestPermissionAction onPermissionCallBack) {
this.onPermissionCallBack = onPermissionCallBack;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (!checkBulkPermissions(permissions)) {
requestPermissions(permissions, REQUEST_BULK_PERMISSION);
return;
}
}
if (onPermissionCallBack != null)
onPermissionCallBack.permissionGranted();
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
if (onPermissionCallBack != null)
onPermissionCallBack.permissionGranted();
} else if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_DENIED) {
if (onPermissionCallBack != null)
onPermissionCallBack.permissionDenied();
}
}
public interface RequestPermissionAction {
void permissionDenied();
void permissionGranted();
}
Также проверьте, требуется ли вам разрешение ACCESS_COURSE_LOCATION
.