首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何从图库中选择多个图片,并使用android代码在单个活动中显示它们?

要从图库中选择多个图片并在单个Android活动中显示它们,你需要执行以下步骤:

基础概念

  1. Intent: Android中用于启动活动、服务或发送广播的机制。
  2. MediaStore: Android提供的一个API,用于访问设备上的媒体文件。
  3. RecyclerView: 一个更灵活和高效的ListView,用于显示大量数据集合。

相关优势

  • 用户体验: 允许用户一次性选择多个图片,提高操作效率。
  • 灵活性: 使用RecyclerView可以高效地管理和显示大量图片。

类型与应用场景

  • 类型: 多选图片功能常见于社交媒体应用、图片编辑应用等。
  • 应用场景: 用户需要上传多张图片到服务器或在应用内进行批量编辑。

实现步骤

步骤1: 请求权限

首先,确保你的应用有读取外部存储的权限。

代码语言:txt
复制
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

步骤2: 启动图库选择器

使用Intent启动图库,并设置选择多个文件的标志。

代码语言:txt
复制
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
startActivityForResult(Intent.createChooser(intent, "Select Picture"), PICK_IMAGES_REQUEST);

步骤3: 处理返回结果

onActivityResult方法中处理返回的图片URI。

代码语言:txt
复制
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == PICK_IMAGES_REQUEST && resultCode == RESULT_OK && data != null) {
        if (data.getClipData() != null) {
            int count = data.getClipData().getItemCount();
            for (int i = 0; i < count; i++) {
                Uri imageUri = data.getClipData().getItemAt(i).getUri();
                imageUris.add(imageUri);
            }
        } else if (data.getData() != null) {
            Uri imageUri = data.getData();
            imageUris.add(imageUri);
        }
        displayImages();
    }
}

步骤4: 显示图片

使用RecyclerView和适配器来显示选中的图片。

代码语言:txt
复制
private List<Uri> imageUris = new ArrayList<>();

private void displayImages() {
    RecyclerView recyclerView = findViewById(R.id.recyclerView);
    recyclerView.setLayoutManager(new GridLayoutManager(this, 3));
    ImageAdapter adapter = new ImageAdapter(imageUris);
    recyclerView.setAdapter(adapter);
}

class ImageAdapter extends RecyclerView.Adapter<ImageAdapter.ImageViewHolder> {
    private List<Uri> imageUris;

    ImageAdapter(List<Uri> imageUris) {
        this.imageUris = imageUris;
    }

    @NonNull
    @Override
    public ImageViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_image, parent, false);
        return new ImageViewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull ImageViewHolder holder, int position) {
        Glide.with(holder.itemView.getContext()).load(imageUris.get(position)).into(holder.imageView);
    }

    @Override
    public int getItemCount() {
        return imageUris.size();
    }

    static class ImageViewHolder extends RecyclerView.ViewHolder {
        ImageView imageView;

        ImageViewHolder(View itemView) {
            super(itemView);
            imageView = itemView.findViewById(R.id.imageView);
        }
    }
}

步骤5: 布局文件

创建RecyclerView的布局文件activity_main.xml和每个图片项的布局文件item_image.xml

activity_main.xml:

代码语言:txt
复制
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <Button
        android:id="@+id/btn_select_images"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Select Images"/>

    <RecyclerView
        android:id="@+id/recyclerView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@id/btn_select_images"/>
</RelativeLayout>

item_image.xml:

代码语言:txt
复制
<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/imageView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:scaleType="centerCrop"/>

可能遇到的问题及解决方法

  1. 权限问题: 如果应用没有读取存储权限,用户将无法选择图片。确保在运行时请求权限。
  2. 内存溢出: 加载大量图片可能导致内存溢出。使用Glide等库可以有效管理内存。
  3. 图片显示不正确: 确保图片URI正确,并且在不同设备和Android版本上测试兼容性。

通过以上步骤,你可以在Android应用中实现从图库选择多个图片并在单个活动中显示它们的功能。

