2012-06-12 21 views
5

Estoy trabajando con la versión 1.8 de PhoneGap (cordova-1.8.0.js) y estoy intentando crear una aplicación para Android. Estoy depurando en un dispositivo real a través de Eclipse.PhoneGap - No se puede escribir en el archivo para Android

Estoy tratando de escribir texto en un archivo. Estoy utilizando el código de ejemplo de la API proporcionada por PhoneGap en

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

ya he sido capaz de crear aplicaciones con mi puesta a punto, así que sé que funciona bien actual, sólo soy incapaz de escribir en un archivo . He pasado horas en este problema, pero sigue apareciendo el mensaje de error siguiente:

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

línea 28 siendo

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

Estoy utilizando el código exacto de la página web de la API.

¿Alguna sugerencia sobre qué podría estar haciendo mal?

Tal vez no estoy importando las bibliotecas de Java adecuadas en la configuración de mi PhoneGap?

Tengo el siguiente importados:

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

Gracias.

EDIT:

que estaba usando

$(document).ready(function() { 

En lugar de la

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

, ya que nunca lo haría fuego. Aquí está mi código exacto, También tengo el

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

activo dentro de mi proyecto de phonegap.

código completo:

<!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> 

También me tiró en una función de alerta en la llamada lista de dispositivos, que nunca se llama en absoluto.

¿Alguna idea de cómo este código no funciona?

La única manera de que puedo obtener el código para disparar el inicio se utiliza

$(document).ready(function() { 

}); 

que no es bueno supongo que para tratar de llamar al archivo como escritor me siguen dando el mismo mensaje de error.

Respuesta

1

El problema no está en escribir un archivo si deviceready no se activa, sino cómo está configurada la aplicación del teléfono.

Debe importar lo siguiente en su actividad principal:

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

He actualizado mi post.Si utilizo la función de listo para el dispositivo, ni siquiera puedo encenderlo. ¿Existe algún problema conocido con esta función y el teléfono para Android? He pasado horas en este problema sin ningún éxito. Cualquier ayuda sería muy apreciada. Gracias. – user1017063

+0

@ user1017063 verifique mi edición. – AustinAllover

+1

@AustinAllover El mismo problema que estoy enfrentando en iOS. Cómo puedo resolver esto. por favor, ayúdame –

Cuestiones relacionadas