HttpURLConnection не работает на Android 4.0 - PullRequest
4 голосов
/ 06 декабря 2011

Я использую этот код для извлечения журнала изменений из сети.

InputStream content = null;
           try {


               URL url = new URL("http://dreamhawk.blinkenshell.org/changelog.txt");
               HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
               urlConnection.setRequestMethod("GET");
               urlConnection.connect();

               content = urlConnection.getInputStream();


               BufferedReader r = new BufferedReader(new InputStreamReader(content));
               StringBuilder total = new StringBuilder();
               String line;
               String NL = System.getProperty("line.separator");
               try {
                   while ((line = r.readLine()) != null) {
                       total.append(line + NL);
                   }
               } catch (IOException e) {
                   // TODO Auto-generated catch block
                   e.printStackTrace();
               }

               String page = total.toString();

               Dialog dialog = new Dialog(Main.this);

               dialog.setContentView(R.layout.custom_dialog);
               dialog.setTitle(R.string.changelog);
               dialog.setCanceledOnTouchOutside(true);

               TextView text = (TextView) dialog.findViewById(R.id.text);
               text.setTextSize(13);
               text.setText(page);
               dialog.show();
           } catch (Exception e) {
               //handle the exception !
           }

Это работает на Android 2.3 и ниже ... Но после обновления ICS я ничего не получаю! Нет диалога, нет ответа, нет ничего! Помогите! : /

Ответы [ 2 ]

15 голосов
/ 06 декабря 2011

Я знаю, что в Android 3.0 сетевое соединение в основном потоке не разрешено.

StrictMode включается автоматически. Я уверен, что это то же самое для 4.0

Чтобы устранить эту проблему, вы должны выполнить сетевое соединение в отдельном потоке ... например, используя AsyncTask.


Прочтите этот пост в блоге на эту тему:

Почему сэндвич с мороженым ломает ваше приложение

0 голосов
/ 10 июня 2012

Ну, почему бы вам не использовать WebClient? (использование: https://gist.github.com/2906703), вам на самом деле не нужно путаться с политикой потоков StrictMode. Если Google считает важным изменить ее, я не согласен.

...