Unity3D未授权访问异常:拒绝访问路径

本文关键字:拒绝访问 路径 异常 访问 授权 Unity3D | 更新日期: 2023-09-27 18:00:39

我的Unity3D游戏中有anayltics,当我试图在设备上创建文件夹时,我意识到一些Android设备会抛出未授权访问异常

看看引发异常的代码:

static void SaveToCache(Entry entry, byte[] bytes) {
    if (entry.file != null) {
        string path = Path.GetDirectoryName(entry.file);
        try {
            if (!Directory.Exists(path)) Directory.CreateDirectory(path);
            File.WriteAllBytes(entry.file, bytes);          
        } catch (Exception ex) {
            Analytics.LogException(ex, "couldn't save to cache: " + path);
        }
    }
}

代码对我来说很好,但也许我遗漏了什么。。。它不会影响我的测试设备——我只有来自分析的堆栈跟踪。

更相关的代码是我如何构建路径:

static readonly char DirectorySeparator = Path.DirectorySeparatorChar;    
static string BundleFile(string id, string languageCode) {
    StringBuilder sb = new StringBuilder();
    sb.Append(BundlePath());
    sb.Append(id);
    sb.Append("_");
    sb.Append(languageCode.ToLower());
    sb.Append(".json");
    return sb.ToString();
}
static string BundlePath() {
    StringBuilder sb = new StringBuilder();
    sb.Append(Application.persistentDataPath);
    sb.Append(DirectorySeparator);
    sb.Append("bundles");
    sb.Append(DirectorySeparator);
    return sb.ToString();
}

如果有人有类似的问题,请告诉我。我不能依赖Application.persistentDataPath吗?有没有更好的方法来构建缓存文件的路径?

Unity3D未授权访问异常:拒绝访问路径

我通过编写一个在android上处理持久数据路径的工具包解决了这个问题。这会检查写访问权限,甚至在磁盘空间不足时使用回退。

在此处查找代码