2013-03-28 5 views
1

Я получаю это исключение при запуске моего кода на эмуляторе (Android 4.0.3/API 15). При открытии потока он выдает исключение. Сообщение об ошибке - null.Android NetworkOnMainThreadException при вызове Url.OpenStream

try { 
    String adress  = "xxx"; 
    URL url    = new URL(adress); 
    InputSource source = new InputSource(url.openStream()); 

} catch (Exception e) { 
    (new TextView).setText("Error: "+e.getMessage()); 
} 

URL-адрес по-прежнему работает с эмулятором (в браузере).

Я очистил проект.

Также подключение к сети Интернет допускается:

<uses-permission android:name="android.permission.INTERNET" /> 

Исключение: android.os.NetworkOnMainThreadException

+0

вы ли попробовать с реальным адресом? – Caner

+0

Да, конечно: D –

+0

какое исключение? – Sajmon

ответ

4

Пожалуйста никогда запустить операцию сети на главном (UI) потока.

Главная нить используется для:

  • взаимодействовать с пользователем.
  • визуализировать компоненты пользовательского интерфейса.

любая длинная операция на нем может помешать вашему приложению закрыться сообщением ANR.

Взгляните на следующее:

вы можете легко использовать AsyncTask или ее Thread для выполнения сетевых операций.

Вот отличный учебник о потоках и фоновой работы в андроида: Link

+0

Спасибо, в этом была проблема. :) –

0

работает для меня:

Manifest.xml:

<uses-permission android:name="android.permission.INTERNET" /> 

.java:

private static boolean DEVELOPER_MODE = true; 
... 
protected void onCreate(Bundle savedInstanceState) { 

    if (DEVELOPER_MODE) { 
     StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder() 
       .detectDiskReads() 
       .detectDiskWrites() 
       .detectNetwork() // or .detectAll() for all detectable problems 
       .penaltyLog() 
       .build()); 
     StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder() 
       .detectLeakedSqlLiteObjects() 
       .detectLeakedClosableObjects() 
       .penaltyLog() 
       .penaltyDeath() 
       .build()); 
    } 
... 

надеюсь, что это поможет.

Смотри также: http://developer.android.com/reference/android/os/StrictMode.html

Смежные вопросы