Android共享文本和链接的Android共享意图

Gre*_*Bee 34 android share facebook android-intent

我正在尝试使用Android分享意图在Facebook上发布内容.它看起来像这样:

shareIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
shareIntent.setType("text/plain");
shareIntent.putExtra(android.content.Intent.EXTRA_TEXT, "Free education for all! http://linkd.in/xU8mCc");
startActivity(shareIntent);
Run Code Online (Sandbox Code Playgroud)

所以我的帖子有两个 - 一些文字和一个链接.但是当消息在Facebook上发布时,它只有链接,没有消息.我尝试了各种附加功能,但没有任何作用

有人遇到过这个问题并解决了吗?我有Facebook应用程序版本1.8.1

编辑:我尝试删除链接,Facebook应用程序不接收我的消息(显示一个空白消息要发布),但不是相反的方式.所以看起来应用程序完全忽略了任何纯文本消息.我吓坏了!这是fb应用程序中的一个主要错误,根本无法发布文本消息(具有共享意图)?

Mat*_*imB 11

我刚刚构建了这段代码,它对我有用:

private void shareAppLinkViaFacebook(String urlToShare) {
    try {
        Intent intent1 = new Intent();
        intent1.setClassName("com.facebook.katana", "com.facebook.katana.activity.composer.ImplicitShareIntentHandler");
        intent1.setAction("android.intent.action.SEND");
        intent1.setType("text/plain");
        intent1.putExtra("android.intent.extra.TEXT", urlToShare);
        startActivity(intent1);
    } catch (Exception e) {
        // If we failed (not native FB app installed), try share through SEND
        String sharerUrl = "https://www.facebook.com/sharer/sharer.php?u=" + urlToShare;
        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(sharerUrl));
        startActivity(intent);
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 似乎try {}功能不起作用,虽然我的设备上安装了Facebook应用程序但是catch工作正常. (6认同)
  • intent1.setPackage("com.facebook.katana"); 使用它代替 intent1.setClassName("com.facebook.katana", "com.facebook.katana.activity.composer.ImplicitShareIntentHandler"); (2认同)

zon*_*abi 6

如果您打算使用常规Android分享意图,那么不幸的是,Facebook分享意图只能使用一个URL(确保它具有http://)并且不会添加其他文本消息.这是一个奇怪的限制,实际上没有意义.

您必须在项目中使用实际官方单独的Facebook Android SDK才能获得完整的共享功能.这是额外的工作.

我遇到了类似的问题.最后,我所做的是分支意图.如果他们选择通过Facebook共享(在常规的Android共享意图中),创建一个只有URL并将其推送到Facebook的新共享意图.所有其他共享选项(推特,消息,电子邮件)将正常工作.

我的问题和解决方案在这里:

根据他们选择分享的方法对Android Share Intent extras进行分支

  String shareBody = "app string text " + act_txt + " more text! Get the app at http://www.appurl.com";

PackageManager pm = view.getContext().getPackageManager();
List<ResolveInfo> activityList = pm.queryIntentActivities(sharingIntent, 0);
for(final ResolveInfo app : activityList) {
     Log.i(TAG, "app.actinfo.name: " + app.activityInfo.name);
    //if((app.activityInfo.name).contains("facebook")) {
          if("com.facebook.katana.ShareLinkActivity".equals(app.activityInfo.name)) {


        sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, "http://www.appurl.com");
        startActivity(Intent.createChooser(sharingIntent, "Share idea"));
        break;
    } else {
        sharingIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "app name");
        sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, shareBody);
        startActivity(Intent.createChooser(sharingIntent, "Share"));
        break;
    }
}
Run Code Online (Sandbox Code Playgroud)