当前位置: 首页 > 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/a/17770.html

相关文章:

  • Linux设置socks代理
  • git commit 校验
  • go reflect 反射
  • Labelme标注数据的一些操作
  • PCL 点云分割 基于CPC算法的分割
  • 鸿蒙华为商城APP案例
  • 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框架)