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

Android Kotlin - registerForActivityResult选择图像或视频文件

Android Kotlin中,registerForActivityResult函数用于注册一个ActivityResultLauncher,用于选择图像或视频文件。该函数接受两个参数:一个ActivityResultContract对象和一个回调函数。

ActivityResultContract是一个抽象类,用于定义Activity之间的交互协议。在选择图像或视频文件的情况下,我们可以使用以下内置的ActivityResultContracts类:

  1. ActivityResultContracts.GetContent:用于选择图像或视频文件。它会打开系统的文件选择器,并返回所选文件的URI。

回调函数是一个lambda表达式,用于处理选择文件后的结果。它接受一个ActivityResult对象作为参数,该对象包含选择的文件的URI。

以下是一个示例代码:

代码语言:txt
复制
val getContent = registerForActivityResult(ActivityResultContracts.GetContent()) { uri: Uri? ->
    // 处理选择的文件URI
    if (uri != null) {
        // 执行相关操作
    }
}

// 在需要选择图像或视频文件的地方调用该函数
getContent.launch("image/*") // 可以指定MIME类型,例如"image/*"选择图像文件,"video/*"选择视频文件

在上述示例中,我们使用registerForActivityResult函数注册了一个ActivityResultLauncher,使用ActivityResultContracts.GetContent作为协议,用于选择图像或视频文件。回调函数中处理选择的文件URI,并执行相关操作。

推荐的腾讯云相关产品:腾讯云对象存储(COS)是一种安全、低成本、高可靠的云存储服务,适用于存储和处理图像、视频等多媒体文件。您可以通过以下链接了解更多信息:腾讯云对象存储(COS)

请注意,以上答案仅供参考,具体的技术实现和推荐产品可能因实际需求和环境而异。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

startActivityForResult被标记为弃用后,如何优雅的启动Activity?

但其原因已不重要了,因为既然Android里已提供了更好的方案并把startActivityForResult标记为了弃用,那么我们就应该开始了解一下位于 ComponentActivity Fragment...同时,引用一个官方文档的警告 ↓ 注意:虽然在 fragment activity 创建完毕之前可安全地调用 registerForActivityResult(),但在 fragment activity...选择文件 MIME类型 文件Uri OpenDocumentTree 通过Intent.ACTION_OPEN_DOCUMENT_TREE选择一个目录,返回一个Uri并得到该目录下全部文档的管理权 目录初始位置...Uri 选择目录Uri OpenMultipleDocuments 通过Intent.ACTION_OPEN_DOCUMENT及Intent.EXTRA_ALLOW_MULTIPLE获取一个多个文件...-> // code = resultCode } } /** * Kotlin协程挂起函数 * 4 种方式 */ fun startActivityForResultCoroutine

2.1K20

Android图片拍照选择图片功能实例代码

前言 一般公司都有更换用户头像功能,需要从图库中选择图片或者拍照,基本还会对图片进行裁剪。最近抽空就做了一些简单的封装,方便以后使用。主要是用了建造者模式,链式调用,方便简单。...<paths xmlns:android="http://schemas.android.com/apk/res/android" <external-path name="external"..." android:authorities="${applicationId}.fileprovider" android:exported="false" android:grantUriPermissions...="true" <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@...图片拍照选择图片(本地下载) 好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对ZaLou.Cn的支持。

99420

Android开发笔记(一百八十)使用Glide加载特殊图像

Android从9.0开始增加了新的图像解码器ImageDecoder,该解码器支持直接读取GIF文件的图形数据,结合图形工具Animatable即可在图像视图上显示GIF动图。...虽然通过ImageDecoder能够在界面上播放GIF动画,但是一方面实现代码有些臃肿,另一方面在Android9.0之后才支持,显然不太好用。...除了支持GIF动画,Glide甚至还能自动加载视频封面,也就是把某个视频文件的首帧画面渲染到图像视图上。这个功能可谓是非常实在,先展示视频封面,等用户点击后再开始播放,可以有效防止资源浪费。...视频挑选与封面加载代码示例如下: // 注册一个善后工作的活动结果启动器,获取指定类型的内容 ActivityResultLauncher launcher = registerForActivityResult...点此查看Android开发笔记的完整目录

