【发布时间】:2019-04-30 15:45:33
【问题描述】:
我正在 Unity3D 中开发一个 Android 应用 用于教室,它有一些按钮可以显示与当前课程相关的一些网页和视频,但现在我想要有一个按钮来打开 Android 平板电脑中的 default-pdf-viewer 并加载我在项目资产文件夹中的 PDF 文件。
问题是我一直在尝试来自 StackOverflow 帖子和 Unity 社区线程的不同人的大量代码,但对我没有任何帮助。
我已经试过了:
我的最低 android API 级别设置为 22(相对于this reddit post)
到目前为止,这是我的代码:
IEnumerator openPDF() {
var path = "jar:file://" + Application.dataPath + "!/assets/test.pdf";
var savePath = Application.persistentDataPath;
WWW www = new WWW(path);
yield return www;
var error = www.error;
byte[] bytes = www.bytes;
var result = "File size : "+bytes.Length;
try{
System.IO.File.WriteAllBytes(savePath+"/test.pdf", bytes);
error = "No Errors so far";
}catch(Exception ex){
error = ex.Message;
}
Application.OpenURL(savePath+"/test.pdf");
}
当我打印www.error 字符串时,我得到一个"404 not Found"。
这是我打印路径变量时得到的结果:jar:file:///data/[MY APP PACKAGE NAME]/base.apk!/assets/test.pdf
【问题讨论】:
-
您的 PDF 文件位于哪个文件夹?
-
我不确定,但路径名中的
!可能会造成麻烦?尝试宁愿把你的文件,例如在Application.persistentDataPath或Application.streamingAssetsPath或Resources文件夹中。 -
@0xBFE1A8 /Assets/test.pdf
-
Assets/不是将文件编译到构建中的位置。具体来说,除非被编译器可以知道的东西引用(指向文件位置的字符串不是一个)。您需要使用/Resources或资产包。