获取PhoneGap中assets文件夹的绝对路径

12

有没有办法获取PhoneGap资产文件夹中图像的绝对路径?

我需要绝对路径以便使用EmailComposer插件将图像附加到邮件中。

EmailComposer插件需要像这样的绝对路径:

 /storage/sdcard0/DCIM/Camera/20121124_125210.jpg

但是我想要附加的图片位于我的资源文件夹中,路径如下:

file:///android_asset/www/img/logo.png

无法运行

3个回答

12

如果有人仍在寻找解决方案,现在Cordova实现了一种非常简单的获取当前应用程序目录的方法(支持Android、iOS和BlackBerry 10):

cordova.file.applicationDirectory

例如,如果您想访问www内的res/audio目录中的音频文件,只需编写以下内容:

cordova.file.applicationDirectory + 'res/audio/my-audio-file.mp3'

此处是完整的文档。


5
我认为你需要使用 cordova.file.applicationDirectory + 'www/' + 'res/audio/my-audio-file.mp3' 这个路径。至少在我的iOS设备上是这样的表现。 - edhubbell
和 @edhubbell 一样,我也需要添加 www/ - mauvm
1
cordova.file.applicationDirectory 对我来说只返回了一个异常(undefined)。 - andreimarinescu
1
@andreimarinescu 别忘了安装文件插件:cordova plugin add cordova-plugin-file --save - Ivan Gabriele

2
看起来这是不可能的。
请参见https://groups.google.com/forum/#!topic/phonegap/Sw2wThOYm8c中的Simon的回复。
在那个线程中,他说:“你不能做你想做的事情。 assets目录中的文件在技术上不在文件系统上,因此无法通过File API访问。这意味着调用window.resolveLocalFileSystemURI()将不会返回一个FileEntry。它正常地返回错误代码1,即NOT_FOUND_ERR。”
您需要文件的绝对路径才能使电子邮件附件插件工作。不幸的是,如果文件位于assets文件夹中,则无法使用cordova的文件API获取绝对路径。
存在一种插件,可以将文件从assets文件夹中复制到sdcard上。然后,您可以将此文件的确切位置传递给电子邮件附件插件。不幸的是,如果您计划使用更新的cordova版本,则下面的插件已过时。

https://github.com/gkcgautam/Asset2SD


1
我现在无法评论其他人的答案,因为我没有足够的积分,但wraith的答案是不正确的。请查看我的答案,了解其不正确的原因。它可能在旧版本的Android和PhoneGap上有效,但在cordova/phonegap 2.0.0+上肯定不起作用。不幸的是,这种方法不适用于存储在apk文件中的文件。 - njtman

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接