相关搜索:如何从图库中选择图片并在另一个android活动中显示?如何从图库中获取多张图片,并在选择后显示在LinearLayout中如何使用css从单个href中的多个url中选择单个url?从php文件中获取并显示api响应,并使用java中的改进在android活动中显示。在Android中,如何将多个活动的数据传递到单个活动?如何从图库中获取图像并将其显示在android sdk中的屏幕上如何获得iPhone图库中的所有图片,而不必要求用户在Xamarin中选择它们?如何使用Android Studio在日历中显示多个日期?如何使用RecyclerView在单个布局中添加两个片段并滚动它们?如何使用VueJS从JSON响应中提取单个记录( id )并显示在DOM中?如何传递从图库中选择的多个图像的图像数组,并在Flutter中的另一个小部件上显示它们如何从多个excel文件中获取数据并使用它们创建新工作表?如何从android中的json字符串中获取图片url以显示在图片视图中如何从多个文件中收集spring属性以在单个bean上使用如何从mongo DB集合中获取所有数据,并使用morphia在ArrayList中返回它们如何从Environment.DIRECTORY_PICTURE中的目录获取所有图像并显示在我的自定义图库中如何在django中使用单个方法在多个页面中显示相同的表单?如何在MySQL中根据id获取列的总和,并使用Volley在Android中显示如何从多个数据库中调用信息并将其显示在单个页面上?如何从word文档中获取所有内容并使用php将其显示在div中?
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

项目需求讨论 - WebView下拍照及图片选择功能

但是在给赋值的时候我遇到过不同的情况: 当在Android这边拍照或者进入图库选完照片后,把图片信息给了网页端后,标签的onchange监听到了图片选择好了,网页端直接把图片上传到服务器并传回来一个地址...可以参考: h5 实现调用系统拍照或者选择照片并预览 2. Android端: ?...所以我们这里就要讲二大块: 用户怎么跳到自己想要的界面(相机 or 图库) 用户在自己想要的界面选择好了图片后 (拍好了照片 or 在图库选择好了图片),如何获取相关图片的Uri。...2.2.1 相机 or 图库 我们肯定想到是用户点击了某个按钮后,我们需要跳出一个弹框,然后上面有拍照和图库按钮: 比如我使用系统自带的选择框(不同手机显示的弹框不同): ?...---- 拍照说完了,我们再来看在图库界面选择图片: 其实总体思路和拍照是一模一样,无非就是指定Intent是打开了图库的Intent。 ? 还是在刚才的Android 官网我们可以看到: ?

