我正在我的应用中实现分享。可以使用whatsapp,twitter等一些应用程序共享混合内容,如图像+文本。而facebook,linkedin等仅允许一种类型的内容(图像或文本)。怎么能实现这一目标?例如,当选择whatsapp时,它应该发送两者,而当选择facebook时,它应该共享文本。我想到的一个解决方案是查询可以执行此操作的所有活动,然后创建目标意图。以下是我到目前为止所尝试的内容
Intent shareIntent = new Intent(Intent.ACTION_SEND);
shareIntent.setType("text/plain");
shareIntent.putExtra(Intent.EXTRA_SUBJECT, title);
shareIntent.putExtra(Intent.EXTRA_TEXT, title + "\n" + message);
List<ResolveInfo> resolveInfos = activity.getApplicationContext().getPackageManager().queryIntentActivities(shareIntent, PackageManager.MATCH_DEFAULT_ONLY);
ArrayList<Intent> mainIntentList = new ArrayList();
Iterator<ResolveInfo> it = resolveInfos.iterator();
while (it.hasNext()) {
ResolveInfo localResolveInfo = it.next();
String str = localResolveInfo.activityInfo.packageName;
if (imageSupportingApps.contains(str) && (imageUri != null)) {
Intent localIntent = new Intent(Intent.ACTION_SEND);
localIntent.setComponent(new ComponentName(str, localResolveInfo.activityInfo.name));
localIntent.putExtra(Intent.EXTRA_STREAM, imageUri);
localIntent.setType("image/*");
localIntent.putExtra(Intent.EXTRA_SUBJECT, title);
localIntent.putExtra(Intent.EXTRA_TEXT, title + "\n" + message);
localIntent.setPackage(str);
mainIntentList.add(localIntent);
}
}
Intent in = Intent.createChooser(shareIntent, "Share on ..");
in.putExtra(Intent.EXTRA_INITIAL_INTENTS, mainIntentList.toArray(new Parcelable[localArrayList1.size()]));
activity.startActivity(in);
更新1: 这是我到目前为止所尝试的。但它只发送文字。它不与whatsapp共享图像。