在模拟器(Android 4.0.3 / API 15)上运行代码时出现此异常。打开流时会抛出异常。错误消息为null
。
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 :(得分:4)
请从不在主( UI )主题上运行网络操作。
主主题用于:
对其进行的任何长时间操作都可能会使用 ANR 消息关闭您的应用。
看看以下内容:
您可以轻松使用AsyncTask
或Thread
来执行网络操作。
这是关于android中的线程和后台工作的精彩教程:Link
答案 1 :(得分: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