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:

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) 

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); 
  • ¿Cómo usar Phonegap SoftKeyboard Plugin para Android?
  • Error en la aplicación Phonegap: módulo no capturado cordova / plugin_list ya definido
  • Abrir url en la vista web - phonegap
  • Cookie no está siendo fijado con phonegap filetransfer upload Response
  • App PhoneGap Crash cuando toma una nueva foto con Plugin de cámara
  • Incorporación Cordova WebView, Receptor no está registrado
  • Phonegap Conexión de red - No se puede leer la propiedad 'tipo' de undefined
  • Error Phonegap - "No se encontró metaetiqueta Content-Security-Policy. Agregue uno cuando utilice el complemento cordova-plugin-whitelist. "
  • ¿Podemos usar una base de datos SQLITE aldready preparada para una aplicación phonegap?
  • Concatenar y minify los archivos del plugin cordova / phonegap
  • La velocidad es "nula" con el complemento de geolocalización en Android 5+
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.