動的テキスト文字列 + アプリへの URL を共有したいだけです。ネイティブの Android 共有インテントは正しく設定されており、Twitter、Gmail などで完璧に機能します。しかし、多くの人が推測するように、Facebook では機能しません。どうやら、Facebook はintent.EXTRA_TEXT
フィールド内のテキストを受け入れず、単一の URL しか受け入れないためです。
さて、皆さんへの私の質問は次のとおりです。共有する方法に応じて、共有インテント エクストラを分岐する方法はありますか? たとえば、gmail または Twitter で共有する場合は、既存のString + URL
(望ましいオプション)EXTRA_TEXT
を使用しますが、Facebook で共有することを選択した場合は、URL のみを として使用しますEXTRA_TEXT
。
Android にネイティブに組み込まれているような単純なタスクのために、Facebook Android SDK を実装したくありません。
あなたの時間とアドバイスに感謝します。
このようなことを試してみましたが、共有オプションが存在するかどうかを確認するだけであるため(共有方法をクリックした後ではなく、共有がポップアップしたとき)、方法を選択しても応答しないため、明らかに失敗します。
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;
}
}