0

私はWebView自分のページで使用していて、ローカルファイルassetsを使用してメインHTMLページの外部Webサイト(ローカルではない)に表示してWebViewいますが、ユーザーデバイスのデフォルトブラウザでそのリンクだけを開きたいです この写真の弟子の状況

これは「onCreate」メソッドの私のコードです

WebView v;

v=(WebView) rootView.findViewById(R.id.webView1);
v.getSettings().setJavaScriptEnabled(true);
WebViewClient vc= new WebViewClient();
v.setWebViewClient(vc);
v.loadUrl("file:///android_asset/home.html");

アプリケーションを実行すると、内部リンクは正常に機能しますが、外部リンク「www.apple.com」が Web ビューに表示されます

同じ質問を検索し、この解決策を見つけましたが、それでも外部リンクは WebView で開きます

WebView webView = (WebView) rootView.findViewById(R.id.webView1);
webView.setWebViewClient(new MyWebViewClient());
String url = "file:///android_asset/home.html";
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl(url);

とクラス

class MyWebViewClient extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        if(url.contains("http")){ // Could be cleverer and use a regex
            return super.shouldOverrideUrlLoading(view, url); // Leave webview and use browser
        } else {
            view.loadUrl(url); // Stay within this webview and load url
            return true;
        }
    }
}
4

1 に答える 1

3

変化する

  if (url.contains("http")) { // Could be cleverer and use a regex
    return super.shouldOverrideUrlLoading(view, url); // Leave webview and use browser
  } else {
    view.loadUrl(url); // Stay within this webview and load url
    return true;
  }

 if (url.contains("http")) { // Could be cleverer and use a regex
    Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
    mContext.startActivity(intent);
    return true;
 }
 return false;

注 :mContextをアクティビティ コンテキストに置き換えます。

于 2015-06-19T09:03:23.033 に答える