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);
}
In order to visualize the desired apps in share via, I need to pass the:
Intent chooserIntent = Intent.createChooser(targetedShareIntents.remove(0), "Select app to share");
Why do I need to have: targetedShareIntents.remove(0)
Does this mean an intent is removed from targetedShareIntents?
I've seen this code used a lot. I don't understand why do we need to use remove. Thx
targetedShareIntents.remove(0)
means throwing the list after removing the first element... because the first targetedShareIntent package name is com.google.android.apps.docs so the documentation app is unnecessary .. so removing the unnecessary app is better..because the user doesnt want to send data to it... Thats the reason of removing that targetedShareIntent from the list... You can log and check the package name ...