2012-06-21 75 views
0

我的應用程序旨在讓用戶拍照並將其上傳到他們的Facebook牆上。下面的代碼非常相似,就有關此相同的問題等做題給定的工作代碼許多其他的例子,但仍然給我的空指針異常:空指針將圖片發佈到Facebook牆上時出現異常(android)

private void postOnWall() 
    { 
     final String response = ""; 
    try 
    { 
     Bundle params = new Bundle(); 
     params.putString("message", getMessage()); 
     params.putByteArray("picture", byteArray); 
     mAsyncRunner.request(me/feed, params, "POST", new SampleUploadListener(), 
     null); 
    } 
    catch (Exception e) 
    { 
     e.printStackTrace(); 
    }  
} 

我只想得到圖片上傳在我可以繼續添加消息之前進行工作。有任何想法嗎?

編輯: 這裏是與AsyncRunner(...)行雲的SampleUploadListener():

public class SampleUploadListener extends BaseRequestListener { 
    public void onComplete(final String response, final Object state) { 
     try { 
      // process the response here: (executed in background thread) 
      Log.d("Facebook-Example", "Response: " + response.toString()); 
      JSONObject json = Util.parseJson(response); 
      final String src = json.getString("src"); 

      // then post the processed result back to the UI thread 
      // if we do not do this, an runtime exception will be generated 
      // e.g. "CalledFromWrongThreadException: Only the original 
      // thread that created a view hierarchy can touch its views." 

     } catch (JSONException e) { 
      Log.w("Facebook-Example", "JSON Error in response"); 
     } catch (FacebookError e) { 
      Log.w("Facebook-Example", "Facebook Error: " + e.getMessage()); 
     } 
    } 

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

    } 
} 

的logcat:

06-22 13:23:45.136: W/System.err(20667): java.lang.NullPointerException 
06-22 13:23:45.136: W/System.err(20667): at  com.uncc.cci.TrashPickup.TrashPickupActivity.postwall(TrashPickupActivity.java:475) 
06-22 13:23:45.136: W/System.err(20667): at com.uncc.cci.TrashPickup.TrashPickupActivity$5$1.onClick(TrashPickupActivity.java:230) 
06-22 13:23:45.140: W/System.err(20667): at android.view.View.performClick(View.java:3511) 
06-22 13:23:45.140: W/System.err(20667): at android.view.View$PerformClick.run(View.java:14105) 
06-22 13:23:45.140: W/System.err(20667): at android.os.Handler.handleCallback(Handler.java:605) 
06-22 13:23:45.140: W/System.err(20667): at android.os.Handler.dispatchMessage(Handler.java:92) 
06-22 13:23:45.140: W/System.err(20667): at android.os.Looper.loop(Looper.java:137) 
06-22 13:23:45.140: W/System.err(20667): at android.app.ActivityThread.main(ActivityThread.java:4424) 
06-22 13:23:45.144: W/System.err(20667): at java.lang.reflect.Method.invokeNative(Native Method) 
06-22 13:23:45.144: W/System.err(20667): at java.lang.reflect.Method.invoke(Method.java:511) 
06-22 13:23:45.144: W/System.err(20667): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
06-22 13:23:45.144: W/System.err(20667): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
06-22 13:23:45.148: W/System.err(20667): at dalvik.system.NativeStart.main(Native Method) 
+0

待辦事項你有一張圖片需要加載?當'Object'被調用的時候''NullPointerException''通常被拋出,而'NullPointerException'不應該被'null'拋出時被拋出。 –

+0

哪一行(請諮詢LogCat或發佈)? –

+0

@Yawus:'byteArray'是我已經處理過的位圖中的一個字節數組。我檢查了它是否爲空,而不是。 –

回答

0

當你糾正了你在這裏的任何錯誤時,你將不幸地發現,現在不可能通過將實際圖像字節直接上傳到Facebook來將圖像發佈到你的牆上。您可以將照片上傳到他們的照片庫,但不能上傳到他們的牆上。要將照片發佈到牆上,它必須已經在線,並且您需要提供一個鏈接,指向它與其他數據一起存在的位置。如果我錯了,那麼這是一個非常新的發展,因爲我剛剛在幾個月前遇到過這一切,甚至向Facebook提交了一個錯誤,他們拒絕說「這不是一個錯誤,而是我們打算做的事情」。

如果你確定與投入他們的圖片庫的照片(如果它是在畫廊的唯一照片它看起來幾乎完全像一個普通的牆後),這是做它的方式: Android post picture to Facebook wall

+1

我在仔細閱讀文檔之後得出了這個結論,但希望他們同時發佈了更合適的東西。不幸的是,上傳一張照片到他們的畫廊並不是一個很好的應用程序計劃,所以我會找到另一種解決方法。謝謝你的回答,確認我的恐懼! –

0

應該是:

private void postOnWall() { 
    Bundle params = new Bundle();    
    params.putString("message", "New picture"); 
    params.putByteArray("source", byteArray); 
    mAsyncRunner.request("me/photos", params, "POST", new SampleUploadListener(), null); 
} 

你發送的路徑爲空,這可能是你得到空指針異常的原因。
也根據documentation圖像參數名稱是source


編輯

試試這個檢查mAsyncRunner爲null:

private void postOnWall() { 
    Bundle params = new Bundle();    
    params.putString("message", "New picture"); 
    params.putByteArray("source", byteArray); 
    Log.d("Facebook-Example", mAsyncRunner == null ? "mAsyncRunner is null" : "mAsyncRunner not null"); 
    mAsyncRunner.request("me/photos", params, "POST", new SampleUploadListener(), null); 
} 

由於錯誤在該行拋出,這似乎是唯一可能的事情。

+0

我改變了我的代碼以反映你的建議,但不幸的是我仍然在同一行上得到相同的空指針異常。有什麼我應該包括在我的SampleUploadListener()可能會導致此? –

+0

你可以發佈你修改的代碼和SampleUploadListener的代碼嗎? –

+0

我已更新我的問題以反映更改,uploadListener和logcat –

相關問題