我使用意图和Action.SEND分享社交网络例如WhatsApp,Twitter,Facebook和Gmail在我的自定义消息。 一切都在Gmail和Facebook的以外的其他应用程序ok了! 如何定制我的代码在Facebook上分享的东西呢? 我在Facebook上分享使用Facebook的SDK没有问题,但我想用一个意图去做。
这是我使用:
Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, knowTitle+"Read the full article via MomsApp by EnfaMama A+ at http://meadjohnsonasia.com.my/mobileapp");
sendIntent.putExtra(Intent.EXTRA_SUBJECT, "I just read "+knowTitle);
sendIntent.setType("*/*");
startActivity(Intent.createChooser(sendIntent, "Share Your Favorite Article"));
我所做的其实是截取intenthandlers的选择目标,您可以使用您的actionprovider做到这一点。 比方说,你创建了一个项目,与一个onclick开始的意图。 为了做到这一点,你可以实例化一个actionprovider这样做。 这actionprovider可以有一个setOnShareTargetSelectedListener拦截要处理不同的(或者根本没有^^)的任何意图。 请参阅下面如何配置你的actionprovider代码。
actionProvider.setShareIntent(createShareIntent());
actionProvider.setOnShareTargetSelectedListener(new OnShareTargetSelectedListener(){
@Override
public boolean onShareTargetSelected(ShareActionProvider source,
Intent intent) {
if ("com.facebook.katana".equals(intent.getComponent().getPackageName()) && mfacebooksharer != null) {
mfacebooksharer.shareStatus(subject, text);
return true;
}
return false;
}
});
只要选择的Facebook,我用我的mfacebooksharer来处理这个意图,并按照Facebook的API。 Ofcourse,这actionrpovider需要有一个意图。 (就像你想的意图,工作)。 我用下面的方法来创建意图。
private Intent createShareIntent() {
intentsetter.setIntentleave(true);
Intent shareIntent = new Intent(Intent.ACTION_SEND);
shareIntent.setType("text/plain");
shareIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, subject);
shareIntent.putExtra(android.content.Intent.EXTRA_TEXT, text);
return shareIntent;
}
由于按照Facebook的平台策略,你可以不使用预先填写份额对话框Intent.EXTRA_TEXT
。 它通常被认为是一个错误,但按照提交bug报告在这里也, 在这里 ,脸谱明确提到,这是不是这种情况(这是不是一个错误)。
你可以阅读更多关于他们的平台策略具体而言, 平台策略IV.2
从平台策略IV.2报价:
你不能预先填充任何与下列产品相关的领域,除非用户手动生成的内容之前在工作流程:流故事(USER_MESSAGE参数Facebook.streamPublish和FB.Connect.streamPublish,以及流信息参数。发布),照片(标题),视频(介绍),备注(标题和内容),链接(评论),和Jabber / XMPP。
这些字段供用户表达自己。 预填充这些字段侵蚀用户语音的真实性。
你可以分享您的应用程序故事的唯一方式是通过整合Facebook的SDK,它按照你的帖子,你已经能够成功。 可用(不幸)的唯一选择。
在Android中使用的意图,你只能共享一个链接没有文字:
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_TEXT, "http://www.google.ca");
startActivity(Intent.createChooser(intent, "Share with"));
它会工作。 如果你想分享的文字和链接,你必须使用Facebook SDK为Android: https://github.com/facebook/facebook-android-sdk