2K20
  • 17个最佳WordPress画廊插件

    从完全可定制的皮肤选项中进行选择,以逼真的3D动画书显示您的内容,并提供页面深度模拟和用户友好的交互式灵活页面角。...从自适应网格和轮播布局中进行选择,并通过高级样式和动画选项进一步增强您的画廊。 该插件使您可以创建完整的媒体库,并支持YouTube,Vimeo和自托管视频以及SoundCloud和自托管音频。...钻石画册 Diamond WordPress翻页书插件可让您从各种源文件创建翻页书 。 自动转换PDF,同时上传多个JPG以创建活动簿,手动添加页面或直接在“所见即所得”编辑器中直接输入文本。...垂直流将您的图像分布在等宽的列中,而不会对其进行裁剪;水平流在同一图库中很好地显示纵向和横向图像,而经典网格是正方形图像和徽标的可靠选择。...尽管其中一些在CSS3效果上表现出色,但也有很多在后端也显示了它们的功能。 您可以在Envato Market上找到更多很棒的WordPress画廊插件。

    8.3K31

    2019的10个最佳WordPress画廊插件

    但是,在研究它们之前,让我们大致了解图库插件,它们为何重要以及在选择插件之前应考虑的事项。 视觉内容心理学 我们已经知道,带有图片的内容会增加网站的访问量和参与度。...我们先查看并识别对象,然后再学习它们的名称。 当我们描述事物或情况时,我们尝试在倾听者的心中创建一张图片,以便他或她也可以理解我们在说什么。 其次,我们的物理世界充满了色彩。...它们是我们如何看待世界的重要组成部分。 它们会影响我们的情绪以及我们做出决定的方式。 明智地使用颜色可以影响访问者以最佳方式响应您的Web内容。...使用此插件,您可以从自己的Feed或Instagram图片的任何其他集合中创建图库。 InstaShow是您需要的WordPress Instagram画廊feed插件。...结论 我们已经看到,在视觉文化时代,带有图片的网站获得了更多的观看次数。 一个好的图片库插件是一项巨大的资产。 它具有旨在帮助在您的网站上显示图像并增加内容吸引力的功能。 回报是巨大的。

    4.8K51

    Android开发中,怎样调用摄像机拍照以及怎样从本地图库中选取照片

    这是属于我的第一篇博文,首先说明一下,文章属性为原创,其实不能说是原创,我是在学习的过程中根据自己的理解整理的。文章内容大多为书本上的内容,书本是郭霖的《第一行代码》。...正文:现在很多应用程序会调用摄像头的拍照功能,比如哪个程序要上传一张图片作为用户头像,这是启用摄像头拍照会很方便。当然,还有第二种方法,就是在本地图库选取已经被保存的图片。...//因为我们用startActivityForResult方法启动活动,所有它们处理完结果后,会回调上一个活动的onActivityResult方法,这里我们就在MainActivity重写此方法...imagepath,然后我们会再提供一个方法将imagepath作为参数来显示图片 String imagepath = null; //android4.4以上的版本,...我们获取的图片uri不是真实的图片uri,是封装过的,不能直接用来显示图片,我们要进行解析 Uri uri = data.getData();//通过传入intent参数来获取信息,图片的内容

    68030

    使用LRU算法缓存图片,android 3.0

    在您的UI中显示单个图片是非常简单的,如果您需要一次显示很多图片就有点复杂了。...在很多情况下 (例如使用 ListView, GridView 或者 ViewPager控件), 显示在屏幕上的图片以及即将显示在屏幕上的图片数量是非常大的(例如在图库中浏览大量图片)。...另外,在 Android 3.0 (API Level 11)之前,这些缓存的Bitmap数据保存在底层内存(native memory)中,并且达到预定条件后也不会释放这些对象,从而可能导致 程序超过内存限制并崩溃...在使用 LruCache 的时候,需要考虑如下一些因素来选择一个合适的缓存数量参数: 程序中还有多少内存可用 同时在屏幕上显示多少图片?要先缓存多少图片用来显示到即将看到的屏幕上?...注意: 如果缓存的图片经常被使用的话,可以考虑使用 ContentProvider ,例如在图库程序中就是这样干滴。 在示例代码中有个简单的 DiskLruCache 实现。

    1K80

    使用LRU算法缓存图片

    译文地址:http://blog.csdn.net/androidzhaoxiaogang/article/details/7910364 在您的UI中显示单个图片是非常简单的,如果您需要一次显示很多图片就有点复杂了...在很多情况下 (例如使用 ListView, GridView 或者 ViewPager控件), 显示在屏幕上的图片以及即将显示在屏幕上的图片数量是非常大的(例如在图库中浏览大量图片)。...另外,在 Android 3.0 (API Level 11)之前,这些缓存的Bitmap数据保存在底层内存(native memory)中,并且达到预定条件后也不会释放这些对象,从而可能导致 程序超过内存限制并崩溃...在使用 LruCache 的时候,需要考虑如下一些因素来选择一个合适的缓存数量参数: 程序中还有多少内存可用 同时在屏幕上显示多少图片?要先缓存多少图片用来显示到即将看到的屏幕上?...注意: 如果缓存的图片经常被使用的话,可以考虑使用 ContentProvider ,例如在图库程序中就是这样干滴。 在示例代码中有个简单的 DiskLruCache 实现。

    40010

    PowerPhotos for Mac(mac专用图片管理工具)

    图片PowerPhotos for Mac(mac专用图片管理工具)PowerPhotos 功能亮点1.创建和管理多个库主窗口PowerPhotos不仅限于将所有照片放入单个图库中,还可以与多个照片库一起工作...在多个库之间分割照片可帮助照片更快打开,让您可以存档较旧的照片,将某些藏品存储在外部硬盘上,并减少iCloud照片库使用的存储空间。...PowerPhotos可让您将库合并在一起,同时在流程中清除重复的照片。在完成任何修改之前,您将看到预览了合并库的外观,以确保您的合并库看起来如何。...使用PowerPhotos可以在一个或多个库中查找重复的照片,并排查看它们,并将它们分成相册,您可以轻松地从库中将它们删除。...使用列表视图查看详细的照片信息,并立即在所有库中搜索照片6.迁移iPhoto / Aperture库主窗口如果您有很多现有的iPhoto或Aperture图库需要迁移到照片,PowerPhotos将帮助您自动迁移

    1.4K30

    安卓软件开发_应用程序UI组件意外停止

    当你决定使用以上哪些组件来构建Android应用程序时,你应该将它们列在AndroidManifest.xml文件中,在这个文件中你可以声明应用程序组件以及它们的特性和要求。...一个活动还可以使用额外的窗口——例如弹出式对话框,或当一用户选择屏幕上一个特定的项时一个窗口显示给用户重要的信息。 窗口的可视内容是由继承自View基类的一个分层的视图—对象提供。...叶子视图(在分层的底层)绘制的矩形直接控制和响应用户的操作。因此,一个视图是活动与用户交互发生的地方。例如,一个视图可能显示一个小的图片和当用户点击图片时发起一个行为。...一个典型的例子是一个媒体播放器播放一个播放列表中的歌曲。该播放器应用程序将可能有一个或多个活动(activities),允许用户选择歌曲和开始播放。...例如,通讯录数据被多个应用程序使用,且必须存储在一个内容提供者中。如果你不需要在多个应用程序间共享数据,你可以直接使用SQLiteDataBase。

    1K10

    LiTr:适用于Android的轻量级视频音频转码器

    从Android设备发布视频时,成员可以使用其设备摄像头应用程序录制视频,也可以从图库中选择已经拍摄好的视频。上传后,视频将被转换为消费格式,并作为更新显示在Feed中。...在这篇文章中,我将对该演讲进行高层概述,包括我们如何构建LiTr架构,如何使用它来转换媒体以及为什么我们选择MediaCodec来访问硬件编码器。请参阅此处以录制谈话内容。...成员通常选择共享可以在其设备上播放的视频,这意味着它们可以被解码。而且由于大多数Android设备都以H.264压缩方式录制视频,因此我们可以使用该编解码器对视频进行编码。...以较低的性能为代价,这种方法允许使用软件解码器或帧内容感知逻辑(ML过滤器,超缩放等)。 LiTr结构 上面描述的代码转换过程是如何对单个轨道进行代码转换。...将使用所有代码转换更新来调用侦听器:开始,进度完成,错误,取消。每个侦听器回调中都会提供一个请求令牌。 粒度是所需的进度更新数量。默认值为100(以匹配在UI中显示的百分比)。

    2.5K20

    LiTr:适用于Android的轻量级视频音频转码器

    从Android设备发布视频时,成员可以使用其设备摄像头应用程序录制视频,也可以从图库中选择已经拍摄好的视频。上传后,视频将被转换为消费格式,并作为更新显示在Feed中。...在这篇文章中,我将对该演讲进行高层概述,包括我们如何构建LiTr架构,如何使用它来转换媒体以及为什么我们选择MediaCodec来访问硬件编码器。请参阅此处以录制谈话内容。...成员通常选择共享可以在其设备上播放的视频,这意味着它们可以被解码。而且由于大多数Android设备都以H.264压缩方式录制视频,因此我们可以使用该编解码器对视频进行编码。...以较低的性能为代价,这种方法允许使用软件解码器或帧内容感知逻辑(ML过滤器,超缩放等)。 LiTr结构 上面描述的代码转换过程是如何对单个轨道进行代码转换。...将使用所有代码转换更新来调用侦听器:开始,进度完成,错误,取消。每个侦听器回调中都会提供一个请求令牌。 粒度是所需的进度更新数量。默认值为100(以匹配在UI中显示的百分比)。

    3.5K20

    自定义手机壁纸_ios怎么自定义动态壁纸

    这些应用程序提供了最佳的选择,可为您带来令人兴奋的有趣手机背景。了解更多信息,您可以用来快速查找并应用任意数量的精美图片。...在右上角,点击+按钮进行浏览,从图库中选择一张图像,然后为图像指定预览区。 现在,您可以使用“模糊滑块”(提供各种程度的平滑模糊)和“ 8位复古滑块”(提供各种程度的雅致像素化)。...您还可以点击选择滤镜从数十种效果中进行选择,例如灰度,锐化,晕影和饱和度。 您可以做的最后一件事(完全是可选的)是在完成的墙纸顶部添加一些文本。...最后,您可以添加阴影(我真的很喜欢这种外观并推荐它),并使用颜色选择器调整“文本颜色”。 在过去的几年中,动态壁纸变得非常流行。 动态壁纸不是动态的,没有启发性的呆板静态背景,而是生动活泼的生活。...了解更多,以了解它们的含义,它们的强大程度,甚至可以下载一些试用版。 那你做了什么? 在下面的评论中与我们分享您定制的Android壁纸! 或者,如果您决定下载一个,请随时分享。

    2.2K20

    云服务器的N种玩法,拥有腾讯云服务器构建你的数字世界

    前端 HTML+css+js/vue 后端:PHP、JAVA、Django+Flask等等 当然你有这个能力从代码、本地测试、上线到运维。...PicGo 是一个轻量级的开源图床客户端,支持多个图床服务,可以用于上传图片到图库中。 包括本篇文章就是用Typora+PicGo+腾讯云对象存储,工具来写的文章。...星哥图库: https://p.xgss.net是利用开源PicHome搭建的图库系统 在电脑上用Billfish把平时拍的照片分门别类,在传到服务器中分享给亲朋好友,只是服务器带宽有点小,打开大图片有点慢...EasySpider 是一个可视化爬虫软件,可以使用图形化界面,无代码可视化的设计和执行爬虫任务。只需要在网页上选择自己想要爬的内容并根据提示框操作即可完成爬虫设计和执行。...蓝天采集器 采用PHP+Mysql开发已经过6年迭代更新,成熟稳定可部署在云端服务器和虚拟主机中,可视化操作使用浏览器即可采集数据,功能包括数据挖掘、分析、清洗、处理、发布等。

    24110

    《移动互联网技术》第五章 界面开发: 掌握Activity的基本概念,Activity的堆栈管理和生命周期

    而且,由于手机的各种资源有限(内存、电源等),Android系统在内存紧张的时候,往往会销毁当前没有使用的活动(不显示或不能响应的界面)。在系统中,活动将不断经历从创建到销毁的周期运行。...了解活动如何生存,以及活动整个生命周期的状态变迁,能更清楚地知道如何去实现活动。 从系统的角度来看,当Android应用(APP)启动运行时,就会创建一个任务(Task)。...从用户的角度来看,用户在使用Android应用的时候,经常打开多个界面(活动),完成一系列的操作,比如:用户要在浏览器中查看新闻就需要点击新闻列表,打开新闻浏览界面;如果想把刚才看到的新闻分享给微信中的朋友...接下来,获取知识点的图片Id号和标题文本,把它们显示在控件上。...如果Intent与多个组件都匹配成功,Android系统就会在对话框中显示所有匹配的组件,让用户去选择启动哪个组件。

    22510

    OpenCV 安卓编程示例:1~6 全

    我们将首先解释数字图像表示和不同的色彩空间,以探索 OpenCV 中重要的Mat类。 然后,我们将逐步执行从手机图库加载图像并将其显示在设备屏幕上的操作,而不管图像分辨率如何。...在本例中,我们选择了从 RGB 转换为灰度。 最后,我们显示灰度图像。...总结 到目前为止,您应该已经了解了如何在 OpenCV 中表示和存储图像。 您还开发了自己的暗室应用,从图库中加载图像,计算并显示其直方图,并在不同的颜色空间上执行直方图均衡化,以增强图像的外观。...因此,使用平行线估计角点不是我们的最佳选择,我们可以通过将投影线(从霍夫变换中找到的投影线)保持在图片中并使用简单的几何图形找到它们之间的交点来做得更好,以便找到四个角落。...UI 定义 创建具有空白活动PanoActivity的新应用并添加从设备库加载图像的功能以及加载 OpenCV 库之后,我们将在菜单项中添加第一个菜单项,来在加载的图片上执行哈里斯角点检测器。

    5.8K10

    安卓13又来了?快!扶起我来!

    下面咱们来看看 Android 13 都有哪些更新,并来看看开发者应该如何进行适配吧!...在 Android 12L(32)及更低版本中,用户经常不确定他们是否成功复制了内容或者复制了什么内容。此功能可将应用在用户复制内容后显示的各种通知标准化,并让用户可以更好地控制剪贴板。...定义分享限制应用可以声明 android.provider.extra.PICK_IMAGES_MAX 的值,该值表示在向用户显示时照片选择器中显示的媒体文件数量上限。.../*"上面代码中将只显示视频或者图片的 type 都写了下,大家可以按需进行使用。...下面是官方单色应用图标的图片展示:图片如何使用将 monochrome android:drawable 属性添加到 元素中。

    93240

    H5与原生混合开发总结

    ); MyWebViewHolder.getHolder().attach(parent); 在onDestroy时从界面中解除绑定: @Override protected void onDestroy...此时你会发现直接使用没法调用起系统相片图库和相机,更没法在旁边显示预览图,这时你可能需要这些配置: settings.setJavaScriptEnabled...可以先看看android-4-4-webview-file-chooser-not-opening, 而因为我不是直接调用图库选择,而是先开启一个BottomSheetDialog来选择是通过相机还是图库取图...第二种方案就是直接建立JS交互接口,点击图片选择控件后调用建立好的原生图片选择接口取图,当我们选好图之后在onActivityResult方法中执行JS方法将图片的本地路径传给JS处理,嗯,到这里的话好说...,尤其是使用相机直接拍照取图的情况,一张图片可能会有3~10M,直接编码为图片本身会比较耗时,而编码出来的字符串会存在于内存中,因此很有可能会导致Android端出现内存溢出的情况,因此这里可以考虑先压缩后编码

    1.5K20

    TensorFlow Lite,ML Kit 和 Flutter 移动深度学习:1~5

    第一个带有两个按钮的文本标题,允许用户从设备的图片库中选择图像或使用相机拍摄新图像。 此后,用户被引导至第二屏幕,该屏幕显示高亮显示检测到的面部而选择用于面部检测的图像。...放置文本标题后,我们现在将创建一行两个按钮,使用户可以从图库中选择图像或从相机中获取新图像。...一旦确定了图像的来源,就使用pickImage()来选择正确的imageSource。 如果源是Camera,则将引导用户到相机拍摄图像; 否则,将指示他们从图库中选择图片。...从图库中选择的图像将传递到模型,该模型将预测包含图像中显示的植物物种名称的标签。 模型存储在移动设备上,即使离线也可以使用模型。 设备上模型是在移动应用上使用深度学习的强大且首选的方式。...在屏幕上显示所选图像 现在,让我们添加一个小部件以显示在上一节中选择的图像,如下所示: 我们将使用小部件列表,从图库中选择的图像以及彼此堆叠或重叠的预测结果显示在屏幕上。

    18.7K10

    Android 11强制用户使用内置摄像头,谷歌让安卓更封闭了吗?

    作者丨核子可乐、小智 Android 11 强制使用内置摄像头,美颜相机们迎来闷头一棍? 在诞生之初,Android 系统一直努力强调自由与灵活的设计思路,倡导开发者可以通过代码实现任何功能。...此次更改的核心,在于 Android 定义的 Intent 系统。举个例子,当你在各大 App 如知乎、极客时间等选择更新头像时,你可以选择拍摄图片上传或者从手机图库上传。...在 Intent 系统中,开发者只需要根据相应条件创建一项请求,Android 就会提示用户从已安装的应用列表中做出选择,如下图: ?...至少在目前的 Android 11 beta 版中,这一设定已经切实起效,并影响到一切以 API 30 或更低版本为目标的应用程序。...有趣的是,当苹果表示不会为 Safari 浏览器的 WebKit 引擎中实现 16 个 Web API,理由是它们构成了隐私威胁时,谷歌的工程师认为苹果是在维护自己的蛋糕。 你怎么看?

    99920
    领券