javascript - PhoneGap - 无法写入 Android 文件

标签 javascript android dom cordova

我正在使用 PhoneGap 1.8 版 (cordova-1.8.0.js) 并尝试为 Android 开发一个应用程序。我正在通过 Eclipse 在实际设备上进行调试。

我正在尝试将文本写入文件。我正在使用 PhoneGap 在

提供的示例 API 代码

http://docs.phonegap.com/en/1.8.0/cordova_file_file.md.html#FileWriter

我已经能够使用我当前的设置创建应用程序,所以我知道它运行良好,我只是无法写入文件。我在这个问题上花了几个小时,但不断收到以下错误消息:

E/Web Console(27356): Uncaught ReferenceError: LocalFileSystem is not defined at file:///android_asset/www/debug.js:28

第28行是

window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, fail);

我使用的是来自 API 网站的确切代码。

对我可能做错的地方有什么建议吗?

也许我没有在我的 PhoneGap 设置中导入正确的 Java 库?

我导入了以下内容:

import android.os.Bundle;
import org.apache.cordova.*;
import android.view.WindowManager;
import android.view.KeyEvent;

谢谢。

编辑:

我在用

$(document).ready(function () {

代替

 document.addEventListener("deviceready", onDeviceReady, false);

因为它永远不会开火。这是我的确切代码,我也有

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

活跃在我的 phonegap 项目中。

完整代码:

<!DOCTYPE html>
<html>
<head>
<title>FileWriter Example</title>

<script type="text/javascript" charset="utf-8" src="cordova-1.8.0.js"></script>
<script type="text/javascript" charset="utf-8">

// Wait for Cordova to load
//
document.addEventListener("deviceready", onDeviceReady, false);

// Cordova is ready
//
function onDeviceReady() {

   alert("device ready"); // this never gets called

    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, fail);
}

function gotFS(fileSystem) {
    fileSystem.root.getFile("readme.txt", {create: true, exclusive: false}, gotFileEntry, fail);
}

function gotFileEntry(fileEntry) {
    fileEntry.createWriter(gotFileWriter, fail);
}

function gotFileWriter(writer) {
    writer.onwriteend = function(evt) {
        console.log("contents of file now 'some sample text'");
        writer.truncate(11);  
        writer.onwriteend = function(evt) {
            console.log("contents of file now 'some sample'");
            writer.seek(4);
            writer.write(" different text");
            writer.onwriteend = function(evt){
                console.log("contents of file now 'some different text'");
            }
        };
    };
    writer.write("some sample text");
}

function fail(error) {
    console.log(error.code);
}

</script>
</head>
<body>
<h1>Example</h1>
<p>Write File</p>
</body>
</html>

我还在设备就绪调用中添加了一个警报功能,它根本不会被调用。

关于此代码如何不起作用的任何想法?

我能让代码在启动时触发的唯一方法是使用

$(document).ready(function () { 

});

我想这不太好,因为我不断收到相同的错误消息,因此尝试调用文件编写器。

最佳答案

如果 deviceready 没有触发,问题不在于写入文件——问题在于你的 phonegap 应用程序是如何设置的。

您必须在主要 Activity 中导入以下内容:

import android.app.Activity; // used to fire deviceready 
import android.os.Bundle;
import org.apache.cordova.*;

关于javascript - PhoneGap - 无法写入 Android 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10989656/

相关文章:

javascript - 默认情况下选中的复选框

javascript - 我可以使用 JSX 在 React 中使用 HTML 标记执行 Array.join() 吗?

android - 两个应用程序的相同 Android 服务实例

javascript - 在文本 block 中查找 URL 的正则表达式 (Javascript)

javascript - 在 ASP.NET 中为 html src 语句调用 C# 方法(输出字符串)

javascript - 用 Js 实现响应式可折叠导航栏

android - 从 android 中的字符串数组引用可绘制对象

java - 如何在 Espresso 中允许繁忙的工作线程

javascript - 使用 Prototype 从 innerHTML 中去除 &lt;script&gt; 标签

javascript - Panel.Visible=false 不添加到 DOM 中吗?