クリックUrlを開くデフォルトのブラウザ
-
24-09-2019 - |
質問
私はロード外部のURLによっ WebView
.現在私が必要であることは、ユーザがクリックのリンク先のページの読み込まれたもので仕事のように通常のブラウザのリンクと同じ WebView
.そのデフォルトのブラウザ上のロイヤリティ料金ページにありますか?
していきます。今まで使用すれば問題ありません。い忘れられたの?
解決
使用している場合は、 WebView
い相手に自分をクリックされない場合、デフォルトのAndroid活動しています。
を監視できるイベント WebView
を使用 WebViewClient
.方法にしたいです shouldOverrideUrlLoading()
.することができ自分の行動が特定のURLを選択します。
設定する WebViewClient
ご WebView
を使用 setWebViewClient()
方法.
を見れば WebView
サンプルのSDK ありえなのだと考えている。でき:
private class HelloWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}
他のヒント
は、いくつかのケースでは、あなたはonLoadResourceのオーバーライドが必要になる場合があります。この場合には、私は次のことを試してみました。
@Override
public void onLoadResource(WebView view, String url)
{
if (url.equals("http://redirectexample.com"))
{
//do your own thing here
}
else
{
super.onLoadResource(view, url);
}
}
公式ドキュメントURLを処理起動アプリケーション。あなたは、このデフォルトの動作
をオーバーライドする必要があります myWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
return false;
}
});
または方法には条件付きロジックがない場合、単に
これを行いますmyWebView.setWebViewClient(new WebViewClient());
あなたのコードでは、この2行を追加します -
mWebView.setWebChromeClient(new WebChromeClient());
mWebView.setWebViewClient(new WebViewClient());
boolean shouldOverrideUrlLoading(WebView view, String url)
を使用する必要があり、新たなデバイスをサポートしている場合は、メソッドboolean shouldOverrideUrlLoading (WebView view, WebResourceRequest request)
は、API 24で廃止されました。
あなたはこのような何かを行うことによって、両方を使用することができます:
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
newsItem.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
view.loadUrl(request.getUrl().toString());
return true;
}
});
} else {
newsItem.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
});
}
Arulx Zの答えは私が探していたまさにでした。
私は(したがって、外部のWebブラウザを起動していない)に関係なく、クリックされたハイパーリンクのアプリ内のWebブラウジングを保つため、recyclerviewとwebviewsにナビゲーションドロワーでアプリを書いています。
:そのためには、次のコード2行を置くことで十分であろう mWebView.setWebChromeClient(new WebChromeClient());
mWebView.setWebViewClient(new WebViewClient());
正確にあなたのWebViewの文の下ます。
ここに私の実装WebViewのコードの例があります:
public class WebView1 extends AppCompatActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
WebView wv = (WebView) findViewById(R.id.wv1); //webview statement
wv.setWebViewClient(new WebViewClient()); //the lines of code added
wv.setWebChromeClient(new WebChromeClient()); //same as above
wv.loadUrl("http://www.google.com");
}}
この方法では、ウェブサイトでクリックしたすべてのリンクがあなたのWebViewの内側にロードされます。
(すべてのSDKの更新でAndroidのメーカー1.2.2を使用)