如果用户选择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”;' –