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

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Alexvsalex
7 / 7 / 4
Регистрация: 22.04.2015
Сообщений: 83
#1

Запись картинок и файлов во внутреннюю память - Программирование Android

08.11.2015, 16:25. Просмотров 523. Ответов 7

Здравствуйте!
Загружаю информацию через Jsoup в AsyncTask. Думаю сохранять её в файлы(что то вроде кэша).
Уже имел дело с этим, но как ни стараюсь постоянно выходит ошибка:
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
11-08 13:19:34.692      836-854/com.nothing.myapplication.app W/ApplicationContext﹕ Unable to create files directory /data/data/com.nothing.myapplication.app/files
11-08 13:19:34.692      836-854/com.nothing.myapplication.app W/dalvikvm﹕ threadid=12: thread exiting with uncaught exception (group=0x409bf1f8)
11-08 13:19:34.692      836-854/com.nothing.myapplication.app E/AndroidRuntime﹕ FATAL EXCEPTION: AsyncTask #1
    java.lang.RuntimeException: An error occured while executing doInBackground()
            at android.os.AsyncTask$3.done(AsyncTask.java:278)
            at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
            at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
            at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
            at java.util.concurrent.FutureTask.run(FutureTask.java:137)
            at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:208)
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
            at java.lang.Thread.run(Thread.java:856)
     Caused by: java.lang.NullPointerException
            at android.app.ContextImpl.openFileOutput(ContextImpl.java:626)
            at android.content.ContextWrapper.openFileOutput(ContextWrapper.java:165)
            at com.nothing.myapplication.app.MainActivity$addToListGames.doInBackground(MainActivity.java:155)
            at com.nothing.myapplication.app.MainActivity$addToListGames.doInBackground(MainActivity.java:139)
            at android.os.AsyncTask$2.call(AsyncTask.java:264)
            at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
************at java.util.concurrent.FutureTask.run(FutureTask.java:137)
************at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:208)
************at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
************at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
************at java.lang.Thread.run(Thread.java:856)
Код загрузки:
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
private class addToListGames extends AsyncTask<String, Integer, Void> {
        ProgressBar progress;
        BufferedWriter bw;
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            this.progress = (ProgressBar) findViewById(R.id.progress);
        }
 
        @Override
        protected Void doInBackground(String... arg) {
            try {
                publishProgress(0);
                String r = arg[0];
                s.add(r);
                OutputStreamWriter f;
                OutputStream k = context.openFileOutput(r, MODE_PRIVATE);//155 строка
                f = new OutputStreamWriter(k);
 
                bw = new BufferedWriter(f);
                Document doc = Jsoup.connect("http://www.stratege.ru/xbox360/games/" + r + "/").get();
 
                FileOutputStream fOut = new FileOutputStream(new File(r + "_icon"));
 
                Bitmap bit = BitmapFactory.decodeStream((new URL(("http://www.stratege.ru" + doc.select("img[id=gspfid_boxart]").attr("src")).replace("img", "icon"))).openConnection().getInputStream());
                icon.add(bit);
                bit.compress(Bitmap.CompressFormat.PNG, 100, fOut);
                fOut.flush();
                fOut.close();
 
bw.write("Какой то текст");
                publishProgress(100);
 
                writeNewGame();
 
                bw.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return null;
        }
 
        @Override
        protected void onProgressUpdate(Integer... progressValues) {
            super.onProgressUpdate(progressValues);
            this.progress.setProgress(progressValues[0]);
        }
 
        @Override
        protected void onPostExecute(Void result) {
            super.onPostExecute(result);
            Toast.makeText(MainActivity.this, "Загрузка закончена!",
                    Toast.LENGTH_LONG).show();
            ms.notifyDataSetChanged();
        }
    }
В коде указал строку, на которую указывает ошибка.
Переменная r точно не равна null, пробовал выводить её в Log. context тоже не может быть равен null, т.к. в onCreate есть строка:
Java
1
context = this;
Помогите разобраться с ошибкой
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.11.2015, 16:25
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Запись картинок и файлов во внутреннюю память (Программирование Android):

При загрузке большого количества картинок библиотекой Picasso заканчивается память - Программирование Android
В общем делаю приложение, которое должно выводить посты пользователя. В этих постах есть картинки, все они должны качаться с интернета. Я...

Запись в память телефона из сервиса - Программирование Android
Нужно через сервис сохранить файл в память телефона в директорию. Делаю так: if...

Хранение HTML, файлов, картинок, стилей в ресурсах приложения - Программирование Android
Есть некий контент который нужно отобразить в WebView, как можно папку с html и его файлами запехнуть в ресурсы проги, и потом считывать их...

Внутренняя память 0.00 МБ. Не видит внутреннюю память - Android
Здраствуйте, девайс Prestigio Multipad PMP5670c_DUO. Я пытался найти способ решения проблемы, или найти прошивку, но толком ничего не...