1.2K10

Android 11来了!更多Kotlin支持Java退出安卓舞台

新智元报道 编辑:鹏飞、白峰 【新智元导读】Google今天发布了首个具有最终SDK以及几十个新功能的Android 11 Beta版,重点更新了通知栏和一个电源菜单,新增了Kotlin协程支持,一起来尝鲜吧...kotlin初见成效,Java地位有所撼动 在去年的开发者大会上,Google 官方正式宣布,Kotlin 将取代Java成为 Android 应用程序开发人员的首选语言。...Google 在Android 11中加入了 Kotlin 协程支持,这是一种语言功能,使并发调用更容易编写和理解,Android 开发人员现在可以更容易地编写和读取并发调用。...Google越来越多地支持Kotlin一点也不令人意外,Kotlin是开源的,而且跟Java完全互通,很多特性还优于Java。...所以,Google选择了一门新生的语言来逐步替代Java。而对开发者来说,无论是Java还是Kotlin占主导都不太紧要,拥抱变化才是最好的选择

96820

【Jetpack更新之Fragment】1.3.0-alpha04 来袭,Fragment 间通信的新姿势

startActivityForResult()/onActivityResult() 和 requestPermissions()/onRequestPermissionsResult() 弃用 prepareCall() 重命名为 registerForActivityResult...文章介绍的很详尽,这里不再赘述 prepareCall 重命名 值得注意的地方是 prepareCall() 被命名为 registerForActivityResult() ❝注意:在版本处于 Alpha...版状态时,可以添加、移除更改 API。...这种传递数据的方式适用于 DialogFragment ,Navigation 中的 fragment 此更改还包括 -ktx 扩展功能以确保 kotlin 用户可以将 FragmentResultListener...FragmentManager 的 ❞ 总结 官方一直致力于将 fragment 的 api 变得更好用 Ian Lake 在 Fragments: Past, Present, and Future (Android

1.4K20

Activity Result API详解,是时候放弃startActivityForResult了「建议收藏」

如果你将项目中的appcompat库升级到1.3.0更高的版本,你会发现startActivityForResult()方法已经被废弃了。...这个方法相信所有做过Android的开发者都用过,它主要是用于在两个Activity之间交换数据的。 那么为什么这个如此常用的方法会被废弃呢?...我们完全移除了对onActivityResult()方法的重写,而是调用registerForActivityResult()方法来注册一个对Activity结果的监听。...registerForActivityResult()方法的返回值是一个ActivityResultLauncher对象,这个对象当中有一个launch()方法可以用于去启用Intent。...如果想要学习Kotlin和最新的Android知识,可以参考我的新书 《第一行代码 第3版》,点击此处查看详情。

75630

AndroidQ兼容性适配指南

); 限制了对剪贴板数据的访问权限 除非您的应用是默认输入法 (IME) 或是目前处于焦点的应用,否则它无法访问 Android 10 更高版本平台上的剪贴板数据。...如果应用以Android 10更高版本为目标平台,则您必须在应用的清单文件中声明ACCESS_BACKGROUND_LOCATION权限并接收用户权限,才能在应用位于后台时接收定期位置信息更新。...借助 SAF,用户可轻松在其所有首选文档存储提供程序中浏览并打开文档、图像及其他文件。用户可通过易用的标准界面,以统一方式在所有应用和提供程序中浏览文件,以及访问最近使用的文件。...使用SAF选择单个文件 通过Intent.ACTION_OPEN_DOCUMENT调文件选择界面,用户选择并返回一个多个现有文档,所有选定的文档均具有持久的读写权限授予,直至设备重启。...问题分析2: 在Android Q上,使用MediaStore接口只能访问公共目录中的多媒体文件。 解决方法2: 使用SAF向用户申请文件目录的读写权限,请参见使用SAF选择单个文件。

7K30

使用 Jetpack ActivityResult 处理 Activity 之间的数据通信

