2013-07-29 2 views
5

PhoneGap에서 모바일 웹 사이트 (네트워크를 통해)를 포장하고 있으며 특정 링크를 가로 채고 ChildBrowser 플러그인을 사용하여 열고 싶습니다.PhoneGap/Android, ChildBrowser from .shouldOverrideUrlLoading()

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

예외 정보 :

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) 
를 가능 (이미 차단하기 위해 연결하는 결정했습니다)

내가 코드를 아래 해봤지만 NullPointerException이 결과 네이티브 코드에서 ChildBrowser를 실행하는 것입니다

+0

: 또한

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

은 원래의 매개 변수와 함께 다른 방법을 추가하려면이 기능에 다른 호출에서 오류를 방지하기 위해 당신의 예외입니까? 당신 logcat 게시 할 수 있습니까? – caiocpricci2

+0

@ caiocpricci2 님이 logcat을 추가했습니다. – wakeup

+0

ChildBrowser.java의 127 행은 무엇입니까? 어떤 플러그인 버전을 사용하고 있습니까? 아래에 게시 한 코드를 사용해도 예외가 있습니까? – caiocpricci2

답변

1

를 아래 코드는 나를 위해 일한 말에 ...

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

당신의 logcat이 없으면 당신은 플러그인을 사용하여 더 이상의 조언을 해줄 수 없지만, openExternal을 원래 레이어에서 호출하면 플러그인을 사용할 이유가 없습니다. the source code을 살펴보면 URL을 가져와 새로운 DroidGap 페이지에로드하는 것만 볼 수 있습니다.

중요한 부분 만 사용하면 예외 상황을 추적하는 데 도움이 될 수 있습니다.

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

} 

편집

당신은 상황 변수에 널 (null) 예외가 있어요. 왜 그것이 null인지 모르겠지만 당신은 쉽게 메서드를 수정하고 현재 컨텍스트를 전달할 수 있습니다. 문맥에 this.cordova를 대체 하거든 당신은 잘되어야한다. 마지막 매개 변수 (ex: childBrowser.openExternal("http://www.google.com", true,this))으로 활동 번호 this을 호출하십시오.

public String openExternal(String url, boolean usePhoneGap) { 
    openExternal(url,usePhoneGap,this.cordova.getActivity()); 
} 
관련 문제