在我的应用程序中,第一次有一个登录屏幕,显示在Web视图中。在该屏幕中,将出现一个弹出窗口,其中包含UserName和Password。在按下登录按钮后提供详细信息后,将提交用户名和密码,并且它将调用用于用户名和密码验证的php代码,该代码将重定向到将在webview中重新加载的链接。加载此URL时,我必须侦听URL,如果URL符合某些考虑因素,我想完成webview活动并转到下一个活动。
问题是当我无法收听登录后生成的URL时。由于Login按钮没有登录,因此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;
}
}
}
谢谢你, 狙击。
答案 0 :(得分:2)
如果您有权访问登录屏幕html页面,那么您可以更改它 我建议你使用javaScriptInterface来处理登录按钮的onClickListener。
下面的链接显示了使用javascriptInterface获取html按钮单击并从clickEvent调用android函数的方法。
希望这有助于你......