2013-07-29 20 views
5

PhoneGap'te bir mobil web sitesini (ağ üzerinden) ambalajlıyorum ve belirli bağlantıları engellemek ve ChildBrowser eklentisini kullanarak açmak istiyorum.PhoneGap/Android, ChildBrowser uygulamasını açmak için .shouldOverrideUrlLoading()

ChildBrowser childBrowser = new ChildBrowser(); 
childBrowser.openExternal(url, true); 

durum ayrıntıları:

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) 
mümkün (ben zaten yolunu kesmek için hangi bağlantıların tespit ettik)

kod aşağıda denedim ama NullPointerException sonuçlanan yerel koddan ChildBrowser tetiklemek için mi

+0

: Ayrıca

public String openExternal(String url, boolean usePhoneGap,Context context) { ... intent = new Intent().setClass(context, org.apache.cordova.DroidGap.class); ... context.startActivity(intent); } 

orijinal parametrelerle başka bir yöntem eklemek Bu işleve diğer aramalardan hataları önlemek için senin istisnın mı? Logcat'ınızı gönderir misiniz? – caiocpricci2

+0

@ caiocpricci2 logcat'i ekledi – wakeup

+0

ChildBrowser.java'da 127 numaralı satırda ne var? Eklentinin hangi sürümünü kullanıyorsunuz? Aşağıda yayınladığım kodu kullanmayı denerseniz, bir istisna da alıyor musunuz? – caiocpricci2

cevap

1

aşağıdaki kod benim için çalıştı sonunda ...

ChildBrowser childBrowser = new ChildBrowser(); 
childBrowser.cordova = this; 
childBrowser.showWebPage(url, null); 
1

Logcat'ınız olmadan eklentiyi kullanarak size daha fazla öneride bulunmak zordur, ancak yerel katmandan openExternal numaralı telefonu arayarak eklentiyi kullanmanın bir nedeni yoktur. the source code'a bir göz attığınızda, URL'nizi alıp yeni bir DroidGap sayfasına yüklediğinizi görürsünüz.

Yalnızca gerekli olan kısmı alırsanız, özel durumun gerçekleştiği yeri izlemenize yardımcı olabilir.

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); 

} 

DÜZENLEME

Sen bağlam değişkeni boş istisna alıyoruz. O zaman niçin boş olduğunu bilmiyorum ama bu yöntemi değiştirip mevcut içeriği geçerek bunu kolayca düzeltebilirsiniz. Bağlamla this.cordova'u değiştirin ve iyi durumda olmalısınız. Bu öğeyi, (ex: childBrowser.openExternal("http://www.google.com", true,this)) son parametresi olarak this numaralı paslamanızdan çağırın.

public String openExternal(String url, boolean usePhoneGap) { 
    openExternal(url,usePhoneGap,this.cordova.getActivity()); 
} 
İlgili konular