Java - WebView 什么事件处理(监视)URL 更改 - Android



该应用程序使用 WebView 登录到 Web 应用程序。进入 Web 视图后,Web 视图似乎会根据用户的单击为您处理所有内容。但是,如果 URL 更改为特定的注销 URL,我需要查看每个事件。

当用户在 Web

视图中注销 Web 应用程序时,如何将用户返回到应用程序本身?我不希望网络视图保持为活动视图。

我尝试过WebViewClient.shouldOverrideUrlLoad和View.OnTouchListsner。

试图实现公共的类,但它不允许我。

class myWebClient extends WebViewClient
        {
            @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon) {
                // TODO Auto-generated method stub
                super.onPageStarted(view, url, favicon);
            }
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                // TODO Auto-generated method stub
                view.loadUrl(url);
                return true;
            }
            @Override
            public void onPageFinished(WebView view, String url) {
                // TODO Auto-generated method stub
                super.onPageFinished(view, url);

            }
        }

这是我想调用方法来检查 URL 之前的代码;

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final EditText phone = (EditText) findViewById(R.id.phone1);
        final EditText login = (EditText) findViewById(R.id.uname);
        final EditText pass = (EditText) findViewById(R.id.password);
        phone.requestFocus();
        final Context context = this;
        submit  = (Button)findViewById(R.id.submit);
        sbutton = (Button)findViewById(R.id.loginCred);
        chcred = (CheckBox) findViewById(R.id.cBox);
        webView = (WebView) findViewById(R.id.webView1);
        webView.getSettings().setJavaScriptEnabled(true);
        webView.setWebViewClient(new WebViewClient());
        submit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                textstring(phone, login, pass);
                encPhone = URLEncoder.encode(Phone);
                encLogin = URLEncoder.encode(Login);
                encPass = URLEncoder.encode(Pass);
                if (chcred.isChecked()) {
                    SharedPreferences.Editor editor = getPreferences(MODE_PRIVATE).edit();
                    prefwrite(editor);
                }
                pushurl();
                clear(phone, login, pass);
            }
        });
        WebViewClient() //Right here is where I want to call it

这可以帮助您:https://developer.android.com/reference/android/webkit/WebViewClient.html#onPageStarted(android.webkit.WebView, java.lang.String, android.graphics.Bitmap)

该事件不会在 url 更改时通知您,但在页面开始加载时通知您,此时您只需验证当前 URL。

试试这个webView.setWebViewClient(new WebViewClient() {

                @Override
                public boolean shouldOverrideUrlLoading(WebView webview, String url) {
                    Uri uri = Uri.parse(url);
                    if (uri.getScheme().contains("google") || uri.getScheme().contains("tel")) {
                        try {
                            Intent intent = Intent.parseUri(url, Intent.URI_INTENT_SCHEME);
                            if (intent.resolveActivity(getPackageManager()) != null)
                                startActivity(intent);
                            return true;
                        } catch (URISyntaxException use) {
                            Log.e("TAG", use.getMessage());
                        }
                    } else {
                        webview.loadUrl(url);
                        Log.e("url", url);
                    }
                    return true;
                }
               @Override
               public void onPageStarted(WebView view, String url, Bitmap favicon) {
                   super.onPageStarted(view, url, favicon);
               }
               @Override
                public void onPageFinished(WebView view, String url) {
                    super.onPageFinished(view, url);
                }
               @Override
               public void doUpdateVisitedHistory(WebView view, String url, boolean isReload) {
                   super.doUpdateVisitedHistory(view, url, isReload);
                   String currentUrl=view.getUrl();
                  
               }
           });
           webView.loadUrl(url);
<小时 />这里的webView是

我的WebView,url是我在webview中使用的URL。

如果您想对 url 的更改进行一些更改,请转到

@Overridepublic void doUpdateVisitedHistory(WebView view, String url, boolean isReload) {super.doUpdateVisitedHistory(view, url, isReload);字符串 currentUrl=view.getUrl();

               }

您将在此调用中获得 URL 更新。

最新更新