安卓分享意向选择器 - 分享文字与Facebook / Twitter的社交媒体等(Android

2019-07-29 17:04发布

如果我只发送文本,共享意向选择器不给的Facebook / Twitter的作为一个选项。

仅限Gmail,Skype和Evernote的是选项。

这里是我的代码

Intent shareIntent = new Intent(Intent.ACTION_SEND);

shareIntent.setType("plain/text");
shareIntent.putExtra(Intent.EXTRA_TEXT, text)
startActivity(Intent.createChooser(shareIntent, "Share using"));

我已经试过的setType()的不同组合,没有快乐,包括“文/ *”,“text / html的”,并在putExtra经过HTML文本如下:

shareIntent.putExtra(Intent.EXTRA_TEXT, Html.fromHtml("<p>This is the text that will be shared.</p>"));

当我使用“text / plain的”,Facebook的出现作为一个选项,但选择它时,文本不加载。 但文中加载的Twitter,电子邮件,短信。

有没有其他人遇到这个问题?

当我分享图片,没有与其他社交媒体应用程序一起没有什么问题和Facebook提供的名单上。

Answer 1:

这取决于什么样的意图过滤器是由每个这些应用程序的定义。
举例来说,如果我加入意向过滤android.intent.action.send

如果我从图库中选择单个图像我的应用程序会出现在列表中。 但是,如果我选择多,因为我还没有添加意向过滤器为我的应用程序将不会出现android.intent.action.send_multiple

因此,它取决于什么的Intent Facebook是用于过滤。 你需要看看它的发行说明或帮助或开发网页。



Answer 2:

还应该根据文档是“text / plain的”,而不是“纯/文本”。



Answer 3:

Facebook的问题是Facebook的权限的限制。 使用Facebook API



Answer 4:

在Twitter上分享:

Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND);
shareIntent.setType("text/plain");

shareIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, (String)v.getTag(R.string.app_name));

shareIntent.putExtra(android.content.Intent.EXTRA_TEXT, (String)v.getTag(R.drawable.ic_launcher));

//查找Twitter的包名称---- >>

   PackageManager pm = v.getContext().getPackageManager();

   List<ResolveInfo> activityList = pm.queryIntentActivities(shareIntent, 0);

     for (final ResolveInfo app : activityList) 
      {
        if ("com.twitter.android.PostActivity".equals(app.activityInfo.name))
          {
             final ActivityInfo activity = app.activityInfo;
             final ComponentName name = new ComponentName(activity.applicationInfo.packageName, activity.name);
             shareIntent.addCategory(Intent.CATEGORY_LAUNCHER);
             shareIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
             shareIntent.setComponent(name);
             v.getContext().startActivity(shareIntent);
            break;
          }
        }

通过Facebook分享

   Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND);
   shareIntent.setType("text/plain");
   shareIntent.putExtra(android.content.Intent.EXTRA_SUBJECT,String)v.getTag(R.string.app_name));

   shareIntent.putExtra(android.content.Intent.EXTRA_TEXT, (String) 

v.getTag(R.drawable.ic_launcher));

// finding facebook package name 

   PackageManager pm = v.getContext().getPackageManager();
   List<ResolveInfo> activityList = pm.queryIntentActivities(shareIntent, 0);
     for (final ResolveInfo app : activityList) 
     {
         if ((app.activityInfo.name).contains("facebook")) 
         {
           final ActivityInfo activity = app.activityInfo;
           final ComponentName name = new ComponentName(activity.applicationInfo.packageName, activity.name);
          shareIntent.addCategory(Intent.CATEGORY_LAUNCHER);
          shareIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
          shareIntent.setComponent(name);
          v.getContext().startActivity(shareIntent);
          break;
        }
      }

通过Gmail分享

  Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND);

   shareIntent.setType("text/plain");         

shareIntent.putExtra(android.content.Intent.EXTRA_SUBJECT(String)v.getTag(R.string.app_name));

 shareIntent.putExtra(android.content.Intent.EXTRA_TEXT(String)v.getTag(R.drawable.ic_launcher));

// finding gmail package name  --- 

  PackageManager pm = v.getContext().getPackageManager();

   List<ResolveInfo> activityList = pm.queryIntentActivities(shareIntent, 0);

       for (final ResolveInfo app : activityList) 
        {
          if ((app.activityInfo.name).contains("gmail")) 
           {
             final ActivityInfo activity = app.activityInfo;
             final ComponentName name = new ComponentName(activity.applicationInfo.packageName, activity.name);
            shareIntent.addCategory(Intent.CATEGORY_LAUNCHER);
            shareIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
             shareIntent.setComponent(name);
             v.getContext().startActivity(shareIntent);
             break;
           }
       }


文章来源: Android Share Intent chooser - Sharing TEXT with Facebook/Twitter Social media etc