如果用戶選擇Twitter,我想發送縮寫文本字段(由於字符限制)。從這個SO後 - Branching the Android Share Intent extras depending on which method they choose to share - 我瞭解到我可以實現有針對性的意圖。但是,當我使用下面的代碼時,許多應用程序顯示爲「Android系統」,Twitter並未顯示在對話框中。我甚至刪除了試圖抓住Twitter的if區塊,但它仍然沒有出現。Android - 使用動態文本字段使用選擇器對話框共享
List<Intent> targetedShareIntents = new ArrayList<Intent>();
Intent sharingIntent = new Intent(Intent.ACTION_SEND);
sharingIntent.setType("text/plain");
PackageManager pm = rootView.getContext().getPackageManager();
List<ResolveInfo> activityList = pm.queryIntentActivities(sharingIntent, 0);
for(final ResolveInfo app : activityList){
String packageName = app.activityInfo.packageName;
Intent targetedShareIntent = new Intent(Intent.ACTION_SEND);
targetedShareIntent.setType("text/plain");
if(TextUtils.equals(packageName, TWITTER_PACKAGE_NAME)){
targetedShareIntent.putExtra(Intent.EXTRA_TEXT, getTextToShare(data, "Twitter"));
} else {
targetedShareIntent.putExtra(Intent.EXTRA_SUBJECT, data.getTitle());
targetedShareIntent.putExtra(Intent.EXTRA_TEXT, getTextToShare(data));
}
targetedShareIntent.setPackage(packageName);
targetedShareIntents.add(targetedShareIntent);
}
Intent chooserIntent = Intent.createChooser(targetedShareIntents.remove(targetedShareIntents.size() - 1), "Share this story");
chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, targetedShareIntents.toArray(new Parcelable[]{}));
startActivity(chooserIntent);
我真的不知道發生了什麼事情有以下幾點:
Intent.createChooser(targetedShareIntents.remove(targetedShareIntents.size() - 1), "Share this story");
chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, targetedShareIntents.toArray(new Parcelable[]{}));
在SO後,使用targetedShareIntents.remove(0)
雖然targetedShareIntents.remove(targetedShareIntents.size() - 1)
提議作爲一種更重用的解決方案。任何幫助或解釋這是非常感謝。
是什麼'TWITTER_PACKAGE_NAME'的價值? – pRaNaY
'final String TWITTER_PACKAGE_NAME =「com.twitter.android」;' –