6

テキストのみを送信する場合、共有インテントチューザーはオプションとして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"));

次のように、「text / *」、「text / html」、およびputExtraでのHTMLテキストの受け渡しなど、setType()のさまざまな組み合わせを試してみました。

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

「text/plain」を使用すると、オプションとしてFacebookが表示されますが、選択してもテキストが読み込まれません。ただし、Twitter、電子メール、SMSの場合はテキストが読み込まれます。

他の誰かがこの問題に遭遇しましたか?

画像を共有しても問題なく、Facebookや他のソーシャルメディアアプリがリストに載っています。

4

4 に答える 4

8

また、ドキュメントによると、「プレーン/テキスト」ではなく「テキスト/プレーン」である必要があります。

于 2012-12-11T17:26:02.607 に答える
3

これは、これらの各アプリによって定義されているインテントフィルターによって異なります。
たとえば、intent-filterを追加した場合 android.intent.action.send

ギャラリーから単一の画像を選択すると、アプリケーションがリストに表示されます。ただし、複数を選択した場合、インテントファイラーを追加していないため、アプリケーションは表示されません。android.intent.action.send_multiple

したがって、Facebookがフィルタリングするインテントによって異なります。そのためのリリースノートまたはヘルプまたは開発者ページを参照する必要があります。

于 2012-06-01T22:33:05.700 に答える
2

Facebook の問題は、Facebook のアクセス許可の制限です。フェイスブック API を使用する

于 2013-01-05T19:00:12.060 に答える
1

ツイッターでシェア:

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;
           }
       }
于 2014-07-07T10:40:49.953 に答える