AndroID读写权限

在配置  READ_EXTERNAL_STORAGE 和 WRITE_EXTERNAL_STORAGE 权限时,发现申请权限时,这二项权限已经无反应了;

查看网上资料后,发现实际情况如下:

1. 在 Android 13 (API Level 33) 之前,是需要申请上述2个权限,用于读写外部存储数据;

2. 从 Android 13 开始,安卓将 READ_EXTERNAL_STORAGE  权限,作了细分

  >  READ_MEDIA_IMAGES 、  READ_MEDIA_VIDEO、READ_MEDIA_AUDIO

       >  从Android 13 开始,权限申请时,要使用上述3项(按需申请)

3. 为兼容高低不同版本的AndroID设备,需要对权限申请做识别处理 (  System.Permissions, Androidapi.Helpers, Androidapi.Jni.Os )

  > 识别依据( Delphi ): TJBuild_VERSION.JavaClass.SDK_INT;  (取的是设备的 API Level)

复制代码
 1 var
 2   tmpPermissions: TArray<String>;
 3   tmpSDKVersion: Integer;
 4 begin
 5   tmpSDKVersion := TJBuild_VERSION.JavaClass.SDK_INT;
 6 
 7   if tmpSDKVersion >= 33 then // Android 13及之后
 8   begin
 9     tmpPermissions := [JStringToString(TJManifest_permission.JavaClass.CAMERA),  //相机权限
10       JStringToString(TJManifest_permission.JavaClass.READ_MEDIA_IMAGES),       //图片
11       JStringToString(TJManifest_permission.JavaClass.READ_MEDIA_VIDEO)];       //视频
12   end
13   else // AndroID 13之前
14   begin
15     tmpPermissions := [JStringToString(TJManifest_permission.JavaClass.CAMERA),    //相机
16       JStringToString(TJManifest_permission.JavaClass.READ_EXTERNAL_STORAGE),      //读 
17       JStringToString(TJManifest_permission.JavaClass.WRITE_EXTERNAL_STORAGE)];    //写
18   end;
19 
20   // 申请权限
21   Permissionsservice.RequestPermissions(tmpPermissions,
22     RequestPermissionsResult, DisplayRationale);
23 end;
复制代码

4. 关于 WRITE_EXTERNAL_STORAGE 权限,按网上资料所查,此权限是会被弃用的;

    而且此权限在大多数情况下,基本不会再用到了;

 

posted @   耗喜天涯  阅读(205)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
历史上的今天:
2022-12-07 TS.002.编译首个TS文件,并编译生成JS文件,再Node运行
2022-12-07 TS.001. 安装 编译TS 的工具包
点击右上角即可分享
微信分享提示