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) 

2 Solutions collect form web for “PhoneGap / Android, abra ChildBrowser desde .shouldOverrideUrlLoading ()”

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); 
  • Actualización de Cordova Local Notification Android Plugin 2.2
  • Cómo establecer la posición de spinner con cordova
  • Phonegap NFC no funciona
  • Phonegap Plugin: Cómo convertir Base64 String a una imagen PNG en Android
  • Eliminar la pantalla de bienvenida en el teléfono para ios y android
  • Obtener el nivel actual de la batería usando phonegap o cordova?
  • Soporte de Chromecast en PhoneGap / Córdoba
  • ¿Cómo usar Phonegap SoftKeyboard Plugin para Android?
  • Inter-dispositivo de comunicación a través de Bluetooth con Phonegap en Android?
  • Notificación push de Pubnub no funciona para la aplicación móvil de plataforma cruzada
  • Almacenamiento seguro para la aplicación Android PhoneGap
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.