2012-06-06 32 views
2

我想從我的應用程序發佈在用戶牆上而不顯示提要對話框。我有一個EditText getmessageButton with onClick()=postToWall的活動。我下面這個問題: Android Facebook Post On Wall Without Dialog Warnings發佈到沒有提供「NetworkOnMainThreadexception」的提要對話框| Android

這裏是我的代碼:

public void postToWall(View v){ 
     String message = getmessage.getText().toString(); 
     postMessage(message);  
    } 

    public void postMessage(String message){ 
     Log.d("test", "testing post to wall"); 
     try{ 
      String response; 
      Bundle parameters = new Bundle(); 
      parameters.putString("message", message);   
      response = facebook.request("me/feed", parameters, "POST"); 

      Log.d("test", "got response "+response); 

      if(response == null || response.equals("")){ 
       Log.v("Error", "Blank"); 
      } 
     } 
     catch(Exception e){ 
      e.printStackTrace(); 
     } 
    } 

下面是日誌:

06-06 20:03:19.726: I/ActivityManager(78): Displayed com.MyApp/.fbShare: +146ms 
06-06 20:03:24.816: D/test(736): testing post to wall 
06-06 20:03:24.828: W/System.err(736): android.os.NetworkOnMainThreadException 
06-06 20:03:24.836: W/System.err(736): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1099) 
06-06 20:03:24.836: W/System.err(736): at java.net.InetAddress.lookupHostByName(InetAddress.java:391) 
06-06 20:03:24.846: W/System.err(736): at java.net.InetAddress.getAllByNameImpl(InetAddress.java:242) 
06-06 20:03:24.846: W/System.err(736): at java.net.InetAddress.getAllByName(InetAddress.java:220) 
06-06 20:03:24.846: W/System.err(736): at libcore.net.http.HttpConnection.<init>(HttpConnection.java:71) 
06-06 20:03:24.846: W/System.err(736): at libcore.net.http.HttpConnection.<init>(HttpConnection.java:50) 
06-06 20:03:24.846: W/System.err(736): at libcore.net.http.HttpConnection$Address.connect(HttpConnection.java:351) 
06-06 20:03:24.846: W/System.err(736): at libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.java:86) 
06-06 20:03:24.846: W/System.err(736): at libcore.net.http.HttpConnection.connect(HttpConnection.java:128) 
06-06 20:03:24.846: W/System.err(736): at libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:308) 
06-06 20:03:24.846: W/System.err(736): at libcore.net.http.HttpsURLConnectionImpl$HttpsEngine.makeSslConnection(HttpsURLConnectionImpl.java:460) 
06-06 20:03:24.846: W/System.err(736): at libcore.net.http.HttpsURLConnectionImpl$HttpsEngine.connect(HttpsURLConnectionImpl.java:432) 
06-06 20:03:24.846: W/System.err(736): at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:282) 
06-06 20:03:24.856: W/System.err(736): at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:232) 
06-06 20:03:24.856: W/System.err(736): at libcore.net.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:80) 
06-06 20:03:24.856: W/System.err(736): at libcore.net.http.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:164) 
06-06 20:03:24.856: W/System.err(736): at com.facebook.android.Util.openUrl(Util.java:193) 
06-06 20:03:24.866: W/System.err(736): at com.facebook.android.Facebook.request(Facebook.java:751) 
06-06 20:03:24.866: W/System.err(736): at com.MyApp.fbShare.postMessage(fbShare.java:56) 
06-06 20:03:24.866: W/System.err(736): at com.MyApp.fbShare.postToWall(fbShare.java:47) 
06-06 20:03:24.866: W/System.err(736): at java.lang.reflect.Method.invokeNative(Native Method) 
06-06 20:03:24.866: W/System.err(736): at java.lang.reflect.Method.invoke(Method.java:511) 
06-06 20:03:24.876: W/System.err(736): at android.view.View$1.onClick(View.java:3039) 
06-06 20:03:24.876: W/System.err(736): at android.view.View.performClick(View.java:3511) 
06-06 20:03:24.876: W/System.err(736): at android.view.View$PerformClick.run(View.java:14105) 
06-06 20:03:24.876: W/System.err(736): at android.os.Handler.handleCallback(Handler.java:605) 
06-06 20:03:24.886: W/System.err(736): at android.os.Handler.dispatchMessage(Handler.java:92) 
06-06 20:03:24.886: W/System.err(736): at android.os.Looper.loop(Looper.java:137) 
06-06 20:03:24.886: W/System.err(736): at android.app.ActivityThread.main(ActivityThread.java:4424) 
06-06 20:03:24.886: W/System.err(736): at java.lang.reflect.Method.invokeNative(Native Method) 
06-06 20:03:24.896: W/System.err(736): at java.lang.reflect.Method.invoke(Method.java:511) 
06-06 20:03:24.896: W/System.err(736): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
06-06 20:03:24.896: W/System.err(736): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
06-06 20:03:24.896: W/System.err(736): at dalvik.system.NativeStart.main(Native Method) 

我在這裏失去了一些東西?我很感激任何幫助。 謝謝!

+0

[Android應用程序中奇怪的NetworkOnMainThreadException?]可能的重複?(http://stackoverflow.com/questions/8995364/strange-networkonmainthreadexception-in-android-app) – kabuko

回答

1

3.0(我認爲)系統拋出一個異常,如果您嘗試使用網絡上的主(UI)線程啓動。他們選擇讓系統這樣做,鼓勵開發人員不要在主線程上放置長時間運行的任務(如網絡操作)。

爲了解決您的問題,您需要將您的網絡操作(例如,調用的postMessage())到後臺線程。有幾種方法。退房AsyncTask或使用Handler/Thread調查。許多例子可以在網上,如果你搜索像「機器人創建後臺線程」

而且this tutorial made by Lars Vogel是真棒學習這個東西被發現。

+0

由vogel教程幫助。通過在後臺線程中完成發佈工作,現在允許我發佈。我不知道這個問題。要學習!謝謝。 – Nerd