Android14新权限机制

Android14引入了一个新权限,让用户可以选择只授予应用访问特定照片或视频的权限,而不是整个媒体库。READ_MEDIA_VISUAL_USER_SELECTED权限提供了部分和临时的访问,当需要更多媒体时,应用需再次请求相应权限。开发者需要更新AndroidManifest.xml并使用新的ActivityResultContract来请求权限。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Android14新权限机制

new-permission-policy for android 14
在本文中,我们将了解 Android14 的新权限,该权限允许用户仅授予对选定媒体(照片/视频)的访问权限,而不是整个库
这个新权限允许用户在我们的应用程序运行时授予部分访问权限 mediaAndroid14 or higher

新权限对话框

它有3个选项
您将看到新选项反映了您的要求。如果用户请求照片,将出现以下对话框。

新权限的权限对话框

声明新权限的效果

通过声明READ_MEDIA_VISUAL_USER_SELECTED,我们让权限控制器知道我们的应用程序支持手动重新请求选择更多媒体

对行为的影响

当我们声明READ_MEDIA_VISUAL_USER_SELECTED这个新权限和用户时selects Select photos and videos(Select photos or Select videos)

  • READ_MEDIA_IMAGES权限和READ_MEDIA_VIDEO都被拒绝了
  • READ_MEDIA_VISUAL_USER_SELECTED授予权限✅ ,提供部分和临时访问用户的照片和视频(照片或视频)
  • 稍后,如果我们需要访问其他照片和视频,我们必须手动 请求 READ_MEDIA_IMAGESREAD_MEDIA_VIDEO权限(或两者)。

实现

  • 将以下权限添加到AndroidManifest.xml
< uses-permission  android:name = "android.permission.READ_MEDIA_IMAGES" />
 // 新权限
< uses-permission  android:name = "android.permission.READ_MEDIA_VISUAL_USER_SELECTED" />
  • 使用请求权限ActivityResultContract

我们需要使用READ_MEDIA_IMAGESREAD_MEDIA_VIDEO权限进行请求,所以我们使用RequestMultiplePermissions

val permissionLauncher = 
    rememberLauncherForActivityResult(ActivityResultContracts.RequestMultiplePermissions()) { mapResults -> 
        mapResults.forEach { 
            Log.d(TAG, "Permission: ${it.key} Status: ${it.value} " ) 
        } 
        // 检查是否有请求的权限是否被授予
        if (mapResults.values.any { it }) { 
            // 查询内容解析器
            queryContentResolver(context) { listOfImages -> 
                imageDataModelList = listOfImages 
            } 
        } 
    }
  • 发起权限请求
OutlinedButton(onClick = {
    permissionLauncher.launch(arrayOf(READ_MEDIA_IMAGES, READ_MEDIA_VISUAL_USER_SELECTED))
}) {
    Text("Allow to read all or select images")
}

new-permission-dialog
Demo示例代码:
https://github.com/navczydev/Android14Samples/tree/more-permisisons

参考

https://android-developers.googleblog.com/2023/03/android-14-developer-preview-2.html

https://developer.android.com/about/versions/14/changes/partial-photo-video-access

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Calvin880828

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值