gpt4 book ai didi

android - Webview 客户端没有监听 shouldOverrideUrlLoading

转载 作者:行者123 更新时间:2023-11-29 22:07:10 24 4
gpt4 key购买 nike

在我的应用程序中,第一次有一个登录屏幕显示在 WebView 中。在该屏幕中将出现一个弹出窗口,其中包含用户名和密码。在按下登录按钮时提供详细信息后,提交用户名和密码,它将调用 php 代码进行用户名和密码验证,该代码重定向到将在 web View 中重新加载的链接。加载此 URL 时,我必须监听 URL,如果 URL 符合某些考虑,我想完成 webview Activity 并继续进行下一个 Activity 。

问题是当我无法收听登录后生成的 URL 时。由于登录按钮没有登录信息,因此不会调用 shouldOverrideUrlLoading。我尝试使用 onPageFinished、onLoadResource、onPageStarted。但只有少数设备调用这些功能。

我想在按下登录按钮后获取 URL。有没有其他方法可以解决这个问题。

这是我的代码:

public class AndroidTestActivity extends Activity {
/** Called when the activity is first created. */
WebView mWebView;
Context ctx;
String str = "";

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ctx = this;

mWebView = (WebView) findViewById(R.id.mywebview);
mWebView.setWebViewClient(new MyWebClient());
mWebView.setScrollBarStyle(WebView.SCROLLBARS_INSIDE_OVERLAY);
WebSettings webSettings = mWebView.getSettings();
webSettings.setSavePassword(false);
webSettings.setSaveFormData(false);
webSettings.setJavaScriptEnabled(true);

mWebView.setWebChromeClient(new WebChromeClient() {
@Override
public boolean onJsAlert(WebView view, String url, String message,
android.webkit.JsResult result) {
// Required functionality here
return super.onJsAlert(view, url, message, result);
}
});
mWebView.loadUrl("http://This is my log in screen");


}

class MyWebClient extends WebViewClient {
MyWebClient() {
Log.e("test", "Inside WebViewClient");
}

public void onPageStarted(WebView view, String url, Bitmap favicon) {
Log.e("onPageStarted", url);
str = str + "onPageStarted : " + url + "\n";
}

public void onLoadResource(WebView view, String url) {
Log.e("onLoadResource", url);
str = str + "onLoadResource : " + url + "\n";
}

public void onPageFinished(WebView view, String url) {
Log.e("onPageFinished", url);
str = str + "onPageFinished : " + url + "\n";
}

public boolean shouldOverrideUrlLoading(WebView view, String url) {
Log.e("shouldOverrideUrlLoading", url);
str = str + "shouldOverrideUrlLoading : " + url + "\n";
return true;
}

}

}

谢谢问候,狙击手。

最佳答案

如果您可以访问登录屏幕 html 页面并且可以更改它,那么我建议您使用 javaScriptInterface 来处理登录按钮的 onClickListener。

下面的链接显示了使用 javascriptInterface 获取 html 按钮单击并从该 clickEvent 调用 android 函数的方法。

using javascript in android webview

希望这对你有帮助...

关于android - Webview 客户端没有监听 shouldOverrideUrlLoading,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10545980/

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