2014-01-22 28 views
1

我使用下面的代碼來分享FaceBook share.The圖片張貼在某些FaceBook ID中但有一定的FaceBook ID我得到空指針異常。我該如何解決這個問題。在Facebook上分享時出現空指針異常

postParams.putString("message", message); 
    postParams.putString("picture",picture); 
    System.out.println("******* 111111 *********"); 

    com.facebook.Request.Callback callback = new com.facebook.Request.Callback() 
    { 
    public void onCompleted(Response response) 
     { 
     JSONObject graphResponse =response.getGraphObject().getInnerJSONObject(); 
     String postId = null; 
     try { 
     postId = graphResponse.getString("id"); 
     } catch (JSONException e) 
     { 
     Log.i("postthis", "JSON error " + e.getMessage()); 
     } 
     FacebookRequestError error = response.getError(); 
     if (error != null) { 
      Log.i("postthis", "JSON error "  +error.getErrorMessage()); 
      } 
     else { 
//  Toast.makeText(ctx.getApplicationContext(), postId, 
//      Toast.LENGTH_LONG).show(); 
      } 
      } 
      }; 

這是logcat錯誤:

01-22 09:43:20.812: E/AndroidRuntime(5201): FATAL EXCEPTION: main 
01-22 09:43:20.812: E/AndroidRuntime(5201): java.lang.NullPointerException 
01-22 09:43:20.812: E/AndroidRuntime(5201):  at FBLogin$2.onCompleted (FBLogin.java:316) 
01-22 09:43:20.812: E/AndroidRuntime(5201):  at com.facebook.Request$4.run(Request.java:1669) 
01-22 09:43:20.812: E/AndroidRuntime(5201):  at android.os.Handler.handleCallback(Handler.java:615) 
01-22 09:43:20.812: E/AndroidRuntime(5201):  at android.os.Handler.dispatchMessage(Handler.java:92) 
01-22 09:43:20.812: E/AndroidRuntime(5201):  at android.os.Looper.loop(Looper.java:137) 
01-22 09:43:20.812: E/AndroidRuntime(5201):  at android.app.ActivityThread.main(ActivityThread.java:4895) 
01-22 09:43:20.843: E/android.os.Debug(353): [email protected] > dumpstate -k -t -z -d -o /data/log/dumpstate_app_error 
+0

發佈您的logcat ... –

+0

發佈logcat以及行號。 –

+0

我發佈了我的logcat任何人都可以幫我.. – fruity

回答

1

檢查您的參數,如果該參數的任何一個爲null,則圖形對象顯示在Facebook分享空值。

0

張貼在牆上的會話是空所以你必須主動會話首次張貼在牆上的空指針異常。您可以使用以下代碼在牆上分享。

Session.openActiveSession(activity, true, new Session.StatusCallback() { 

    // callback when session changes state 
    @Override 
    public void call(Session session, SessionState state, 
      Exception exception) { 
     if (session != null && session.isOpened()) { 

      // Check for publish permissions 
      List<String> permissions = session.getPermissions(); 
      if (!isSubsetOf(PERMISSIONS, permissions)) { 
       Session.NewPermissionsRequest newPermissionsRequest = new Session.NewPermissionsRequest(
         activity, PERMISSIONS); 
       session.requestNewPublishPermissions(newPermissionsRequest); 
       return; 
      } 

      Bundle postParams = new Bundle(); 
      postParams.putString("message", message); 

       postParams.putString("tags",tag); 
        postParams.putString("place",place_id); 



      Request.Callback callback = new Request.Callback() { 
       private String toastmessage; 

       public void onCompleted(Response response) { 
        try { 
         JSONObject graphResponse = response 
           .getGraphObject().getInnerJSONObject(); 
         String postId = null; 

         postId = graphResponse.getString("id"); 
        } catch (Exception e) { 
         Log.i("Test", "JSON error " + e.getMessage()); 
        } 
        FacebookRequestError error = response.getError(); 
        if (error != null) { 
         isPosted(false); 
         Toast.makeText(
           activity.getApplicationContext(), 
           error.getErrorMessage(), 
           Toast.LENGTH_SHORT).show(); 
        } else { 
         isPosted(true); 
         toastmessage = "Posted Successfully"; 
         Toast.makeText(activity, toastmessage, 
           Toast.LENGTH_SHORT).show(); 
         { 

         } 
        } 
       } 
      }; 

      Request request = new Request(session, "me/feed", 
        postParams, HttpMethod.POST, callback); 

      RequestAsyncTask task = new RequestAsyncTask(request); 
      task.execute(); 
     } 


    } 
}); 

鑑於在此鏈接How do I publish a check in to facebook with android SDK

+0

得到這個錯誤{迴應:responseCode:500 ,graphObject:空,錯誤: {的HTTPStatus:500, 的errorCode:341, ERRORTYPE:FacebookApiException, 的errorMessage:應用程序請求限制達到}, isFromCache:假}在線路的JSONObject graphResponse =響應 .getGraphObject()。 getInnerJSONObject(); – fruity

+0

當訪問令牌太舊時請求限制達到錯誤... –

0

一旦試試這個,這是爲我工作在Android sdk 3.x

void publishToWall(Session session) {  
    if (session != null) {   
     Bundle postParams = new Bundle(); 
     postParams.putString("message", "contentStr"); 
     postParams.putString("description", "description"); 
     postParams.putString("link", ""); 
     postParams.putString("name", "Name"); 
     postParams.putString("picture", "picture url"); 

     Request.Callback callback = new Request.Callback() { 
      public void onCompleted(Response response) {  

      } 
     }; 
     Request request = new Request(session, "me/feed", postParams, HttpMethod.POST, callback); 
     RequestAsyncTask task = new RequestAsyncTask(request); 
     task.execute();    

     Log.i("TAG", "Message posted to your facebook wall!..");   


    }   
} 
+0

我使用了您發佈的相同代碼..但是沒有任何內容發佈在Facebook牆上。我該怎麼辦??? – fruity

+0

相同的代碼在我的應用程序中使用它對我來說工作正常.. – NagarjunaReddy

+0

只需將您的活動代碼粘貼到http://pastebin.com/並提供該網址即可。 – NagarjunaReddy