作者 / Yacine Rezgui 无论您是在应用中请求某项权限,从文件管理系统中选择某个文件,还是期望从第三方应用中获取到某些数据,都会涉及到在 Activity 之间传递数据,而这也正是 Android...但是这样的处理方式会让我们的代码变得非常复杂,并且也无法保证在 Activity 发送接收数据时参数的类型安全。...val getContent = registerForActivityResult(GetContent()) { uri: Uri?...您可以设置一个 mime 类型的过滤器对所选文件进行过滤,GetContent.launch() 接收一个字符串作为参数: val getContent = registerForActivityResult...findViewById(R.id.select_button) selectButton.setOnClickListener { // 传入您想让用户选择

31810

Android Ble蓝牙App(一)扫描

中如果要对ViewBinding进行封装的话同时利用上Kotlin的一些特性的话,可以这样做,原文地址如下:Viewbinding使用和委托封装,感觉写得蛮好的,太久没用Kotlin了,还是看了一会才看懂...import android.view.LayoutInflater import androidx.viewbinding.ViewBinding import kotlin.properties.ReadOnlyProperty..."/> ① 增加UI布局   动态权限请求有两种方式,一种是进入这个页面一下子请求多个权限,另一种是一个一个来请求,让你知道为什么会请求这个权限,这里我们选择第二种,因此需要增加一些布局xml,如下图所示的布局...attr/actionBarSize" android:background="@color/orange" app:title="选择蓝牙设备" app...= null//gatt ) 扫描的结果我们可以用列表来展示,选择使用RecyclerView,那么相应的会使用到适配器。

81360

Android 13运行时权限变更一览

在这篇文章中,有这样的一处描述: Android 10系统针对文件类型进行了分类,图片、音频、视频这三类文件将可以通过MediaStore API来进行访问,而其他类型的文件则需要使用系统的文件选择器来进行访问...而如果你要读取其他应用程序向媒体库贡献的图片、音频视频,则必须要申请READ_EXTERNAL_STORAGE权限才行。...而如果用户在此时选择了Don’t allow,就将没有机会再次看到这个对话框了,也就是用户永久拒绝了我们发送通知的权限。直到以下两个情况发生: 用户卸载并重新安装了我们的应用。...我们将targetSdk升级到了33更高。 另外,当用户的手机从Android 12升级到了Android 13,已安装应用的发送通知能力并不会发生变化。...如果想要学习Kotlin和最新的Android知识,可以参考我的新书 《第一行代码 第3版》,点击此处查看详情。

3.1K30

Jetpack:使用 ActivityResult 处理 Activity 之间的数据通信

Android中,我们如果想在Activity之间双向传递数据,需要使用startActivityForResult启动,然后在onActivityResult中处理返回,另外申请权限也是类似的步骤。...但是这样的处理方式会让我们的代码变得非常复杂,并且也无法保证在 Activity 发送接收数据时参数的类型安全。...这些协定为一些常见操作 (比如: 拍照请求权限) 定义了预期的输入和输出类型,除此之外您还能够自定义协定来满足不同场景的需求。...ActivityResult使用 使用ActivityResult先添加依赖: dependencies { // 在 https://developer.android.google.cn/jetpack...activity_version" implementation "androidx.fragment:fragment:$fragment_version” } 然后先看看最简单的使用方式,比如打开系统文件管理器选择一个图片

97230

Android 低功耗蓝牙开发(扫描、连接、数据交互)Kotlin

,再加上我也想写一些关于Kotlin的内容,对于低功耗蓝牙的Java版的,我写了两篇,一个是扫描、连接,另一篇就是数据交互,而这篇Kotlin文章我会减少讲解的环节,更多的注重业务逻辑和UI以及Kotlin...时间越久你就越觉得Kotlin设计的好,非常的简洁。...当然最主要的是多使用Kotlin,作为弱类型语言,代码的阅读需要有一定的Kotlin基础才可以,高阶的写法可读性很差,但是效率很高代码也很简洁。...后面我就直接写Kotlin代码,不熟悉的可以留言提问,事先声明我的Kotlin很菜,所以可读性相对来说高一些。 从上面的方法中可以知道逻辑就是Android6.0以上就请求权限,以下就打开蓝牙。...高版本中弃用了startActivityForResult,改用registerForActivityResult

2.7K31
领券