android - 如何从共享菜单中排除您自己的应用程序?

标签 android menu android-intent share

应用有一个 Intent 过滤器,允许它通过 ACTION_SEND Intent 出现在其他应用的共享菜单中。该应用程序本身也有一个使用 ACTION_SEND 和 createChooser() 的共享菜单,我的应用程序出现在列表中。由于他们已经在我的应用程序中,让他们能够分享回自己似乎很奇怪。

如果我的应用被我的应用调用,是否有办法不显示在列表中?

最佳答案

这是您的解决方案。如果您想排除您自己的应用程序,您可以使用 ctx.getPackageName() 更改“packageNameToExclude”

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;
}

关于android - 如何从共享菜单中排除您自己的应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4064848/

相关文章:

java - 从一个 Activity 传递一个长类型变量并在另一个 Activity 中接收它并将其显示在 TextView 中

android - 用户滚动到 ScrollView Android 底部后启用按钮

PHP/MySQL - 构建导航菜单层次结构

menu - 导航菜单标记中的页面标题 h2 。两只鸟,一 block 石头

android - 如何防止用户在注销后返回 protected 页面

java - ANDROID:开始另一项 Activity 但没有任何反应

Android VideoView,需要快速切换视频

android - 删除弹出的 React Native 应用程序中的 CALL_LOG 和 SMS 权限

android - 使用 Python 在 Appium/Android 上选择一个元素,该元素与 UIAutomatorViewer 上的另一个元素具有相同的类和相同的索引

php - CSS 菜单 URL 未正确重定向