Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
КВА696
37 / 37 / 13
Регистрация: 20.04.2014
Сообщений: 662
Завершенные тесты: 2
#1

Разрешение на создание файла для разных версий ОС - Программирование Android

30.10.2016, 12:19. Просмотров 251. Ответов 7
Метки нет (Все метки)

Почему то не создаётся текстовый фаил в эмуляторе 4.4.2 не в каком каталоге ни не сд карте ни в памяти
I/System.out: Ошибка ---java.io.IOException: open failed: EACCES (Permission denied)

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
write("/storage/sdcard/Alarms/re.txt", "ntrc");
...
public void write(String fileName, String text) {
        //Определяем файл
        File file = new File(fileName);
 
        try
        {
            //проверяем, что если файл не существует то создаем его
            if(!file.exists())
            {
                file.createNewFile();
            }
 
            //PrintWriter обеспечит возможности записи в файл
            PrintWriter out = new PrintWriter(file.getAbsoluteFile());
 
            try
            {
                //Записываем текст у файл
                out.print(text);
            }
            finally
            {
                //После чего мы должны закрыть файл
                //Иначе файл не запишется
                out.close();
            }
        }
        catch(IOException e)
        {
            System.out.println("Ошибка ---"+e.toString());
        }
    }
больше ни чего не делал ни куда ни чего не добовлял

Добавлено через 8 минут
Нашел добавил в манифест <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
И заработало. Почему в уроках не пишут что ещё нужно чтобы все работало коректно? Есть ли что нить про манифест какие нить уроки узнать что да для чего.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.10.2016, 12:19
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Разрешение на создание файла для разных версий ОС (Программирование Android):

Google maps метод поиска фрагмента карт на разметке для разных версий Android
Столкнулся с такой проблемой. в андройде 6 работает один метод поиска...

Adobe Flash CS 5.5, ActionScript 3.0 - Создание кода для разных фреймов
Прошу прощения, но пользуюсь Adobe Flash CS 5.5 два дня. Есть два вопроса....

Host для разных версий CLR
Доброго времени суток, уважаемые форумчане! Имеется User Control,...

DEFINE-ы для разных версий Delphi (пользуйтесь!)
Сделал большой include-файл с define'ами, определяемыми в зависимости от версии...

Разные формулы для разных версий MS Office
Народ привет! Такая проблема, в вордовском файле my.doc есть формулы...

Тестирование через Visual Studio для разных версий Windows
Подскажите каким образом можно протестировать работоспособность приложения для...

7
shavuz
114 / 120 / 25
Регистрация: 29.01.2014
Сообщений: 596
30.10.2016, 13:07 #2
Лучший ответ Сообщение было отмечено КВА696 как решение

Решение

есть несколько видов пермишн, такие которые надо добавлять в манифест и такие которые идут "бесплатно", т.е. не надо отдельно их запрашивать, а есть такие которые вообще нельзя получить)
вот список :
https://developer.android.com/refere...ermission.html

до 6.0 жизнь в плане разрешений была легкой, после уже нужно отдельно запрашивать разрешения on the fly. т.е. ваши разрешения для сторадж в шестом андроиде рабоатать не будут.
1
КВА696
37 / 37 / 13
Регистрация: 20.04.2014
Сообщений: 662
Завершенные тесты: 2
30.10.2016, 14:27  [ТС] #3
Цитата Сообщение от shavuz Посмотреть сообщение
до 6.0 жизнь в плане разрешений была легкой, после уже нужно отдельно запрашивать разрешения on the fly. т.е. ваши разрешения для сторадж в шестом андроиде рабоатать не будут.
А если программа пишется для старой версии 4 или 5 она же все равно будет работать на после 6? или на новых версиях программа не запустится? на сколько по урокам я понял новые андроиды просто обязаны понимать старые написанные версии
0
shavuz
114 / 120 / 25
Регистрация: 29.01.2014
Сообщений: 596
30.10.2016, 15:20 #4
нет, на новых версиях нужно запрашивать разрешения не через манифест, а именно там где они нужны, например если вы собираетесь записать в файл только на 3-тьем экране , то только в нем нужно запрашивать нужное разрешение, пользователю будет показано диалоговое окно , хочет ли он дать разрешения или нет, так же нужно предусмотреть что программа будет делать если пользователь отказался, например если это джипиэс и пользователь отказался то не будет показана текущая локация , в вашем случае ничего не будет записано в файл. запрос будет только в первый раз. дальше андроид уже будет знать что есть разрешения.
Цитата Сообщение от КВА696 Посмотреть сообщение
А если программа пишется для старой версии 4 или 5 она же все равно будет работать на после 6?
- не будет. просто будет вылетать. в наше время нельзя игнорировать разрешения. обязательно нужно учесть 6+ версии андроида.
1
Alex_Fedor
42 / 42 / 5
Регистрация: 20.01.2015
Сообщений: 279
30.10.2016, 16:03 #5
Цитата Сообщение от shavuz Посмотреть сообщение
обязательно нужно учесть 6+ версии андроида.
Скажите, а вот приложения написанные еще на эклипсе до 6 версии, там вроде максимальная версия андроида нигде не указывалась. Минимальная, целевая, и на которой компилировать.
0
shavuz
114 / 120 / 25
Регистрация: 29.01.2014
Сообщений: 596
30.10.2016, 17:05 #6
я не очень помню эклипс, но по большему счету максимальная версия не нужна, это работает от минимальной и до конца. ничего страшного нет в запросе разрешений на 6+. это пару строчек в активити.
0
Alex_Fedor
42 / 42 / 5
Регистрация: 20.01.2015
Сообщений: 279
30.10.2016, 17:14 #7
Цитата Сообщение от shavuz Посмотреть сообщение
это пару строчек в активити.
Это понятно, когда новый проект делаем будем учитывать. А вот если уже апк файл и лежит на каком нибудь плее. И плз если работает на АС скажите характеристики своего компа. Озадачился подбором железа под АС.
0
shavuz
114 / 120 / 25
Регистрация: 29.01.2014
Сообщений: 596
30.10.2016, 17:22 #8
Дома работаю с i5, 8gb ram, 128 ssd - этого вполне достаточно.
на работе i7, 16gb ram, 256 ssd
если лежит на каком нибудь плее, что мешает сделать апдейт,почините и залейте заново, сейчас уже много устройств 6+ , так поучается что теряете пользователей только потому что не поддерживаете новые устройства???
0
30.10.2016, 17:22
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.10.2016, 17:22
Привет! Вот еще темы с решениями:

Acronis True Image можно ли использовать для разных версий Windows
Здравствуйте. Скажите пожалуйста если я записал образ Acronis True Image на...

Конфликты 1С разных версий
День добрый! Есть сервер, на котором установлена Платформа 1С:Предприятие...

Соединение разных версий одной БД
Здравствуйте! Имеется следующая проблема. В базе данных, работающей на SQL...

Загрузка разных версий Windows
Помогите пожалуйста:) На ПК две системы: Вин 7 и Вин ХР. Выбираю в загрузчике...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru