В общем есть у меня простая рисовалка. Можно рисовать простые фигуры на canvas, и сохранять полученный результат в галерею в папку Pictures. Вот именно с сохранением и возникают проблемы. На андроид 5 и ниже все работает хорошо, а вот начиная с 6 и выше сохранить картинку не получается, нет доступа к внутреннему хранилищу. Читал где что данная проблема связана с тем, что в андроид 6 изменилась модель разрешений для доступа к файловой системе. Но решения я так и не нашел. В манифесте прописано разрешение на запись в EXTERNAL STORAGE. При попытке сохранить картинку на андроиде выше 6 (Пробовал на реальном устройстве с андроид 7, и на эмуляторе с 6) в логах пишет permission denied.
Перед сохранением изображения Вам нужно проверить, разрешен ли приложению доступ к карте памяти на запись. Если доступ разрешен, то все ок, если нет – то необходимо запросить это разрешение у пользователя:
if (ContextCompat.checkSelfPermission(thisActivity, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
if (ActivityCompat.shouldShowRequestPermissionRationale(thisActivity, Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
// Здесь отображаете диалог с объяснением -- зачем
// Вашему приложению требуется данное разрешение.
// По кнопке "Ок" диалога запрашиваете разрешение.
} else {
ActivityCompat.requestPermissions(thisActivity, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, MY_PERMISSIONS_REQUEST_CODE);
}
}
Далее, в методе onRequestPermissionsResult(...) получаете решение пользователя:
@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
switch (requestCode) {
case MY_PERMISSIONS_REQUEST_CODE: {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// Пользователь разрешил доступ
// Сохраняете картинку на диск
} else {
// Пользователь запретил доступ
}
return;
}
}
}
Более подробную информацию можно найти в официальной документации.
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости