unity UnauthorizedAccessException: 拒绝访问路径

@CSDN冰翼无痕冰翼无痕-CSDN博客感谢支持!

大约安卓从9版本后,开使有权限控制,禁止软件自由访问存储,原先还可以通过root来跨越,要不就是通过热更的方式对文件进行动态写入。

当然还存在其他方式,比如将文件提前放入系统中,放到磁盘里,安卓默认根路径为:

cs 复制代码
"/storage/emulated/0" +"根目录创建的文件夹名称"

可以根据这个路径在后面添加文件夹

当读取不到时,出现错误,请检查以下设置:

1、unity 中设置 File->PlayerSettings->Player下

1)下图上面两个APIlevel不要设置30以上(除非您的官网推荐了这个级别以上)

2)两个安卓版本保持一致

3)write Permission 设置为 Extermal(SDCard)

2、如果还不行

在 Assets\Plugins\Android下,添加权限文件:

AndroidManifest.xml

具体操作原因参见:应用清单概览 | App architecture | Android Developers

文件内容如下:可根据您的项目进行修改

css 复制代码
<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools">
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<application>
<activity android:name="com.unity3d.player.UnityPlayerActivity" android:theme="@style/UnityThemeSelector">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
<meta-data android:name="unityplayer.UnityActivity" android:value="true"/>
</activity>
</application>
</manifest>

3、读取文件API要使用

比如:

cs 复制代码
使用
FileStream stream = new FileStream(inputFile, FileMode.Open, FileAccess.Read);
//或
string[] lines = System.IO.File.ReadAllLines(path);
//或
File.SetAttributes(filePath, FileAttributes.Normal);

使用IO流,参见API文档

依次对应关联文档:

FileAccess.Read:

名称 值 说明
Read 1 对文件的读访问。 可从文件中读取数据。 与 Write 组合以进行读写访问。
ReadWrite 3 对文件的读写访问权限。 可从文件读取数据和将数据写入文件。
Write 2 文件的写访问。 可将数据写入文件。 与 Read 组合以进行读写访问。

System.IO.File.ReadAllLines 这个多半会被unity自己转换成其他端口,具体得看源码

|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------|
| ReadAllLines(String) | 打开一个文本文件,读取文件的所有行,然后关闭该文件。 |
| ReadAllLines(String, Encoding) | 打开一个文件,使用指定的编码读取文件的所有行,然后关闭该文件。 |

FileAttributes.Normal

|--------|-----|--------------------------------------------------------------------------|
| Normal | 128 | 该文件是没有特殊属性的标准文件。 仅当其单独使用时,此特性才有效。 Normal 在 Windows、Linux 和 macOS 上受支持。 |

相关推荐
魔士于安5 天前
unity 丑陋哥布林 哥布林有humannoid 动画没 带动画
unity·游戏引擎·材质·贴图·模型
小贺儿开发6 天前
Unity 家居视频遥控(细节优化)
科技·unity·程序员·udp·视频·工具·通信
淡海水6 天前
13-04-面试-源码级深度追问链
数据结构·unity·面试·c#·游戏引擎·源码·il2cpp
小小数媒成员6 天前
UGUI 性能优化(详细,全,深入)
开发语言·unity·游戏引擎
林川~017 天前
Unity新输入系统使用笔记
unity·input system
小贺儿开发7 天前
Unity 结合百度AI开放平台 手写文字识别
人工智能·科技·学习·unity·云服务·文字识别·手写文字
goujunwe7 天前
GEO 评估方法:如何自测你的内容,会不会被 AI 引用
搜索引擎·网络安全·游戏引擎·全文检索·中文分词
林川~018 天前
Unity 万能物理检测工具:射线检测 / 范围检测 / 层级过滤 / 编辑器可视化(可直接拿去用)
游戏·unity·c#·射线检测·通用工具
yi碗汤园8 天前
MQTT消息队列遥测传输协议
网络·网络协议·unity
林川~018 天前
Unity 常用 API 与核心类全解:从生命周期到协程,附性能避坑清单(Unity 6 适配)
unity·游戏引擎·常用api