当前位置: 首页 > article >正文

Android14新权限机制

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


http://www.kler.cn/news/17770.html

相关文章:

  • 2023-05-04 LeetCode每日一题(摘水果)
  • 行为型模式-解释器模式
  • 了解进程控制
  • 错题汇总03
  • 顺序表和链表优缺点以及区别
  • MySQL索引
  • 涨薪60%,从小厂逆袭,坐上美团技术专家(面经+心得)
  • Java——和为S的连续正数序列
  • 【C++】机房预约系统
  • 使用【SD-WEBUI】插件生成单张图包含多个人物:分区域的提示词
  • bevfusion
  • Java线程池
  • 等保定级怎么做
  • spring boot整合Hibernate Validator分组校验
  • 如何在Firefox中使用最小字体
  • 基于Vue的个性化网络学习笔记系统
  • PBDB Data Service:Basis and precision of coordinates(坐标的基础和精度)
  • 学习Transformer前言(Self Attention Multi head self attention)
  • (5)Qt—ui常用类
  • webconsole使用方法(fastapi框架)
  • 【第四篇:解决校招面试中的测试设计题目】
  • 蓝牙耳机什么牌子好?500内好用的蓝牙耳机推荐
  • Oracle 修改 sga_target 参数设置,虚拟内存值设置
  • 如何设计一个可扩展的优惠券功能
  • 磁盘U盘变本地磁盘寻回教程
  • 古剑飞仙手游Linux系统服务器架设教程
  • “中特估”乘风破浪!后续机遇在哪?
  • Java9比Java8改进了什么
  • SHOP.COM EDI需求分析
  • PHP程序员和Python程序员的职业前景怎么样?我来聊聊自己的体会