- 原文: medium.com/proandroidd…
- 译者:程序员 DHL
- 本文已收录于库房 Technical-Article-Translation
这篇文章,首要共享在 Android 14 以上新增的权限 READ_MEDIA_VISUAL_USER_SELECTED
,该权限答使用户仅授予对选定媒体的拜访权限(Photos / Videos)),而不是拜访整个媒体库。
新的权限弹窗
当你的 App 运转在 Andrid 14 以上的设备时,假如恳求拜访相片,会出现以下对话框,你将看到新的选项。
受影响的行为
当咱们在项目中声明新的权限 READ_MEDIA_VISUAL_USER_SELECTED
,而且用户挑选 Select photos and videos(Select photos or Select videos)
:
-
READ_MEDIA_IMAGES
和READ_MEDIA_VIDEO
权限都会被拒绝 -
READ_MEDIA_VISUAL_USER_SELECTED
权限被授予时,将会被答应暂时拜访用户的相片和视频 -
假如咱们需求拜访其他相片和视频,咱们需求同时请求
READ_MEDIA_IMAGES
或者READ_MEDIA_VIDEO
权限
如何在项目中运用新的权限
- 在
AndroidManifest.xml
文件中添加下面的权限
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
// new permisison
<uses-permission android:name="android.permission.READ_MEDIA_VISUAL_USER_SELECTED" />
- 运用
ActivityResultContract
恳求新的权限
val permissionLauncher =
rememberLauncherForActivityResult(ActivityResultContracts.RequestMultiplePermissions()) { mapResults ->
mapResults.forEach {
Log.d(TAG, "Permission: ${it.key} Status: ${it.value}")
}
// check if any of the requested permissions is granted or not
if (mapResults.values.any { it }) {
// query the content resolver
queryContentResolver(context) { listOfImages ->
imageDataModelList = listOfImages
}
}
}
为什么要运用 RequestMultiplePermissions
,由于咱们需求同时恳求 READ_MEDIA_IMAGES
, READ_MEDIA_VIDEO
权限
- 发动权限请求流程
OutlinedButton(onClick = {
permissionLauncher.launch(arrayOf(READ_MEDIA_IMAGES, READ_MEDIA_VISUAL_USER_SELECTED))
}) {
Text("Allow to read all or select images")
}
关于 Android 12 、 Android 13 、Android 14 功能和权限的变更,点击下方链接前往检查:
-
快速适配 Android 14
-
Android 13这些权限抛弃,你的使用受影响了吗?
-
Android 12 已来,你的 App 溃散了吗?
最终咱们看一下运转效果
全文到这里就完毕了,感谢你的阅览,坚持原创不易,欢迎在看、点赞、共享给身边的小伙伴,我会继续共享原创干货!!!
我开了一个云同步编译东西(SyncKit),首要用于本地写代码,同步到长途设备,在长途设备上进行编译,最终将编译的结果同步到本地,代码现已上传到 Github,欢迎前往库房 hi-dhl/SyncKit 检查。
- 库房 SyncKit:https://github.com/hi-dhl/SyncKit
- 下载地址:https://github.com/hi-dhl/SyncKit/releases
Hi 大家好,我是 DHL,上任于美团、快手、小米。大众号:ByteCode ,共享有用、风趣的硬核原创内容,Kotlin、Jetpack、性能优化、系统源码、算法及数据结构、动画、大厂面经,真诚引荐你关注我。
- 大众号:ByteCode
- 哔哩哔哩: space.bilibili.com/498153238
- : juejin.im/user/259450…
- 博客: hi-dhl.com
- Github: github.com/hi-dhl
最新文章
- 国外大厂面试题, 7 个 Android Lifecycle 重要的知识点
- Android 13这些权限抛弃,你的使用受影响了吗?
- Android 12 已来,你的 App 溃散了吗?
- Android 利器,我开发了云同步编译东西
- Twitter 上风趣的代码
- 谁动了我的内存,揭秘 OOM 溃散下降 90% 的隐秘
- 反射技巧让你的性能提升 N 倍
- 90%人不懂的泛型局限性,泛型擦除,星投影
- 揭秘反射真的很耗时吗,射 10 万次耗时多久
- Google 宣告抛弃 LiveData.observe 方法
- 影响性能的 Kotlin 代码(一)
- 揭秘 Kotlin 中的 == 和 ===
开源新项目
-
云同步编译东西(SyncKit),本地写代码,长途编译,欢迎前去检查 SyncKit
-
KtKit 小巧而有用,用 Kotlin 言语编写的东西库,欢迎前去检查 KtKit
-
最全、最新的 AndroidX Jetpack 相关组件的实战项目以及相关组件原理剖析文章,正在逐步添加 Jetpack 新成员,库房继续更新,欢迎前去检查 AndroidX-Jetpack-Practice
-
LeetCode / 剑指 offer,包含多种解题思路、时刻复杂度、空间复杂度剖析,在线阅览