action_send - share intent android
¿Cómo excluir tu propia aplicación del menú Compartir? (3)
La aplicación tiene un filtro de intención para permitir que aparezca en el menú de compartir en otras aplicaciones a través de las intenciones de ACTION_SEND. La aplicación en sí también tiene un menú para compartir con ACTION_SEND y createChooser (), y mi aplicación aparece en la lista. Dado que ya están en mi aplicación, parece extraño que puedan compartirse de nuevo a sí mismos.
¿Hay alguna forma de que mi aplicación no aparezca en la lista si se la llama desde mi aplicación?
¿Hay alguna forma de que mi aplicación no aparezca en la lista si se la llama desde mi aplicación?
No a través de createChooser()
. Sin embargo, puede crear su propio cuadro de diálogo tipo selector a través de PackageManager
y queryIntentActivities()
y filtrarse de esa manera.
Aquí va tu solución. Si desea excluir su propia aplicación, puede cambiar "packageNameToExclude" con ctx.getPackageName ()
public static Intent shareExludingApp(Context ctx, String packageNameToExclude, String imagePath, String text) {
List<Intent> targetedShareIntents = new ArrayList<Intent>();
Intent share = new Intent(android.content.Intent.ACTION_SEND);
share.setType("image/*");
List<ResolveInfo> resInfo = ctx.getPackageManager().queryIntentActivities(createShareIntent(text,new File(imagePath)), 0);
if (!resInfo.isEmpty()) {
for (ResolveInfo info : resInfo) {
Intent targetedShare = createShareIntent(text,new File(imagePath));
if (!info.activityInfo.packageName.equalsIgnoreCase(packageNameToExclude)) {
targetedShare.setPackage(info.activityInfo.packageName);
targetedShareIntents.add(targetedShare);
}
}
Intent chooserIntent = Intent.createChooser(targetedShareIntents.remove(0),
"Select app to share");
chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS,
targetedShareIntents.toArray(new Parcelable[] {}));
return chooserIntent;
}
return null;
}
private static Intent createShareIntent(String text, File file) {
Intent share = new Intent(android.content.Intent.ACTION_SEND);
share.setType("image/*");
if (text != null) {
share.putExtra(Intent.EXTRA_TEXT, text);
}
share.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file));
return share;
}
Deberías usar
Intent chooserIntent = Intent.createChooser(new Intent(), "Select app to share");