Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/189.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何强制webview应用程序打开其中的链接,而不是根据域在默认android浏览器中打开链接?_Android_Webview - Fatal编程技术网

如何强制webview应用程序打开其中的链接,而不是根据域在默认android浏览器中打开链接?

如何强制webview应用程序打开其中的链接,而不是根据域在默认android浏览器中打开链接?,android,webview,Android,Webview,我刚刚开始开发android应用程序,所以我需要一些关于我的webview应用程序的帮助,这很容易理解。因此,这是我的具体问题: 如何强制webview应用程序在其中打开链接,而不是根据域在默认浏览器中打开链接 请随答案附上此代码的编辑/扩展版本: public class WebViewActivity extends Activity { private WebView webView; public void onCreate(Bundle savedInstanceState) {

我刚刚开始开发android应用程序,所以我需要一些关于我的webview应用程序的帮助,这很容易理解。因此,这是我的具体问题:

如何强制webview应用程序在其中打开链接,而不是根据域在默认浏览器中打开链接

请随答案附上此代码的编辑/扩展版本:

public class WebViewActivity extends Activity {

private WebView webView;

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.webview);

    webView = (WebView) findViewById(R.id.webView1);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.loadUrl("www.example.com");
我想在webview中打开其内容的域是,比方说:www.qwerty.com默认浏览器应打开其他链接


非常感谢。

您必须创建一个
WebViewClient

public class MyWebViewClient extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);
        return true;
    }
}
然后将其设置为您的
WebView
,如下所示:

webview.setWebViewClient(new MyWebViewClient());

您必须评估在自定义
WebViewClient
中传递的url。 布尔值
shouldOverrideUrlLoading
具有true和false值。 当true时,您将url发送到浏览器;当false时,您将停留在
WebView

public class MyWebViewClient extends WebViewClient {
@Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
    if (Uri.parse(url).getHost().equals("www.qwerty.com")) {
        /* 
         This is my web site, so do not override; 
         let my WebView load the page
        */
        return false;
    }
       /* 
         Otherwise, the link is not for a page on my site, 
         so launch another Activity that handles URLs
       */
        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
        startActivity(intent);
        return true;    
    }
}
然后从您的活动中调用新的
WebClient

webview.setWebViewClient(new MyWebViewClient());

哇!谢谢你的快速回答!但是:在我的例子www.qwerty.com中,我必须在哪里输入域?你不需要输入域。WebViewClient将覆盖每个域。但现在每个链接都会在webview中打开。那不是我想要的。只有域名为“www.query.com”的链接才能在webview中打开。。。你能帮帮我吗?