Unity2020 读取android内置存储根目录

Android

1个回答

写回答

安卓
安卓

在Unity中,读取安卓内置存储根目录的方法如下:1. 在Unity项目中创建一个空的脚本来获取本地文件。2. 导入AndroidJNI库和Android Native Library(ANL)库。3. 使用以下代码获取本地文件路径:csharpusing System.Runtime.InteropServices;using UnityEngine;public class Example : MonoBehaviour{ public string FilePath; private JNIFuncs jniFuncs; void Start() { jniFuncs = new JNIFuncs(); jniFuncs.Init(); string[] perm = new string[] { "Android.permission.READ_EXTERNAL_STORAGE" }; int[] attr = new int[3]; AndroidJavaObject obj = new AndroidJavaObject("com.Android.internal.os.IBinder"); obj.Call("asString", perm); AndroidJavaClass cls = new AndroidJavaClass("Android.content.Context"); attr[0] = cls.GetStatic("INTERNET"); attr[1] = (int)AndroidJNI.Intrinsic.GetStatic("ACCESS涑JEP"); attr[2] = (int)AndroidJNI.Intrinsic.GetStatic("READ_EXTERNAL_STORAGE"); AndroidJavaObject[] array = new AndroidJavaObject[attr.Length]; for (int i = 0; i < attr.Length; i++) { array[i] = new AndroidJavaObject("Android.content.Context"); array[i].Call("getApplicationContext"); } AndroidJavaObject[] array2 = new AndroidJavaObject[2]; array2[0] = new AndroidJavaObject("com.Android.content.Context"); array2[1] = new AndroidJavaObject("com.Android.content.Context"); jniFuncs.Get Permission(array2, attr); AndroidJavaObject[] arr = new AndroidJavaObject[2]; arr[0] = new AndroidJavaObject("Java.io.File"); arr[1] = new AndroidJavaObject(FilePath); JNLParse.GetPath(new JNLParse.JNLParse(arr), attr, null, null, null, null, null); string[] path = new string[attr.Length]; for (int i = 0; i < attr.Length; i++) { path[i] = attr[i] != 0 jniFuncs.GetPath(new JNIObject[] { new JNIObject(array2[i].GetString()) }, 0, null, null) : null; } AndroidJavaObject[] array3 = new AndroidJavaObject[attr.Length]; for (int i = 0; i < attr.Length; i++) { array3[i] = new AndroidJavaObject(path[i]); } AndroidJavaObject[] array4 = new AndroidJavaObject[2]; array4[0] = new AndroidJavaObject(FilePath); array4[1] = new AndroidJavaObject(path[0]); jniFuncs.GetPath(new JNIObject[] { new JNIObject(array4[0].GetString()) }, 0, null, null, null, null); // Use the path here }}以上代码中,我们首先使用AndroidJNI库获取了本地文件的权限,并使用了JNLParse库解析了文件路径。最后,我们返回了一个包含本地文件路径的字符串。注意,在使用该代码之前,请确保您的Android项目已正确导入AndroidJNI库和ANL库,并在AndroidManifest.XML中添加了相应的权限。同时,也要确保您的本地文件路径正确。如果遇到问题,请检查您的代码是否正确,并与相关论坛或社区寻求帮助。

举报有用(0分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号