Здравствуйте!
Я столкнулся со следующей проблемой: мое приложение должно запрашивать 2 разрешение (CAMERA и WRITE_EXTERNAL_STORAGE). Запрашиваю эти разрешения сразу при старте приложения, проверку на наличие разрешений поместил в метод onCreate(). Проблема в том, что приложение запрашивает только разрешение на использование камеры (CAMERA) и игнорирует запрос на запись в external storage (WRITE_EXTERNAL_STORAGE).
Буду благодарен за любую помощь.
Объявление констант для разрешения:
private static final int PERMISSION_REQUEST_CAMERA = 0;
private static final int PERMISSION_REQUEST_EXTERNAL_STORAGE = 1;
Вызов метода проверки разрешений:
@Override
protected void onCreate(Bundle savedInstanceState) {
//Инициализация объектов пользовательского интерфейса
checkApplicationPermissions();
}
Метод проверки наличия разрешений:
public void checkApplicationPermissions() {
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED)
requestPermission(PERMISSION_REQUEST_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE);
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED)
requestPermission(PERMISSION_REQUEST_CAMERA, Manifest.permission.CAMERA);
}
Метод запроса на разрешение:
/**
* Запрос на разрешение
* @param PERMISSION_CODE Код разрешения
* @param permission Разрешение
*/
private void requestPermission(final int PERMISSION_CODE, String permission) {
if (ActivityCompat.shouldShowRequestPermissionRationale(this, permission)) {
ActivityCompat.requestPermissions(MainActivity.this,
new String[]{permission},
PERMISSION_CODE);
} else {
ActivityCompat.requestPermissions(this, new String[]{permission},
PERMISSION_CODE);
}
}
Метод обработки запроса на разрешение:
/**
* Обработка ответа на запрос разрешения
* @param requestCode Код разрешения
* @param permissions Разрешение
* @param grantResults Ответ
*/
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
if (grantResults.length == 1 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
onStart();
} else {
Toast.makeText(getApplicationContext(), "Разрешение отклонено.", Toast.LENGTH_SHORT).show();
tvErrorPermission.setText(getString(R.string.error_permission_camera));
}
}
Проблема решилась удалением приложения с телефона (тестировал на Nexus 5) и повторным запуском из Android Studio.
PS: Программирование - МАГИЯ!!!
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Вечерок всем! Пытаюсь подключиться к базе данных MYSQL при помощи JDBC драйвераИспользую Intelej Idea - все работает, копипастю ТОТ ЖЕ КОД в Android Studio...
Есть 2 массива, в каждом из которых n элементовВ первом значение некой переменной w, во втором значение функции, зависящей от этой переменной