Reputation: 441
I want share content on Facebook from my app. When i click share button it should login and share content from dialog. Login is Working fine, But i don't know how share without default share button from Facebook SDK
My Facebook login code as follows
final ProfileTracker[] mProfileTracker = new ProfileTracker[1];
LoginManager.getInstance().logInWithReadPermissions(MainActivity.this, Arrays.asList("public_profile", "email"));
LoginManager.getInstance().registerCallback(callbackManager,
new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
}
@Override
public void onCancel() {
// App code
Toast.makeText(MainActivity.this, "Authentication with Facebook failed!", Toast.LENGTH_LONG).show();
}
@Override
public void onError(FacebookException exception) {
// App code
Toast.makeText(MainActivity.this, "Authentication with Facebook failed!", Toast.LENGTH_LONG).show();
}
});
}
Upvotes: 1
Views: 172
Reputation: 11565
After successful login use ShareLinkContent
to share on facebook wall :
code :
if (ShareDialog.canShow(ShareLinkContent.class)) {
ShareLinkContent linkContent = new ShareLinkContent.Builder()
.setContentTitle("Any Title")
/* .setContentDescription(
"'Hello Facebook'")*/
.setContentUrl(Uri.parse("https://www.google.com"))
.build();
shareDialog.show(linkContent);
}
In onSuccess method of LoginManager use this peice of code.
and initialize ShareDialog
and CallbackManager
in onCreate of Activity
like this :
callbackManager=CallbackManager.Factory.create();
shareDialog=new ShareDialog(this);
shareDialog.registerCallback(callbackManager, new FacebookCallback<Sharer.Result>() {
@Override
public void onSuccess(Sharer.Result result) {
}
@Override
public void onCancel() {
}
@Override
public void onError(FacebookException e) {
}
});
and onActivityResult
method of Activity add callback manager :
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
callbackManager.onActivityResult(requestCode, resultCode, data);
}
Upvotes: 2