2017-03-03 9 views
0

私はFb Like & Shareボタンを持つAndroidアプリを開発しています。これまで、Likeボタンだけを追加しました。ユーザーが好き(好きなボタンにヒット)するたびに何かしたいので、callbackのメソッドを登録する必要があります。だから私はそれを達成する方法を知っていると同様に共有オプションも表示されているようなボタンを押すと、私はあまりにもそれを処理することができます。ここでAndroidのFacebook LikeViewからコールバックを処理する

は、私のコードのいくつかの作品です:

LinearLayout btnLoginToLike; 
LikeView likeView; 
CallbackManager callbackManager; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 


    initInstances(); 
    initCallbackManager(); 
    refreshButtonsState(); 
} 

private void initInstances() { 
    btnLoginToLike = (LinearLayout) findViewById(R.id.btnLoginToLike); 
    likeView = (LikeView) findViewById(R.id.likeView); 
    likeView.setLikeViewStyle(LikeView.Style.STANDARD); 
    likeView.setAuxiliaryViewPosition(LikeView.AuxiliaryViewPosition.INLINE); 

    likeView.setObjectIdAndType(
      "http://inthecheesefactory.com/blog/understand-android-activity-launchmode/en", 
      LikeView.ObjectType.OPEN_GRAPH); 

    btnLoginToLike.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      LoginManager.getInstance().logInWithReadPermissions(MainActivity.this, Arrays.asList("public_profile")); 
     } 
    }); 
} 

private void initCallbackManager() { 
    callbackManager = CallbackManager.Factory.create(); 
    LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() { 
     @Override 
     public void onSuccess(LoginResult loginResult) { 
      refreshButtonsState(); 
     } 

     @Override 
     public void onCancel() { 

     } 

     @Override 
     public void onError(FacebookException e) { 

     } 
    }); 
} 

private void refreshButtonsState() { 
    if (!isLoggedIn()) { 
     btnLoginToLike.setVisibility(View.VISIBLE); 
     likeView.setVisibility(View.GONE); 
    } else { 
     btnLoginToLike.setVisibility(View.GONE); 
     likeView.setVisibility(View.VISIBLE); 
    } 
} 

public boolean isLoggedIn() { 
    return AccessToken.getCurrentAccessToken() != null; 
} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    // Handle Facebook Login Result 
    callbackManager.onActivityResult(requestCode, resultCode, data); 
} 

答えて

1

はあなたonActivityResults上のいくつかの行を追加します。

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    callbackManager.onActivityResult(requestCode, resultCode, data); 


if (resultCode == RESULT_OK && data != null) { 
       Bundle bundle = data.getExtras().getBundle("com.facebook.platform.protocol.RESULT_ARGS"); 
       if (bundle != null) { 
        Logger.LogInfo("Bundle", bundle.toString()); 
        Boolean isLiked = bundle.getBoolean("object_is_liked"); // liked/unliked 
        Logger.LogInfo("object_is_liked", isLiked + ""); 
        Integer isCompleted = bundle.getInt("didComplete"); 
        Logger.LogInfo("didComplete", isCompleted + ""); 
        Integer count = bundle.getInt("like_count"); // object like count 
        Logger.LogInfo("like_count", count + ""); 
        String likeCount = bundle.getString("like_count_string"); 
        Logger.LogInfo("like_count_string", likeCount + ""); 
        String social = bundle.getString("social_sentence"); 
        Logger.LogInfo("social_sentence", social + ""); 
        String completeGesture = bundle.getString("completionGesture"); // liked/cancel/unliked 
        Logger.LogInfo("completionGesture", completeGesture + ""); 

       } 
      } 

}

関連する問題