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

news2024/12/23 0:16:38

目标

工具:

  • 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
...

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

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

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

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

在这里插入图片描述

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/51464.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[附源码]JAVA毕业设计个人信息管理系统(系统+LW)

[附源码]JAVA毕业设计个人信息管理系统(系统LW) 目运行 环境项配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术…

深度学习-第三章概率与信息论

前言 概率论学科定义概率与信息论在人工智能领域的应用 3.1,为什么要使用概率论3.2,随机变量3.3,概率分布 3.3.1,离散型变量和概率质量函数3.3.2,连续型变量和概率密度分布函数 3.4,边缘概率3.5&#xff0c…

量子计算新突破!来源于150年前的思想实验

澳大利亚新南威尔士大学的研究表明,使用现代版本的“麦克斯韦妖”,可将量子比特重置为“0”态的错误减少了20倍。 Andrea Morello教授解释了麦克斯韦妖思想实验如何与他的团队通过仅选择冷电子进行量子计算的成就相类比。(图片来源&#xff1…

Go-Windows环境的快速搭建

下载 Downloads - The Go Programming Language 或者直接到指定版本下载可以根据个人喜好,下载zip或者执行版 下载后文件夹 查看版本 必须查看版本,通过go version命令进行查看最新版本1.19.3版本 配置的GoPath 已经自动配置进去 需要重新进入一个新的…

HBuilder X 导入git项目以及拉取和推送

1. 首先在 HB中 > 工具 > 插件安装 > Git插件 2. 安装好 Git 插件之后还要安装一个 tortoisegit (小乌龟) tortoisegit : 这里根据电脑下载对应的位数,需要转换成中文的可以下载中文包: 安装 tortoisegit : 1. 双击刚刚下载的msi文件进入安装 2. 连续两次next之后…

[附源码]计算机毕业设计JAVA校园环境保护监督系统

[附源码]计算机毕业设计JAVA校园环境保护监督系统 项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM my…

虚拟机NAL模式连接linux系统

windows虚拟机连外网,相当于设置双网卡,虚拟机编辑网关如下: 在window系统查看设置vmnet8 在linux系统配置ip静态网址 cd /etc/sysconfig/network-scripts/ vim ifcfg-ens33在linux上重启网卡。 在window上添加路由,先查询路由&a…

C语言经典题目之字符串逆序

目录 一、字符串逆序(基础题) 1.一个经典的错误,标准的零分 2.采用gets函数来修补漏洞 ​编辑 3.非要使用scanf怎么办? 4.使用指针来实现逆序函数 5.将函数修改为,只要传入两个地址,就能逆序这两个地址…

最新 | VDA-ISA5.0.4最新版本发布,汽车企业如何增强信息安全?

汽车行业拥有广泛而复杂的供应链,包括汽车整车制造商、不同层级的零部件厂商、供应商、服务商等众多企业。在这个链条上,其中任何一家企业的网络安全问题不论是数据泄密还是内外部攻击都有可能对整个供应链造成巨大影响。 比如2021年6月,某德…

Apifox很难不爱

一、背景 项目开发我们都知道在一个项目团队中是由很多角色组成,最常见团队的就是前端开发工程师、客户端开发工程师、服务端开发工程师组成一个团队,团队之间进行合作,一般我们都离不开API接口管理和测试,API接口管理可以理解为前…

推荐,文本转图像,图像转图像运营再也不用担心配图了

由 CompVis 领导的 Stable Diffusion V1 改变了开源人工智能模型的性质,并在全球范围内催生了数百个其他模型和创新。Stable Diffusion 如今也是所有软件中最快攀升至 Github 10K Stars 的软件之一,在不到两个月的时间里,它的 Stars 飙升至 3…

【内网安全】——windows信息收集

作者名:Demo不是emo 主页面链接:主页传送门 创作初心:舞台再大,你不上台,永远是观众,没人会关心你努不努力,摔的痛不痛,他们只会看你最后站在什么位置,然后羡慕或鄙夷座…

Nginx安装

目录 1. 安装必要环境 1.1 需要安装gcc环境 1.2 PERE 1.3 zlib 1.4 openssl 2. 安装nginx 2.1 下载和解压 2.2 编译 2.2.1 设定配置 2.2.2 编译 2.2.3 安装 3. 启动nginx 4. 配置环境变量 5. 加入system管理 1. 下载Nginx 1. 安装必要环境 1.1 需要安装gcc环境 y…

基于PHP+MySQL学院信息发布系统的设计与实现

再添加完最新动态后可以点击最新动态管理,对已经添加过的最新动态进行编辑和删除,绑定的主要信息包括用文章标题,发布人,发布时间,文章类型,内容等信息 信息技术学院信息发布系统,是一个为学校提供信息的平台,是完全的,高速的,开放的,其核心思想是提供一个以自然语言为主的用户…

算法竞赛入门【码蹄集进阶塔335题】(MT2276-2280)

算法竞赛入门【码蹄集进阶塔335题】(MT2276-2280) 文章目录算法竞赛入门【码蹄集进阶塔335题】(MT2276-2280)前言为什么突然想学算法了?为什么选择码蹄集作为刷题软件?目录1. MT2276 数的自我2. MT2277 分数个数3. MT2278 欧拉函数…

[附源码]Python计算机毕业设计Django房屋租赁系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

Web3 来了,让我们展开双手拥抱它吧!

Web3的由来 在介绍Web3概念,有必要阐述下当下的网络世界。而如今的互联网正处于Web2阶段,其已经帮助数以亿计的人融入这个互联网大家庭,可在网络上构建可靠、稳定的基础设施。然而也正是Web2中心化网络成就了极少数互联网巨头,他…

基于STM32的智能家居控制系统设计与实现(带红外遥控控制空调)

1. 前言 智能家居作为家庭信息化的实现方式,已经成为社会信息化发展的重要组成部分,物联网因其巨大的应用前景,将是智能家居产业发展过程中一个比较现实的突破口,对智能家居的产业发展具有重大意义。 本文基于现有智能家居技术设计和实现情况,本着方便操作、增强功能、贴…

Xilinx的TestPattern模块编译错误解决方法

在使用vivado 2018.3编译tpg模块的时候报错,软件提示找不到编译模块,如下: 经过多方咨询后,据说是vivado的版本问题引起的,使用这个版本在2022年之前不会出现问题,因此如果把windows的系统时间修改到2021年…

(论文阅读笔记)Network planning with deep reinforcement learning

[1] ZHU, Hang, et al. Network planning with deep reinforcement learning. In: Proceedings of the 2021 ACM SIGCOMM 2021 Conference. 2021. p. 258-271. Citation: 25文章目录Q1 论文试图解决什么问题?Q2 这是否是一个新的问题?Q4 有哪些相关研究&…