我最近将我的cordova应用程序从v2.9升级到v3.5。我通过命令行添加了所需的插件,并做了我的应用程序的cordova构建。当我通过文件插件读/写文件时,我得到一个Nullpointer异常。下面是堆栈跟踪:
07-08 18:58:40.750: W/System.err(6670): java.lang.NullPointerException
07-08 18:58:40.750: W/System.err(6670): at org.apache.cordova.file.LocalFilesystem.filesystemPathForURL(LocalFilesystem.java:67)
07-08 18:58:40.750: W/System.err(6670): at org.apache.cordova.file.LocalFilesystem.getFileForLocalURL(LocalFilesystem.java:189)
07-08 18:58:40.750: W/System.err(6670): at org.apache.cordova.file.FileUtils.getFile(FileUtils.java:749)
07-08 18:58:40.760: W/System.err(6670): at org.apache.cordova.file.FileUtils.access$5(FileUtils.java:742)
07-08 18:58:40.760: W/System.err(6670): at org.apache.cordova.file.FileUtils$16.run(FileUtils.java:397)
07-08 18:58:40.760: W/System.err(6670): at org.apache.cordova.file.FileUtils$23.run(FileUtils.java:525)
07-08 18:58:40.760: W/System.err(6670): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
07-08 18:58:40.760: W/System.err(6670): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
07-08 18:58:40.760: W/System.err(6670): at java.lang.Thread.run(Thread.java:856)
我需要一些直接的帮助!!
Nullpointer异常已解决,但在文件访问方面需要帮助
我想知道,应用程序私有包中文件访问的url模式应该是什么。在cordova 2.9中,我从Javascript访问/data/data/com.myapp.android/abc.txt
。我可以知道现在在cordova 3.5中的网址格式是什么?
答案 0 :(得分:5)
您需要在config.xml文件中添加以下内容之一
<preference name="AndroidPersistentFileLocation" value="Internal" />
<preference name="AndroidPersistentFileLocation" value="Compatibility" />
Check More details on this page它说
如果您的应用程序之前已经发送给用户,请使用 这个插件的旧版(1.0之前版本),并且已经存储了文件 持久性文件系统,那么你应该将首选项设置为 “兼容性”。将位置切换为“内部”意味着 升级其应用程序的现有用户可能无法访问 他们以前存储的文件,具体取决于他们的设备。
<强> EDTT 强>
你可以这样试试,
cdvfile:///data/data/com.myapp.android
答案 1 :(得分:4)
我设法通过将我的应用文件存储在/mnt/sdcard/Android/data/com.myapp.android/
文件夹中来解决它。此位置将专用于我的应用,并在卸载应用时清除。
现在,我可以使用cordova的File插件从javascript读取/写入文件,文件路径如下:Android/data/com.myapp.android/abc.txt
。由于File插件将Compatibility
视为config.xml中首选项AndroidPersistentFileLocation
的默认值,因此持久性文件存储将返回为/mnt/sdcard
(如果已安装),默认情况下为Android。
答案 2 :(得分:2)
尝试使用此
window.resolveLocalFileSystemURI(URI, function(f){
var filePath = f.fullPath;
}
其中URI为/data/data/com.myapp.android/abc.txt或仅为abc.txt
答案 3 :(得分:1)
您需要添加android文件位置。将其添加到config.xml
首选项名称=“AndroidPersistentFileLocation”值=“内部”
这将解决问题