2012-01-04 8 views
2

壁に写真を公開するためにAndroidのFacebook sdkを使用していますが、 私はこのアプリのためにアンドロイド3.1ライブラリを使用しています。次android facebook sdkを使用してFacebookの壁に写真を公開中にエラーが発生しました

は、私は壁に写真を公開するために使用していたコードである

facebook.authorize(ImageCropShare.this, new String[] { "publish_stream" }, 
          new DialogListener() { 

         @Override 
         public void onFacebookError(FacebookError e) { 
         // TODO Auto-generated method stub 

         } 

         @Override 
         public void onError(DialogError dialogError) { 
         // TODO Auto-generated method stub 

         } 

         @Override 
         public void onComplete(Bundle values) {            

           Bundle params = new Bundle(); 
           params.putString(Facebook.TOKEN, values.getString(Facebook.TOKEN)); 
           params.putByteArray("picture", data); // here data is byte array of bitmap image 

           try { 
            facebook.request("me/photos", params, "POST"); 

           } catch (FileNotFoundException fileNotFoundException) { 
            // makeToast(fileNotFoundException.getMessage()); 
           } catch (MalformedURLException malformedURLException) { 
            // makeToast(malformedURLException.getMessage()); 
           } catch (IOException ioException) { 
            // makeToast(ioException.getMessage()); 
           } 

           try { 
            facebook.logout(getApplicationContext()); 
           } catch (MalformedURLException e) { 
            // TODO Auto-generated catch block 
            e.printStackTrace(); 
           } catch (IOException e) { 
            // TODO Auto-generated catch block 
            e.printStackTrace(); 
           } 
         } 

         @Override 
         public void onCancel() { 
         // TODO Auto-generated method stub 
          try { 
           facebook.logout(getApplicationContext()); 
          } catch (MalformedURLException e) { 
           // TODO Auto-generated catch block 
           e.printStackTrace(); 
          } catch (IOException e) { 
           // TODO Auto-generated catch block 
           e.printStackTrace(); 
          } 
         } 
        }); 

は、次の私は、ビットマップ画像

public byte[] bitmapTobyte(Bitmap bitmap) 
    { 
     byte[] data = null; 

     ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
     bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream); 
     data = stream.toByteArray(); 

     return data; 
    } 

からバイト配列を取得し、次いれる機能は、私ですエラーログ

