Cordova 3.5 android文件插件中的NullPointer异常

时间:2014-07-05 10:50:34

标签: java javascript cordova cordova-3

我最近将我的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中的网址格式是什么?

4 个答案:

答案 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

Check out

答案 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。

参考: Google groups link

答案 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”值=“内部”

这将解决问题