android webview函数onPagefinished被调用两次
问题描述:
我的android webview函数onPageFinished
被调用两次。我不知道为什么,但它在android 2.2上运行良好,但是当我将其升级到4+时,它不起作用。代码附加以下android webview函数onPagefinished被调用两次
代码
@Override
public void onPageFinished(WebView view, String url) {
if (url.startsWith(MobileConstants.PUSHPIN_CALLBACK_URL)) {
if (url.indexOf("code=")!=-1) {
String code = url.substring(url.indexOf("code=")+5);
Log.i ("code", code);
if (code != null && !code.equals("") ){
view.setVisibility(View.GONE);
Token accessToken = service.getAccessToken(null, new Verifier(code));
Log.i("access_token",accessToken.getToken());
SharedPreferences settings = getSharedPreferences("access_token" , 0);
SharedPreferences.Editor editor = settings.edit();
if(accessToken.getToken() != null)
editor.putString("access_token", accessToken.getToken());
Intent map3 = new Intent(OAuthAccessTokenActivity.this, Dashboard.class);
map3.putExtra("access_token", accessToken.getToken());
startActivity(map3);
}
} else if (url.indexOf("error=")!=-1) {
view.setVisibility(View.INVISIBLE);
}
}
System.out.println("onPageFinished : " + url);
}
登录
07-22 14:29:50.523: E/AndroidRuntime(1186): FATAL EXCEPTION: main
07-22 14:29:50.523: E/AndroidRuntime(1186): java.lang.NullPointerException
07-22 14:29:50.523: E/AndroidRuntime(1186): at com.facebook.android.OAuthAccessTokenActivity$1.onPageFinished(OAuthAccessTokenActivity.java:83)
07-22 14:29:50.523: E/AndroidRuntime(1186): at android.webkit.CallbackProxy.handleMessage(CallbackProxy.java:327)
07-22 14:29:50.523: E/AndroidRuntime(1186): at android.os.Handler.dispatchMessage(Handler.java:99)
07-22 14:29:50.523: E/AndroidRuntime(1186): at android.os.Looper.loop(Looper.java:137)
07-22 14:29:50.523: E/AndroidRuntime(1186): at android.app.ActivityThread.main(ActivityThread.java:4745)
07-22 14:29:50.523: E/AndroidRuntime(1186): at java.lang.reflect.Method.invokeNative(Native Method)
07-22 14:29:50.523: E/AndroidRuntime(1186): at java.lang.reflect.Method.invoke(Method.java:511)
07-22 14:29:50.523: E/AndroidRuntime(1186): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
07-22 14:29:50.523: E/AndroidRuntime(1186): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
07-22 14:29:50.523: E/AndroidRuntime(1186): at dalvik.system.NativeStart.main(Native Method)
答
我的代码从onPageFinished这个功能
代码
012移动解决问题 @Override
public boolean shouldOverrideUrlLoading(WebView view, String url){
if (url.startsWith(MobileConstants.CALLBACK_URL)) {
if (url.indexOf("code=") != -1) {
String code = url.substring(url.indexOf("code=")+5);
Log.i ("code", code);
if (code != null && !code.equals("") ){
view.setVisibility(View.GONE);
Token accessToken = service.getAccessToken(null, new Verifier(code));
Log.i("access_token",accessToken.getToken());
SharedPreferences settings = getSharedPreferences("access_token" , 0);
SharedPreferences.Editor editor = settings.edit();
if(accessToken.getToken() != null)
editor.putString("access_token", accessToken.getToken());
access = accessToken.getToken();
Intent map3 = new Intent(OAuthAccessTokenActivity.this, Dashboard.class);
map3.putExtra("access_token", accessToken.getToken());
startActivity(map3);
return true;
}
} else if (url.indexOf("error=")!=-1) {
view.setVisibility(View.INVISIBLE);
return false;
}
}
System.out.println("onPageFinished : " + url);
return super.shouldOverrideUrlLoading(view, url);
}
答
我有同样的问题,但我只需要停止进度条。 我“解决”它再次开始onPageStarted方法内的进度条。这不是一个好的解决方案,但在我的情况下就足够了。
哪一个是第83行,这使空指针流行? – charlypu 2012-07-22 15:10:18
令牌accessToken = service.getAccessToken(null,new Verifier(code));问题是一次我得到的代码,但后得到的代码之后,事情就OK了我得到访问令牌,但然后它再次调用此功能,在这个时候代码已过期,它给出空指针异常 – Muneeb 2012-07-22 15:16:46
我已经解决了这个问题任何人都可以告诉我如何回答它? – Muneeb 2012-07-24 00:15:09