• Unity 2021 请求 Android 12 读取本地文件权限


    目标

    工具:

    • Unity 2021.2.14c1f1
    • Android 12 系统手机

    目标:实现Unity打出来的Apk包能请求读写android手机本地文件权限

    原理

    在Android系统中,操作手机中不安全的数据时,需要配置相应的权限,只有经过用户许可才能使用,设置各种权限的原因在于保护用户隐私,那么当我们开发 unity 项目需要请求权限时,可以根据以下方式

    1. 基于 Unity 官方 API 实现申请 Android 权限,这样不需要在 Android 中写申请权限
    2. Unity 2019 起提供了 Permission 类申请 Android 权限,2021.3 版本 Unity 的API如下:
    静态属性含义描述
    Camera照相机在请求权限或检查是否已授予使用相机的权限时使用
    CoarseLocation粗略的用户位置定位在请求权限或检查是否已授予以粗粒度使用用户位置的权限时使用
    FineLocation精细的用户位置定位在请求权限或检查是否已授予高精度使用用户位置的权限时使用
    ExternalStorageRead外部存储(如SD卡)读取在请求权限或检查是否已授予从外部存储(如 SD 卡)读取的权限时使用
    ExternalStorageWrite外部存储(如SD卡)写入在请求权限或检查是否已授予写入外部存储(如 SD 卡)的权限时使用
    Microphone麦克风等权限在请求权限或检查是否已授予使用话筒的权限时使用

    unity 2021.3 官方文档 Permission 介绍


    实现

    1. 需要在 C# 代码中添加申请权限

    using UnityEngine.Android;
    ...
    #if UNITY_ANDROID
        //安卓平台要请求从外部设备读写权限,如果安装后通过了权限请求,则以后这个APP就不会弹出请求权限框
        //但若安装后请求多次权限,都不通过,则多次后就不会弹出请求权限框
        
        //请求从 (SD 卡等)外部存储读取的权限
        if (!Permission.HasUserAuthorizedPermission(Permission.ExternalStorageRead)) {
            Permission.RequestUserPermission(Permission.ExternalStorageRead);
        }
        
        //请求 写入外部存储(如 SD 卡)的权限       
        if (!Permission.HasUserAuthorizedPermission(Permission.ExternalStorageWrite)) {
            Permission.RequestUserPermission(Permission.ExternalStorageWrite);
        }
    #endif
    ...
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    这里只请求外部存储设备的读写权限,其他权限可以参考 Permission API 实现:
    在这里插入图片描述

    2. 需要在 manifest 文件中声明权限

    unity 打 apk 时生成 manifest 文件模板可以手动配置:File > BuildSettings > PlayerSettings > Player > PublishingSettings,启用 CustomMainManifest,表示可以自定义 AndroidManifest.xml 文件

    在这里插入图片描述
    通过路径找到对应的 AndroidManifest.xml 文件:

    在这里插入图片描述

    在 application 标签上面添加所需要的安卓权限的声明:在这里插入图片描述

    保存后,打APK包运行即可看到在运行到 C# 代码时,请求安卓权限

  • 相关阅读:
    jmeter压力测试工具,雪崩效应,容错组件Sentinel
    使用Docker构建、共享和运行WebAssembly应用程序
    自己理解的TCP三次握手
    安全狗又拿下一场重保胜战 第22届投洽会顺利谢幕
    【单片机】16-LCD1602和12864和LCD9648显示器
    JS-cookie函数封装方法
    idea docker插件安装及使用
    个人信用风险评估项目
    一文详解构造函数和析构函数
    香港高端人才通行证计划申请(包括条件)你需要知道的这些真相!
  • 原文地址:https://blog.csdn.net/qq_36804363/article/details/128129286