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

NetworkOnMainThreadException при сохранении картинки в битовый массив - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Бредни с классами http://www.cyberforum.ru/android-dev/thread1437003.html
Доброй ночи. Уже битый час пытаюсь разобраться с простеньким кодом который работает совершенно не так, как мне хочется... Собственно имеется класс для работы с почтой: package com.android.core; /** * Created by NightShock on 25.01.2015. */ import java.io.File;
Программирование Android Ошибка при открытии приложения на телефоне Суть приложения. Показывает на карте месторасположение и выводит в TextView координаты и время. Работаю на Android Studio ( пытаюсь:) ). и подскажите как из LogCat вытянуть ошибку. Он постоянно обновляется. MapsActivity package com.example.gany.myapplication; import java.util.Date; import android.location.Location; import android.location.LocationManager; import... http://www.cyberforum.ru/android-dev/thread1436949.html
Программирование Android Органайзер обновляется только после перезапуска приложения
Вот пытаюсь сделать свой органайзер, но что то не идет, все повисло на обновлении списка. Обновляется только после перезапуска приложения. Подскажите как сделать что бы лист постоянно обновлялся и выводил верные данные. Сильно за код не ругайте, только учусь) Заранее спасибо) Выложу часто кода которую уже сумел сделать. файл MainActivity
Сравнение координат объектов Программирование Android
Здравствуйте. Решил создать простенькую игру, привязал движение ImageView к акселерометру. Пытаюсь сравнить координаты движущегося Imageview и еще одного - статичного (чтобы обработать столкновение). Не срабатывают условия на приравнивания координат, например, if(ImageView1.getY()==ImageView2.get(Y)) По оси Х то же самое. Не долго думая поменял условие так, чтобы координаты ImageView1...
Программирование Android Открытие PDF файла в другом приложении http://www.cyberforum.ru/android-dev/thread1436860.html
Здравствуйте. Имеется путь к PDF - файлу. Необходимо что бы при клике этот файл открывался в другом установленном пользовательском приложении. Как такое реализовать?
Программирование Android CountDownTimer - "в приложении произошла ошибка" в приложении работает обратный счетчик реализованный через CountDownTimer. время от времени вылезает ошибка "в приложении .. произошла ошибка". ошибка точно из-за счетчика, поскольку вылезала когда в приложении работал только счетчик. вот собственно счетчик: new CountDownTimer(206000, 1000) { TextView mTextField = (TextView)findViewById(R.id.textView); подробнее

Показать сообщение отдельно
edogaafx
0 / 0 / 0
Регистрация: 04.03.2014
Сообщений: 42

NetworkOnMainThreadException при сохранении картинки в битовый массив - Программирование Android

04.05.2015, 10:37. Просмотров 237. Ответов 2
Метки (Все метки)

Беру данные с веб сайта как JSON и созраняю в базу данных sqlite.
Собираюсь созранять картинку как byte[], но при методе, который из URL на картинку преобразовывает её в массив битов, получаю NetworkOnMainThreadException.

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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
public class JsonTask extends AsyncTask<String, Void, String> {
 
    private static final String TAG = "JsonTask";
    private static final String site = "название сайта";
    private static final String url = site + "/json.php";
    Context context;
    String jsonResult;
    DatabaseHelper dbHelper;
    ArrayList<Event> eventList;
    Event event;
 
    public static void accessWebService() {
        JsonTask task = new JsonTask();
        // passes values for the urls string array
        task.execute(new String[] { url });
    }
 
    public void loadJSON() {
 
        eventList = new ArrayList<Event>();
        Log.i(TAG, "loadJSON");      
        try {
            JSONObject jsonResponse = new JSONObject(jsonResult);
            JSONArray jsonMainNode = jsonResponse.optJSONArray("event");
                for (int i = 0; i < jsonMainNode.length(); i++) {
                JSONObject jsonChildNode = jsonMainNode.getJSONObject(i);
                // Беру мне нужные элементы с джейсона            
                String event_image = jsonChildNode.optString("image");
                String imgurl = site + event_image;
                System.out.println("loadJSON imgurl: " + imgurl);
 
                event = new Event();
 
                event.image = getPicture(imgurl);
                System.out.println("getPicture(imgurl): " + getPicture(imgurl));
                System.out.println("event.image: " + event.image);
                // System.out.println говорят, что здесь получаю null 
                // Подаю в объект
                eventList.add(event);
 
            }
 
        } catch (JSONException e) {
            Toast.makeText(context, R.string.error + e.toString(),
                    Toast.LENGTH_SHORT).show();
        }
 
    }
 
    public void loadDatabase() {
        Log.i(TAG, "loadDatabase");
        for (int i = 0; i < eventList.size(); i++) {
 
            dbHelper = new DatabaseHelper(context);
 
            dbHelper.loadEvent(new Event(
                 //Записываем всё в базу данных
            ));
        }
    }
 
    private StringBuilder inputStreamToString(InputStream is) {
        String rLine = "";
        StringBuilder answer = new StringBuilder();
        BufferedReader rd = new BufferedReader(new InputStreamReader(is));
 
        try {
            while ((rLine = rd.readLine()) != null) {
                answer.append(rLine);
            }
        }
 
        catch (IOException e) {
            Toast.makeText(context,
                    R.string.error + e.toString(), Toast.LENGTH_LONG).show();
        }
        return answer;
    }
    
    // Метод где случается данная проблема
    public byte[] getPicture(String url){
        Log.i(TAG, "getPicture");
        try {
            URL imageUrl = new URL(url);
            URLConnection ucon = imageUrl.openConnection();
 
            InputStream is = ucon.getInputStream();
            BufferedInputStream bis = new BufferedInputStream(is);
 
            ByteArrayBuffer baf = new ByteArrayBuffer(500);
            int current = 0;
            while ((current = bis.read()) != -1) {
                    baf.append((byte) current);
            }
            return baf.toByteArray();
        } catch (Exception e) {
            Log.d("ImageManager", "Error: " + e.toString());
        }
        return null;
    }
 
    @Override
    protected String doInBackground(String... params) {
        Log.i(TAG, "doInBackground");
        HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new HttpPost(params[0]);
        try {
            HttpResponse response = httpclient.execute(httppost);
            jsonResult = inputStreamToString(
                    response.getEntity().getContent()).toString();
        }
 
        catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }
    
   @Override
    protected void onPostExecute(String result) {
        Log.i(TAG, "onPostExecute");
        loadJSON();
        loadDatabase();
    }
 
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru