2017-03-03 1 views
0

Ich entwickle eine Android App, die sowohl Fb Like & Share Taste haben. Bis jetzt habe ich nur den Like-Button hinzugefügt. Ich möchte ein paar Sachen machen, wann immer der Benutzer es mag (Hits auf Like-Button), also muss ich die callback Methoden registrieren. So will ich wissen, wie man das erreicht und auch beim Drücken der Like-Taste, Share Option wird auch angezeigt, also dann wie kann ich das auch behandeln.Griff Rückruf von Facebook LikeView in Android

Hier sind einige Stücke von meinem Code:

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); 
} 

Antwort

1

einige Linien auf Ihrem onActivityResults hinzufügen.

@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 + ""); 

       } 
      } 

}