2011-08-23 19 views
8

He intentado configurar Phonegap en Android y deviceready no se disparará. El motivo es que DeviceInfo.uuid siempre es nulo/indefinido.deviceready no se activará en Phonegap 1.0.0 en Android

Parece que las partes que no son javascript de phonegap no se cargan correctamente, pero no puedo ver exactamente qué. Para todo lo que esté fuera del directorio www estoy usando el código provisto en el directorio de muestra de la descarga del fajo telefónico.

¿Alguien sabe lo que puede estar causando esto?

<!DOCTYPE html> 
<html> 
    <head> 
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no;" /> 
    <meta http-equiv="Content-type" content="text/html; charset=utf-8"> 

     <script type="text/javascript" charset="utf-8" src="javascripts/phonegap-1.0.0.js"></script> 
    <script src="http://debug.phonegap.com/target/target-script-min.js#something"></script> 

    <script type="text/javascript" charset="utf-8"> 

    function onBodyLoad() { 
     var initialize = function() { 
     window.console.log("deviceready||resume"); 
     }; 
     document.addEventListener("deviceready", initialize); 
     document.addEventListener("resume", initialize); 
     window.console.log("onBodyLoad!"); 
    } 

    </script> 
    </head> 
    <body onload="onBodyLoad()"> 
    <h1>Herro World</h1> 
    </body> 
</html> 

Respuesta

31

En caso de que alguien más tropiece con este problema.

No me había dado cuenta de que phonegap-1.0.0.js es diferente para la versión de iPhone y Android. Tiene el mismo nombre, pero el contenido es diferente. Por lo tanto, uno debe cargar el archivo correcto. Lo resolví así:

<script type="text/javascript"> 
    // Atrocious way of loading two diffent phonegap scripts, but other loading methods won't work. 
    // also there shouldn't be two scripts to begin with -- so much for cross-platform. 
    var userAgent = navigator.userAgent.toLowerCase(); 
    if (userAgent.match(/android/)) { 
    document.write("<script type='text/javascript' src='javascripts\/phonegap-android-1.0.0.js'><\/script>"); 
    } else { 
    document.write("<script type='text/javascript' src='javascripts\/phonegap-iphone-1.0.0.js'><\/script>"); 
    } 
</script> 
+2

Hombre! me salvaste la vida ... esto me estaba matando, solo quería dejarlo. –

+0

Gracias por la información, tampoco me di cuenta. Pero no decidiría dinámicamente (tal vez solo durante el desarrollo) qué puedo hacer en el proceso de compilación. Es mejor para el rendimiento compilar con la versión correcta. – ChrLipp

+0

¡Santa vaca! ¡No tiene sentido, pero ese era mi problema! Gracias. Phew ... – zaf

3

Si desea alguna función a ejecutar cuando el dispositivo está listo hacer algo como esto

document.addEventListener("deviceready", onDeviceReady, true); 
// PhoneGap is now ready 

function onDeviceReady() { 
// Write your code here 
} 

No estoy seguro de por qué su código no se working.Try colocar la document.addEventListener fuera del alcance de la función.

+0

Gracias, esto es generalmente algo que puede solucionar el problema (¡lo voté arriba)! En mi caso, tuve un oyente, pero no me había dado cuenta de que phonegap-1.0.0.js es diferente para la versión de iPhone y Android. No es el mismo archivo. – sandstrom

Cuestiones relacionadas