01-04 11:44:04.022: E/AndroidRuntime(480): FATAL EXCEPTION: main 
01-04 11:44:04.022: E/AndroidRuntime(480): android.os.NetworkOnMainThreadException 
01-04 11:44:04.022: E/AndroidRuntime(480): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1077) 
01-04 11:44:04.022: E/AndroidRuntime(480): at java.net.InetAddress.lookupHostByName(InetAddress.java:477) 
01-04 11:44:04.022: E/AndroidRuntime(480): at java.net.InetAddress.getAllByNameImpl(InetAddress.java:277) 
01-04 11:44:04.022: E/AndroidRuntime(480): at java.net.InetAddress.getAllByName(InetAddress.java:249) 
01-04 11:44:04.022: E/AndroidRuntime(480): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection.<init>(HttpConnection.java:69) 
01-04 11:44:04.022: E/AndroidRuntime(480): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection.<init>(HttpConnection.java:48) 
01-04 11:44:04.022: E/AndroidRuntime(480): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection$Address.connect(HttpConnection.java:304) 
01-04 11:44:04.022: E/AndroidRuntime(480): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnectionPool.get(HttpConnectionPool.java:89) 
01-04 11:44:04.022: E/AndroidRuntime(480): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getHttpConnection(HttpURLConnectionImpl.java:292) 
01-04 11:44:04.022: E/AndroidRuntime(480): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.makeConnection(HttpURLConnectionImpl.java:274) 
01-04 11:44:04.022: E/AndroidRuntime(480): at org.apache.harmony.luni.internal.net.www.protocol.https.HttpsURLConnectionImpl$HttpsEngine.makeSslConnection(HttpsURLConnectionImpl.java:447) 
01-04 11:44:04.022: E/AndroidRuntime(480): at org.apache.harmony.luni.internal.net.www.protocol.https.HttpsURLConnectionImpl$HttpsEngine.makeConnection(HttpsURLConnectionImpl.java:419) 
01-04 11:44:04.022: E/AndroidRuntime(480): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:217) 
01-04 11:44:04.022: E/AndroidRuntime(480): at org.apache.harmony.luni.internal.net.www.protocol.https.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:177) 
01-04 11:44:04.022: E/AndroidRuntime(480): at com.facebook.android.Util.openUrl(Util.java:178) 
01-04 11:44:04.022: E/AndroidRuntime(480): at com.facebook.android.Facebook.request(Facebook.java:563) 
01-04 11:44:04.022: E/AndroidRuntime(480): at com.mazda.cx5app.imagecrop.ImageCropShare$2$1.onComplete(ImageCropShare.java:123) 
01-04 11:44:04.022: E/AndroidRuntime(480): at com.facebook.android.Facebook$1.onComplete(Facebook.java:308) 
01-04 11:44:04.022: E/AndroidRuntime(480): at com.facebook.android.FbDialog$FbWebViewClient.shouldOverrideUrlLoading(FbDialog.java:145) 
01-04 11:44:04.022: E/AndroidRuntime(480): at android.webkit.CallbackProxy.uiOverrideUrlLoading(CallbackProxy.java:222) 
01-04 11:44:04.022: E/AndroidRuntime(480): at android.webkit.CallbackProxy.handleMessage(CallbackProxy.java:322) 
01-04 11:44:04.022: E/AndroidRuntime(480): at android.os.Handler.dispatchMessage(Handler.java:99) 
01-04 11:44:04.022: E/AndroidRuntime(480): at android.os.Looper.loop(Looper.java:132) 
01-04 11:44:04.022: E/AndroidRuntime(480): at android.app.ActivityThread.main(ActivityThread.java:4025) 
01-04 11:44:04.022: E/AndroidRuntime(480): at java.lang.reflect.Method.invokeNative(Native Method) 
01-04 11:44:04.022: E/AndroidRuntime(480): at java.lang.reflect.Method.invoke(Method.java:491) 
01-04 11:44:04.022: E/AndroidRuntime(480): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841) 
01-04 11:44:04.022: E/AndroidRuntime(480): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599) 
01-04 11:44:04.022: E/AndroidRuntime(480): at dalvik.system.NativeStart.main(Native Method) 

事前にこのバグを解決してください。

答えて

2

私はその時、それはNetworkOnMainThreadExceptionによるクラッシュだった、私は私のマニフェストファイルで<uses-sdk android:minSdkVersion="12" />を与えていた、

を私のバグを解決しました。

googleの後、私はこの執行猶予がHoneycomb SDK以上をターゲットとするアプリケーションに対してのみ投げられることを発見しました。

だから、私はちょうど低レベルAPI、例えばに私のSDKを変更:<uses-sdk android:minSdkVersion="8" />、今、そのは、しかしそれでも、我々は、我々は、関連するすべてのネットワークを実行する必要がハニカム以上SDKを使用したい場合は...

を細かい作業します別のスレッド(タスクハンドラ、非同期タスク、またはrunOnUiThreadを使用)でタスクを実行します。

はここhandler & Async Taskの良い例であり、また、私はあなたが説明したが、それは私の問題を解決するdidntは何をしたrunOnUiThread

+1

使用方法を確認してください。しかし、スレッドの解決を使用して:http://stackoverflow.com/questions/9442527/networkonmainthreadexception-when-reading-from-web – Murat

+0

おかげであなたのコメントは私の答えを改善する助け.. ..! –

関連する問題