2015-10-17 53 views
0

我的应用程序工作在Android版本2.3.3没有任何问题,但是当我在Galaxy S5(4和更多)testdc它,它不起作用。logCat错误当我按下按钮

这里是logcat的错误输出:

10-17 04:18:10.265: W/dalvikvm(26757): threadid=1: thread exiting with uncaught exception (group=0x41a95c08) 
10-17 04:18:10.265: E/AndroidRuntime(26757): FATAL EXCEPTION: main 
10-17 04:18:10.265: E/AndroidRuntime(26757): Process: com.androidexample.httppostexample, PID: 26757 
10-17 04:18:10.265: E/AndroidRuntime(26757): android.os.NetworkOnMainThreadException 
10-17 04:18:10.265: E/AndroidRuntime(26757): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1166) 
10-17 04:18:10.265: E/AndroidRuntime(26757): at java.net.InetAddress.lookupHostByName(InetAddress.java:385) 
10-17 04:18:10.265: E/AndroidRuntime(26757): at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236) 
10-17 04:18:10.265: E/AndroidRuntime(26757): at java.net.InetAddress.getAllByName(InetAddress.java:214) 
10-17 04:18:10.265: E/AndroidRuntime(26757): at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:180) 
10-17 04:18:10.265: E/AndroidRuntime(26757): at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:167) 
10-17 04:18:10.265: E/AndroidRuntime(26757): at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:125) 
10-17 04:18:10.265: E/AndroidRuntime(26757): at org.apache.http.impl.client.DefaultRequestDirector.executeOriginal(DefaultRequestDirector.java:1227) 
10-17 04:18:10.265: E/AndroidRuntime(26757): at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:677) 
10-17 04:18:10.265: E/AndroidRuntime(26757): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555) 
10-17 04:18:10.265: E/AndroidRuntime(26757): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487) 
10-17 04:18:10.265: E/AndroidRuntime(26757): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465) 
10-17 04:18:10.265: E/AndroidRuntime(26757): at com.androidexample.httppostexample.HttpPostExample$2.onClick(HttpPostExample.java:157) 
10-17 04:18:10.265: E/AndroidRuntime(26757): at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:167) 
10-17 04:18:10.265: E/AndroidRuntime(26757): at android.os.Handler.dispatchMessage(Handler.java:102) 
10-17 04:18:10.265: E/AndroidRuntime(26757): at android.os.Looper.loop(Looper.java:136) 
10-17 04:18:10.265: E/AndroidRuntime(26757): at android.app.ActivityThread.main(ActivityThread.java:5586) 
10-17 04:18:10.265: E/AndroidRuntime(26757): at java.lang.reflect.Method.invokeNative(Native Method) 
10-17 04:18:10.265: E/AndroidRuntime(26757): at java.lang.reflect.Method.invoke(Method.java:515) 
10-17 04:18:10.265: E/AndroidRuntime(26757): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268) 
10-17 04:18:10.265: E/AndroidRuntime(26757): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084) 
10-17 04:18:10.265: E/AndroidRuntime(26757): at dalvik.system.NativeStart.main(Native Method) 

这是我AndroidManifest

谁能帮助我解决这个问题?

回答

0

好吧,马上看看错误就可以看到问题。您正在主线程上进行联网。这是不允许的,因为它会严重影响你的用户界面。现在有两种方法可以解决这个问题。

  1. 把你的网络请求在不同的线程,例如一个异步任务(评论,如果您需要帮助这样做)

  2. 关闭此功能。不推荐,但我想我至少会告诉你:

StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); 
StrictMode.setThreadPolicy(policy); 
+0

嗨大肠杆菌。你可以检查我的代码吗? –

+0

如果你正在实施糟糕的解决方案(这也是你不应该这样做的)。所有你需要做的就是把这两行放入onCreate函数并导入合适的库(Android Studio应该为你做) – Colin

-1

您正在尝试在主线程中运行网络。你有没有试过添加这个?

if (android.os.Build.VERSION.SDK_INT > 9) { 

    StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder(),permitAll().build(); 

    StrictMode.setThreadPolicy(policy); 

} 

这是一个完整的sample code一个链接,HTTP发布。

+0

请强调这是非常错误的做法,因为这是一个非常糟糕的做法。 – Colin

+0

嗨IsabelHM。我加了这段代码,现在我的问题已经解决了。谢谢 –

+0

@AlirezaGhasempour如果它可以帮助你解决问题,请选择它作为答案。谢谢。 http://meta.stackexchange.com/a/5235/255832 –