使用Facebook对话共享后Android应用程序崩溃

时间:2012-05-03 07:43:03

标签: android facebook multithreading dialog

我正在尝试将Facebook SDK集成到Android项目中。我在Facebook对话框中发帖墙消息,当我点击“分享”时,消息在我的Facebook墙上成功发布。但我的游戏仍在崩溃!

我从扩展Activity的主类中调用它。要弹出facebook UI对话框,我使用runOnUiThread。 (AsyncTask在我的代码中不起作用。)

public static int fbShareScores( final String sBody ) 
{
try 
{   
  oThis.runOnUiThread ( 
    new Runnable ( ) 
    { 
      @Override
      public void run ( ) 
      { 
        Bundle params = new Bundle();
        params.putString("caption", "Caption");
        params.putString("description", sBody);
    params.putString("picture", URL_TO_PNG);
        params.putString("name", "Name");
        oThis.mFacebook.dialog(oThis, "feed", params, null);
      } 
    } 
  );
}
catch ( Exception e ) 
{ 
  Log.d(Globals.sApplicationName, "share scores: Dialog: " + e.getMessage());
}

return 1;
}

以下是我在logcat中的错误:

  

D / Facebook-WebView(957):Webview加载网址:   https://m.facebook.com/dialog/feed W / AudioFlinger(32):写入被阻止   80毫秒,275延迟写入,线程0xff88 D / dalvikvm(957):   GC_CONCURRENT释放539K,15%免费7403K / 8647K,暂停3ms + 47ms   D / webviewglue(957):nativeDestroy视图:0x925250   D / Facebook-WebView(957):重定向网址:   fbconnect://成功POST_ID = 570020602_418386674846932   D / AndroidRuntime(957):关闭VM W / dalvikvm(957):threadid = 1:   线程退出与未捕获的异常(组= 0x40014760)   E / AndroidRuntime(957):致命异常:主E / AndroidRuntime(957):   java.lang.NullPointerException E / AndroidRuntime(957):at   com.facebook.android.FbDialog $ FbWebViewClient.shouldOverrideUrlLoading(FbDialog.java:143)   E / AndroidRuntime(957):at   android.webkit.CallbackProxy.uiOverrideUrlLoading(CallbackProxy.java:219)   E / AndroidRuntime(957):at   android.webkit.CallbackProxy.handleMessage(CallbackProxy.java:319)   E / AndroidRuntime(957):at   android.os.Handler.dispatchMessage(Handler.java:99)   E / AndroidRuntime(957):在android.os.Looper.loop(Looper.java:126)   E / AndroidRuntime(957):at   android.app.ActivityThread.main(ActivityThread.java:3997)   E / AndroidRuntime(957):at   java.lang.reflect.Method.invokeNative(Native Method)   E / AndroidRuntime(957):at   java.lang.reflect.Method.invoke(Method.java:491)   E / AndroidRuntime(957):at   com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:841)   E / AndroidRuntime(957):at   com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)   E / AndroidRuntime(957):at dalvik.system.NativeStart.main(Native   方法)W / ActivityManager(67):强制完成活动   com.companyname.mainclassname / .MainClassName

1 个答案:

答案 0 :(得分:0)

当我将上面代码中的行更改为:

时,错误消失了
oThis.mFacebook.dialog(oThis, "feed", params, new PostStatusDialogListener());

然后添加一个新的DialogListener:

public class PostStatusDialogListener implements DialogListener 
{
  @Override
  public void onComplete(Bundle values) {
    Log.d(Globals.sApplicationName, "PostStatusDialogListener::onComplete");
  }

  @Override
  public void onFacebookError(FacebookError error) {
    Log.d(Globals.sApplicationName, "PostStatusDialogListener::onFacebookError: " + error.getMessage());
  }

  @Override
  public void onError(DialogError error) {
    Log.d(Globals.sApplicationName, "PostStatusDialogListener::DialogError: " + error.getMessage());
  }

  @Override
  public void onCancel() {
    Log.d(Globals.sApplicationName, "PostStatusDialogListener::onCancel");
  }
}