Как почистить внутреннюю память? - Android
Доброе время суток ! Суть проблемы: Хотел установить приложение из маркета. Было на телефоне свободно 700Мб, Началась установка...

Как производить сохранение и чтение массива во внутреннюю память? - Arduino
Основная задача это в автономном режиме создать какой-то цикл, обозвать его именем и сохранить во внутреннюю память, чтобы потом можно было...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Mikalai
256 / 232 / 93
Регистрация: 11.01.2015
Сообщений: 655
08.11.2015, 16:37 #2
Alexvsalex, а ты проверь контекст на null. Вариантов у тебя 2. И если это не переменная r, то вывод напрашивается.
Методы получения контекста:
....
MainActivity.this (внутри вложенного класса или метода получить ссылку на объект MainActivity)
....
1
Pablito
2494 / 1939 / 605
Регистрация: 12.05.2014
Сообщений: 6,798
Завершенные тесты: 1
08.11.2015, 16:49 #3
вангую что это запускается на эмуляторе с древней версией андроида
1
Alexvsalex
7 / 7 / 4
Регистрация: 22.04.2015
Сообщений: 83
08.11.2015, 18:12  [ТС] #4
Проверил context не равен null с помощью команды:
Java
1
if (context!=null) Log.d("1",context.toString());
И получил в логе строку:
Java
1
11-08 15:10:00.384      643-662/com.nothing.myapplication.app D/1﹕ com.nothing.myapplication.app.MainActivity@41050fa0
Да, проверяю на эмуляторе с 4 андроидом. Проверял бы на телефоне, но на нем 4.4.2 и при попытке установки приложения получаю ошибки:
Код
Installing com.nothing.myapplication.app
DEVICE SHELL COMMAND: pm install -r "/data/local/tmp/com.nothing.myapplication.app"
WARNING: linker: libvc1dec_sa.ca7.so has text relocations. This is wasting memory and is a security risk. Please fix.
WARNING: linker: libvc1dec_sa.ca7.so has text relocations. This is wasting memory and is a security risk. Please fix.
pkg: /data/local/tmp/com.nothing.myapplication.app
Failure [INSTALL_FAILED_INVALID_APK]
0
Pablito
2494 / 1939 / 605
Регистрация: 12.05.2014
Сообщений: 6,798
Завершенные тесты: 1
08.11.2015, 18:55 #5
Цитата Сообщение от Alexvsalex Посмотреть сообщение
Unable to create files directory /data/data/com.nothing.myapplication.app/files
а чему равна r ?
так и задумано, в этой папке должен создаваться файл?
1
Alexvsalex
7 / 7 / 4
Регистрация: 22.04.2015
Сообщений: 83
08.11.2015, 19:26  [ТС] #6
Да, в той папке. r гарантированно не равно null, т.к. берется из editText.
Сейчас все таки получилось проверить на чужом телефоне - работает нормально.
Но как заставить работать приложение на эмуляторе? Какую версию андроид нужно?
0
bastrakov
91 / 91 / 14
Регистрация: 10.10.2015
Сообщений: 307
Записей в блоге: 1
09.11.2015, 10:08 #7
пересоздайте устройство в эмуляторе. и не жалейте для него памяти. :-)
и sd-карту не забудьте при создании.
1
Alexvsalex
7 / 7 / 4
Регистрация: 22.04.2015
Сообщений: 83
09.11.2015, 15:31  [ТС] #8
Спасибо всем большое.
Создал новое устройство с андроидом 5.1 и 1 Гб оперативной памяти, приложение работает также как на настоящем телефоне - ничего не вылетает
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.11.2015, 15:31
Привет! Вот еще темы с ответами:

Планшет Samsung Galaxy Tab A(2016) mod:SM-T285 увеличить внутреннюю память - Планшеты, ebook
Имеем Планшет Samsung Galaxy Tab A(2016) mod:SM-T285 с внутренней памятью 8 Гб. Оказалось это очень мало. Приложения, которые...

Сохранить фото из bitmap в формате jpg на sdcard или внутреннюю память телефона Андроид - Delphi FireMonkey
Здравствуйте! Может кто сталкивался с таким вопросом. Есть TImage в него с камеры грузится фото. Потом мне надо сохранить его под нужным...

Запись\чтение картинок из БД - C++ Builder БД
Прошу рассказать, по человечески, как можно реализовать запись\вывод в\из БД в виде блоб поля... Поиск по форуму не дал всех ответов. БД...

Запись картинок в базу postgresql - PostgreSQL
Пытаюсь из 1с записать картинки в постгре После гугления пришел к такому коду image = Новый COMОбъект(&quot;ADODB.Stream&quot;); image.type =...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
09.11.2015, 15:31
Ответ Создать тему
Опции темы

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