Я создаю приложение, которое отбирает GPS при запуске. Как вы, вероятно, знаете, разрешения запрашиваются во время выполнения с Android M и выше.
Итак, в моем случае я начинаю с проверки того, нужны ли разрешения, например:
private void permissionForAndroidM()
{
if (Build.VERSION.SDK_INT > 22) {
String[] allPermissionNeeded = {
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.CAMERA,
Manifest.permission.RECORD_AUDIO};
List<String> permissionNeeded = new ArrayList<>();
for (String permission : allPermissionNeeded)
if (checkSelfPermission(permission) != PackageManager.PERMISSION_GRANTED)
permissionNeeded.add(permission);
if (permissionNeeded.size() > 0) {
requestPermissions(permissionNeeded.toArray(new String[0]), 0);
}
}
}
, но Android продолжает работать с кодом и запрашивает данные GPS (= сбой, поскольку пользователь не принял запрос на разрешение).
Я нахожу много решений о ожидании ввода пользователем (например, используя ссылку DialogInterface.OnClickListener
, , но в этом случае он не может быть реализован, потому что я не создаю диалог).
Внизу, вопрос: как я могу ждать ответа пользователя из диалогового окна разрешения Android?