Я рекомендовал использовать ниже библиотеку разрешений времени выполнения Android
реализация 'com.nabinbhandari.android:permissions:3.8'
Сначала объявите свои разрешения в манифесте.
как
Пример кода: 1) Одно разрешение ()
Permissions.check(this, Manifest.permission.CALL_PHONE, null, new PermissionHandler() {
@Override
public void onGranted() {
// do your task.
}
});
2) Несколько разрешений:
String[] permissions = {Manifest.permission.CAMERA,
Manifest.permission.WRITE_EXTERNAL_STORAGE};
Permissions.check(this/*context*/, permissions, null/*rationale*/, null/*options*/,
new PermissionHandler() {
@Override
public void onGranted() {
// do your task.
}
});
3) Настроенные разрешениязапрос:
String[] permissions = {Manifest.permission.ACCESS_FINE_LOCATION};
String rationale = "Please provide location permission so that you can ...";
Permissions.Options options = new Permissions.Options()
.setRationaleDialogTitle("Info")
.setSettingsDialogTitle("Warning");
Permissions.check(this/*context*/, permissions, rationale, options, new
PermissionHandler() {
@Override
public void onGranted() {
// do your task.
}
@Override
public void onDenied(Context context, ArrayList<String> deniedPermissions) {
// permission denied, block the feature.
}
});
Проверьте эту библиотеку: @github https://github.com/nabinbhandari/Android-Permissions
или проверьте этот ответ для кода разрешения https://stackoverflow.com/a/55452495/10758304