Pregunta

Estoy creando una aplicación de Android Phonegap con Phonegap v1.3 . Escribí un complemento para phonegap que obtiene un archivo particular del sistema y luego ejecuta una función js.
Como todos los complementos amplían el complemento de la clase Phonegap, no puedo ejecutar una función js directamente desde allí. así que desde la función ejecutar del complemento, ejecuto ->

PluginResult result = null;
Home home = new Home();
result = new PluginResult(Status.OK);
home.loadPage("pic.jpg");

En esto, el Hogar es mi clase principal que se extiende a Droidgap.
En casa tengo la función loadPage

public void loadPage(String filePath){   
super.setIntegerProperty("loadUrlTimeoutValue", 60000);
super.loadUrl("javascript:navigator.somefunc(\""+filePath+"\");");  
}

El problema es que la función setIntegerProperty de DroidGap está lanzando un NPE. Aquí están los registros.

01-16 11:41:32.364: W/System.err(13162): java.lang.NullPointerException
01-16 11:41:32.364: W/System.err(13162):    at com.phonegap.DroidGap.setIntegerProperty(DroidGap.java:738)
01-16 11:41:32.364: W/System.err(13162):    at e2o.mobile.Home.loadSharePage(Home.java:120)
01-16 11:41:32.364: W/System.err(13162):    at com.phonegap.plugins.checkImage.CheckUploadImage.execute(CheckUploadImage.java:158)
01-16 11:41:32.364: W/System.err(13162):    at com.phonegap.api.PluginManager$1.run(PluginManager.java:150)
01-16 11:41:32.364: W/System.err(13162):    at java.lang.Thread.run(Thread.java:1019)

Básicamente en la función setIntegerProperty -

public void setIntegerProperty(String name, int value) {
    this.getIntent().putExtra(name, value);
}

this.getIntent () devuelve un valor nulo. ¿Puedes decirme qué me estoy perdiendo? O en mi caso de uso, ¿cómo ejecuto esa función js? Si no uso

super.setIntegerProperty("loadUrlTimeoutValue", 60000, intent);

entonces también loadUrl no hace nada. no se llama al JS o se agota el tiempo de espera.

¿Fue útil?

Solución

Es porque está creando una instancia de un nuevo objeto Home.El objeto se crea utilizando el constructor, pero no se llama al método onCreate, por lo que no se produce una gran cantidad de la configuración adecuada del objeto.Es por eso que obtiene la NullPointerException.

Está devolviendo un nuevo PluginResult con un estado de OK, por lo que la función de éxito del puede ejecutar el método navigator.somefunc (filePath) por usted.Será mucho más fácil de esa manera.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top