Форум программистов, компьютерный форум CyberForum.ru

Runtime permissions и FileNotFound - Android

Восстановить пароль Регистрация
 
Bean87
0 / 0 / 0
Регистрация: 25.02.2016
Сообщений: 5
29.03.2016, 08:30     Runtime permissions и FileNotFound #1
Доброе утро! Подскажите, пожалуйста, с такой проблемой - сохраняю нарисованное изображение в галерею таким образом:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
saveBtn.setOnClickListener(new View.OnClickListener(){
drawView.setDrawingCacheEnabled(true);
                    //attempt to save
                    String imgSaved = MediaStore.Images.Media.insertImage(
                            getContentResolver(), drawView.getDrawingCache(),
                            UUID.randomUUID().toString()+".png", "drawing");
                    //feedback
                    if(imgSaved!=null){
                        Toast savedToast = Toast.makeText(getApplicationContext(),
                                "Drawing saved to Gallery!", Toast.LENGTH_SHORT);
                        savedToast.show();
                    }
                    else{
                        Toast unsavedToast = Toast.makeText(getApplicationContext(),
                                "Oops! Image could not be saved.", Toast.LENGTH_SHORT);
                        unsavedToast.show();
                    }
                    drawView.destroyDrawingCache();
                }
}
На Андроид 4.х всё работает прекрасно. Однако на Андроид 6.0 при попытке сохранения изображения получаю ошибку:

Java
1
E/MediaStore: java.io.FileNotFoundException: No such file or directory
Это как-то связано с runtime permissions? На оф. сайте написано, что начиная с 6.0 версии permissions нужно предъявлять во время запуска, но никак не могу понять, как правильно их предъявить. И почему FileNotFound?

Добавлено через 1 час 33 минуты
Вопрос снят. Добавил permission check:

Java
1
2
3
4
5
6
7
8
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                        if (!Settings.System.canWrite(MainActivity.this)) {
                            requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE,
                                    Manifest.permission.READ_EXTERNAL_STORAGE}, 2909);
 
                            //save drawing
                            saveDrawing();
                    }
По поводу FileNotFound: в только что созданном эмуляторе нет папки DCIM, поэтому я включил камеру и сделал снимок, благодаря чему создалась папка. Понял, что это можно сделать программно, но пока примерно представляю, как это сделать.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.03.2016, 08:30     Runtime permissions и FileNotFound
Посмотрите здесь:

C# FileNotFound при открытом saveFileDialog
C# .NET 4.x Registry Permissions
Windows Server Проблема с permissions
Добавить view runTime Android
PHP File Permissions
Android Переопределение метода в Runtime
Android Как пользоваться Runtime.getRuntime().exec?
Windows Phone Windows Runtime и Phone Runtime App: событие Suspend
SQL Server Permissions
Android Android permissions
Софт Ошибка Microsoft Visual C++ Runtime Library - Runtime Error
Android Как поменять цвет нажатой кнопки в runtime?

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 18:03. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru