开场白 依然给大脸书
承接上一篇 android 集成facebook的登录功能
首先分享功能 要在清单文件中添加如下内容提供者:
<provider android:authorities="com.facebook.app.FacebookContentProvider{APP_ID}"
android:name="com.facebook.FacebookContentProvider"
android:exported="true"/>
主要介绍Link分享的模板
包含的内容:
a contentTitle 标题
a imageURL, 图片url
a contentDescription of the content, 描述
图片摘自:facebook官方
举个栗子:
//创建一个shareLinkCOntent,
Builder linkContent = new ShareLinkContent.Builder()
.setContentTitle(title)
.setContentDescription(text)
.setShareHashtag(shareHashtagBuilder.build())
.setImageUrl(imgUri);
if(null != link && link.length > 0){
linkContent.setContentUrl(Uri.parse(link[0]));
}else{
linkContent.setContentUrl(Uri.parse(GlobalInfo.getInstance(activity).getShareUrl()));
}
ShareLinkContent sc = linkContent.build();
解释一个setShareHashtag这个是一个标签,就是在发布的时候自动加上的,当然用户可以去掉
怎么创建ne,也是采用的构建者模式的链式调用
ShareHashtag.Builder shareHashtagBuilder = new ShareHashtag.Builder();
shareHashtagBuilder.setHashtag("#HelloWorld");
这样就可以了吗 no
我们一般是调用用户的facebook的客户端进行post,就像我们分享到新浪微博,直接掉微博客户端
这里就用到了ShareDialog,加如灭有客户端,则调用web端
就像登录一样,我们一样要设置回调接口
public class MainActivity extends FragmentActivity {
CallbackManager callbackManager;
ShareDialog shareDialog;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
callbackManager = CallbackManager.Factory.create();
shareDialog = new ShareDialog(this);
// 这是可选的,你如果不使用也是不影响的
shareDialog.registerCallback(callbackManager, new FacebookCallback<Sharer.Result>() { ... });
}
这是必须的
@Override
protected void onActivityResult(final int requestCode, final int resultCode, final Intent data) {
super.onActivityResult(requestCode, resultCode, data);
callbackManager.onActivityResult(requestCode, resultCode, data);
}
然后shareDialog.show(sc);
就可以展示了