1
List<Intent> targetedShareIntents = new ArrayList<Intent>();
Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND);
shareIntent.setType("text/plain");
List<ResolveInfo> resInfo = getPackageManager().queryIntentActivities(shareIntent, 0);
if (!resInfo.isEmpty()) {
    for (ResolveInfo resolveInfo : resInfo) {
        String packageName = resolveInfo.activityInfo.packageName;
        Intent targetedShareIntent = new Intent(android.content.Intent.ACTION_SEND);
        targetedShareIntent.setType("text/plain");
        targetedShareIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "subject to be shared");
        if (TextUtils.equals(packageName, "com.facebook.katana")) {
            targetedShareIntent.putExtra(android.content.Intent.EXTRA_TEXT, "http://link-to-be-shared.com");
        } else {
            targetedShareIntent.putExtra(android.content.Intent.EXTRA_TEXT, "text message to shared");
        }
        targetedShareIntent.setPackage(packageName);
        targetedShareIntents.add(targetedShareIntent);
    }
    Intent chooserIntent = Intent.createChooser(targetedShareIntents.remove(0), "Select app to share");
    chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, targetedShareIntents.toArray(new Parcelable[targetedShareIntents.size()]));
    startActivity(chooserIntent);
}

为了可视化共享中所需的应用程序,我需要传递:

 Intent chooserIntent = Intent.createChooser(targetedShareIntents.remove(0), "Select app to share");

为什么我需要:targetedShareIntents.remove(0)这是否意味着从 targetShareIntents 中删除了一个意图?

我已经看到这个代码使用了很多。我不明白为什么我们需要使用 remove。谢谢

4

1 回答 1

1

targetedShareIntents.remove(0)意味着删除第一个元素后抛出列表......因为第一个targetedShareIntent包名称是com.google.android.apps.docs所以文档应用程序是不必要的..所以删除不必要的应用程序更好..因为用户不想要向它发送数据...这就是从列表中删除该targetedShareIntent的原因...您可以记录并检查包名称...

    Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND);
    shareIntent.setType("text/plain");
    List<ResolveInfo> resInfo = getPackageManager().queryIntentActivities(shareIntent, 0);

    Log.e("package",resInfo.get(0).activityInfo.packageName);
于 2018-02-12T13:24:10.997 回答