gpt4 book ai didi

Android:读取外部文件(不是由应用程序创建的)

转载 作者:行者123 更新时间:2023-11-29 17:22:55 35 4
gpt4 key购买 nike

我们正在使用 Unity 创建一个 Android 应用(游戏)。

为了处理 Android,我们编写了一个 Android 库模块。

我们想手动插入一个文本文件到 Android 文件系统,而不是通过应用程序访问它,我们应该把文件放在哪里以及我们如何访问它?

我们尝试过

File file = new File(context.getExternalFileDir(null), "fileToRead.txt");
System.out.println(file.toString());

当文件“fileToRead.txt”在sd_card/Android/data/com.ourapp.ourapp/中

没有成功。(file.exists() 返回 false)。

编辑:我们将这些添加到 list 中

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

我也是

最佳答案

转到您的播放器设置,对于 Android,将写入权限从“仅限内部”更改为外部(SDCard) 。然后您可以使用 Application.persistentDataPath获取您的外部存储路径的位置。

string myPath = Application.persistentDataPath;

它会返回这样的东西:' /storage/sdcard0/Android/data/' + package-name + '/files' ;

然后您可以操作它以指向您的自定义文件目录或像这样使用它。

File file = new File(myPath, "fileToRead.txt");
System.out.println(file.toString());

编辑:从 Unity 网站 试试这个简单的方法。它消除了对 Java 模块或代码的需要。

    string getPath()
{
string path = "";
#if UNITY_ANDROID && !UNITY_EDITOR
try {
IntPtr obj_context = AndroidJNI.FindClass("android/content/ContextWrapper");
IntPtr method_getFilesDir = AndroidJNIHelper.GetMethodID(obj_context, "getFilesDir", "()Ljava/io/File;");

using (AndroidJavaClass cls_UnityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer")) {
using (AndroidJavaObject obj_Activity = cls_UnityPlayer.GetStatic<AndroidJavaObject>("currentActivity")) {
IntPtr file = AndroidJNI.CallObjectMethod(obj_Activity.GetRawObject(), method_getFilesDir, new jvalue[0]);
IntPtr obj_file = AndroidJNI.FindClass("java/io/File");
IntPtr method_getAbsolutePath = AndroidJNIHelper.GetMethodID(obj_file, "getAbsolutePath", "()Ljava/lang/String;");

path = AndroidJNI.CallStringMethod(file, method_getAbsolutePath, new jvalue[0]);

if(path != null) {
Debug.Log("Got internal path: " + path);
}
else {
Debug.Log("Using fallback path");
path = "/data/data/*** YOUR PACKAGE NAME ***/files";
}
}
}
}
catch(Exception e) {
Debug.Log(e.ToString());
}
#else
path = Application.persistentDataPath;
#endif
return path;
}

http://answers.unity3d.com/questions/283823/how-can-you-save-both-internally-and-externally.html

关于Android:读取外部文件(不是由应用程序创建的),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35926252/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com