Как исключить свое приложение из меню «Поделиться»?

Приложение имеет фильтр намерений, позволяющий ему отображаться в меню общего доступа в других приложениях с помощью действий ACTION_SEND. В самом приложении также есть меню общего доступа, использующее ACTION_SEND и createChooser (), и мое приложение появляется в списке. Поскольку они уже находятся в моем приложении, кажется странным, чтобы они могли поделиться с самим собой.

Есть ли способ, чтобы мое приложение не появлялось в списке, если оно вызывается из моего приложения?

Solutions Collecting From Web of "Как исключить свое приложение из меню «Поделиться»?"

Есть ли способ, чтобы мое приложение не появлялось в списке, если оно вызывается из моего приложения?

Не через createChooser() . Вы можете создать свой собственный диалог queryIntentActivities() помощью queryIntentActivities() и queryIntentActivities() и фильтровать себя таким образом.

Здесь идет ваше решение. Если вы хотите исключить свое приложение, вы можете изменить «packageNameToExclude» с помощью 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; } 

Вы должны использовать

 Intent chooserIntent = Intent.createChooser(new Intent(), "Select app to share");