2015-10-17 72 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 –