Android:如何过滤可以共享混合内容的应用

时间:2017-02-09 12:45:39

标签: android android-intent android-intent-chooser

我正在我的应用中实现分享。可以使用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共享图像。

0 个答案:

没有答案