PhoneGap / Android, abra ChildBrowser desde .shouldOverrideUrlLoading ()
Estoy empaquetando un sitio web para móviles (a través de la red) en PhoneGap y me gustaría interceptar ciertos enlaces y abrirlos usando el complemento de ChildBrowser . ¿Es posible activar ChildBrowser desde el código nativo (ya he determinado qué enlaces interceptar)
He intentado por debajo del código, pero resulta en NULLPointerException:
- Cordova default config.xml URI no está registrado
- Actualización de Cordova Local Notification Android Plugin 2.2
- Deshabilitar los botones de zoom en el inappbrowser de Phonegap
- Notificación de barra de estado en android phonegap
- ¿Cómo puedo superponer una vista nativa encima de CordovaWebView de PhoneGap en Android?
ChildBrowser childBrowser = new ChildBrowser(); childBrowser.openExternal(url, true);
Detalles de la excepción:
07-29 10:49:52.632 947-947/com.abc.androidTablet E/AndroidRuntime: FATAL EXCEPTION: main java.lang.NullPointerException at com.phonegap.plugins.childBrowser.ChildBrowser.openExternal(ChildBrowser.java:127) at com.mygola.androidTablet.abc_android$1.shouldOverrideUrlLoading(abc_android.java:96) at android.webkit.CallbackProxy.uiOverrideUrlLoading(CallbackProxy.java:270) at android.webkit.CallbackProxy.handleMessage(CallbackProxy.java:372) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:5041) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:511) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) at dalvik.system.NativeStart.main(Native Method)
- PhoneGap 3 plugin: exec () llamada a plugin desconocido "..."
- Errores al actualizar la aplicación cordova
- Phonegap: Clasificación de la lista de contactos
- Error al reproducir el video subido a través de PhoneGap FileTransfer
- Error: (47) Error al analizar XML: prefijo no enlazado en la brecha telefónica de Android
- Instalación de Phonegap / Cordova 3.1 plugins (código de barras)
- Abrir una actividad de un CordovaPlugin
- ¿Phonegap Android AlarmManager plugin?
Sin tu logcat es difícil darte más consejos usando el plugin pero si estás llamando openExternal
desde la capa nativa no hay razón para usar el complemento. Si echa un vistazo al código fuente , verá todo lo que hace es tomar su url y cargarlo en una nueva página de DroidGap
.
Si usted toma solamente la parte esencial que puede ayudar a rastrear donde está ocurriendo la excepción.
function void openExternalUrl() { intent = new Intent().setClass(this.ctx.getContext(), org.apache.cordova.DroidGap.class); intent.setData(Uri.parse(url)); // This line will be removed in future. intent.putExtra("url", url); this.ctx.startActivity(intent); }
EDITAR
Está obteniendo una excepción nula en la variable de contexto. No sé por qué es nulo en el momento, pero puede arreglar fácilmente que la modificación del método y pasar el contexto actual. Reemplace this.cordova
con el contexto y usted debe estar bien. Llame a este de su actividad pasando this
como el último parámetro (ex: childBrowser.openExternal("http://www.google.com", true,this))
.
public String openExternal(String url, boolean usePhoneGap,Context context) { ... intent = new Intent().setClass(context, org.apache.cordova.DroidGap.class); ... context.startActivity(intent); }
También para evitar errores de otras llamadas a esta función, agregue otro método con los parámetros originales:
public String openExternal(String url, boolean usePhoneGap) { openExternal(url,usePhoneGap,this.cordova.getActivity()); }
Al final, el código funcionó para mí …
ChildBrowser childBrowser = new ChildBrowser(); childBrowser.cordova = this; childBrowser.showWebPage(url, null);
- Integración de Aviary con Android Studio: No se pudo encontrar com.aviary.android.feather.sdk: aviary-sdk: 3.4.3.350
- ¿Cómo descargar la imagen más rápido en android Volley / Picasso / Glide cualquier otro?