gpt4 book ai didi

android webview 函数 onPagefinished 被调用两次

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:06:56 25 4
gpt4 key购买 nike

我的 android webview 函数 onPageFinished 被调用了两次。我不知道为什么,但它在 android 2.2 上运行良好,但是当我将它升级到 4+ 时它不起作用。代码附在下面

代码

@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 移动到此函数解决了这个问题

代码

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

}

关于android webview 函数 onPagefinished 被调用两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11601134/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com