【问题标题】:How do I prevent Intent.createChooser from using the Intent automatically if there is only one intent?如果只有一个意图,如何防止 Intent.createChooser 自动使用 Intent?
【发布时间】:2020-01-01 15:53:31
【问题描述】:

我正在尝试创建一个意图选择器来编辑“个人资料图片”,具有以下选项: 1. 相机 2.画廊 3. 删除图片

根据用户提供的权限,我将 cameraIntent 和 galleryIntent 添加到我添加到选择器的意图列表中。 但是,如果用户同时拒绝相机和图库权限,选择器会自动退回到选项 3,删除图像,这不是我想要的。

    public Intent getImageChooserIntent(){
            Intent galleryIntent = getGalleryIntent();
            Intent cameraIntent = getCameraIntent();
            Intent imageSourceChooser = Intent.createChooser(new Intent(), "Select Source");
            List<Intent> intentList = new ArrayList<>();
            if (galleryIntent != null) {
                intentList.add(galleryIntent);
            }
            if (cameraIntent != null) {
                intentList.add(cameraIntent);
            }

            intentList.add(new Intent(context, DeleteImageActivity.class));
            imageSourceChooser.putExtra(Intent.EXTRA_INITIAL_INTENTS, intentList.toArray(new Intent[0]));
            return imageSourceChooser;

        }

如果用户拒绝相机和图库的权限,我希望提示显示一个只有一个选项的选择器 - “删除图像”。

【问题讨论】:

    标签: android android-studio android-intent android-camera-intent


    【解决方案1】:

    但这不是它的工作方式。在您的情况下,如果您知道用户没有授予相机或图库的权限,您可以只显示自己的对话框,询问用户是否要删除图像。

    【讨论】:

    • 我明白你在说什么。但是,我也请求许可。但是,如果用户即使在运行时拒绝该权限,相机或画廊选项也不应该显示,因为用户不允许这样做。问这个问题的另一种方法是,如何防止选择器只选择可用的选项,而不是显示选项(在这种情况下,只有一个选项)
    • 你不能 :-( 这就是选择器的工作方式。如果只有一个选项,它不会询问用户,因为那将是愚蠢的。只有一个选择,所以选择器使给你。唯一的方法是如果你知道只有一个选项,就不要使用选择器
    • 但这意味着我在向用户发出提示的方式上没有统一性。你会推荐什么其他方式来解决它?有什么可以接近复制选择器的吗? (除了手动设计以完全匹配选择器)
    • 或者,在用户点击选项编号 1 或 2 后,我如何请求权限
    • 如果您想使用Intent 启动相机应用程序,您不需要任何特殊权限。画廊也是如此。也许您对权限的工作方式感到困惑。
    猜你喜欢
    • 2020-01-28
    • 2020-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多