如何在浏览器中打开外部URL和Webview中的内部URL

时间:2017-02-15 09:58:27

标签: android url browser webview external

我关注的是在Android WebView中加载浏览器中的外部URL和内部URL。尝试在stackoverflow中搜索,但自谷歌的新更新

“”“shouldOverrideUrlLoading(WebView view, String url) 此方法在API级别24中已弃用。 请改用shouldOverrideUrlLoading(WebView, WebResourceRequest)。 “”

尝试执行下面的代码,但它从未起作用

@Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        if (Uri.parse(url).getHost().equals("http://google.com")) {
            return true;
        }else{
            Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
            startActivity(intent);
            return false;
        }
    }

获取此错误: 错误:(26,5)错误:方法不会覆盖或实现超类型的方法

此外,正如我用Google搜索并了解到的那样,该方法也已弃用,不再使用。

有人可以帮助我成功解析外部URL到浏览器。

提前谢谢。

编辑一个是下面

import android.content.Intent;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.webkit.WebResourceRequest;
import android.webkit.WebView;
import android.webkit.WebViewClient;

import java.net.URL;

public class rut extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_rut);

        WebView webView = (WebView) findViewById(R.id.webView);
        webView.loadUrl("http://google.com/r.html");
        webView.getSettings().setJavaScriptEnabled(true);
        webView.setWebViewClient(new WebViewClient());
    }

    webview.setWebViewClient(new WebViewClient(){
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            if(url.contains("http://google.com/")) { //check for internal url
                return super.shouldOverrideUrlLoading(view, url);
            }else{
                Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
                intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                startActivity(intent);
                return true;
            }
        });


}

1 个答案:

答案 0 :(得分:4)

试试这个。

webview.setWebViewClient(new WebViewClient(){
    @Override
                public boolean shouldOverrideUrlLoading(WebView view, String url) {
                    if(url.contains("internal_url")) { //check for internal url
                        return super.shouldOverrideUrlLoading(view, url);
                    }else{
                        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
                        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                        startActivity(intent);
                        return true;
                    }
                }});
相关问题