我正在使用Application.persistentDataPath
路径来保存我的应用程序所需的图形内容。不幸的是,我无法强迫Unity将其设为私有(Android docs),因此任何具有基本知识的用户都可以可见并且可以抓取来自路径Android/data/com.mycompany.myapp/files/
的Android。我尝试了更多的东西,其中将播放器设置/写入权限设置为内部没有解决它。
我知道我可以创建原生Intent并从Unity游戏中运行它们,但看起来它是通过反射实现的,我需要快速加载数据
此内容无法随应用程序一起提供(在用户购买后下载)并且预计会尽快加载 - 它有很多图片 - 至少约有200MB。
如何强制Unity使用私有存储?或者我如何至少从用户隐藏整个文件夹?
1 个答案:
答案 0 :(得分:0)
我设法找到了一个简单的解决方案,所以这里是给你的:
我用我想要的私人文件夹名称调用Android本机函数getDir并将其存储到静态属性ap。如果我不在Android上,我使用Application.persistentDataPath。
结果:
persistentDataPath返回/storage/emulated/0/Android/data/com.mycomp.myapp/files
getDir返回/data/user/0/com.mycomp.myapp/app_pFiles
完整代码:
public static class FolderHelper
{
//缓存的值
私有静态字符串ap;
static FolderHelper()
{
#if UNITY_ANDROID&& !UNITY_EDITOR
尝试
{
使用(AndroidJavaClass jc = new AndroidJavaClass(" com.unity3d.player.UnityPlayer"))
{
使用(AndroidJavaObject jo = jc.GetStatic< AndroidJavaObject>(" currentActivity"))
{
ap = jo.Call< AndroidJavaObject>(" getDir"," pFiles",0).Call< string>(" getAbsolutePath");
}
}
}
catch(System.Exception e)
{
Debug.LogWarning(e.ToString());
ap = Path.GetFullPath(Application.persistentDataPath);
}
#其他
ap = Path.GetFullPath(Application.persistentDataPath);
#万一
}
//其他代码取决于属性ap
}