URL がロードされている Web ビューがあり、クリック可能な URL がいくつかありますが、問題は、Web ビューにロードされたページのリンクをクリックすると、デフォルトのブラウザで開き、クリックしたときにすべてのブラウザを含むダイアログを開きたいことです。デバイスにあるリンクで、ブラウザを選択するように求め、選択したブラウザで開く必要がありますか?
3 に答える
デフォルトのクリック動作のオーバーライド
ユーザーがWebViewのリンクをクリックすると、デフォルトの動作では、リンクを処理できるデフォルトのアプリをロードします。したがって、Web URLをクリックすると、ブラウザが開いてそれを処理します。ローカルに構築されたWebページ間を移動しようとした場合は、この機能をオーバーライドする必要があります。幸いなことに、これを処理するのは難しくありません。次のように、WebViewのWebViewClientをWebViewClientの新しいインスタンスに設定することで、これを非常に迅速に行うことができます。
OnCreate:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
WebView webView = (WebView) findViewById(R.id.webView1);
WebViewClient viewClient = new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Intent intent = new Intent(Intent.ACTION_VIEW,Uri.parse(url));
startActivity(intent);
view.loadUrl(url);
return true;
}
};
webView.setWebViewClient(viewClient);
webView.loadUrl("http://www.google.com");
}
WebViewClientの詳細については、以下のリンクを確認してください
しかし、問題は、webview にロードされたページのリンクをクリックすると、デフォルトのブラウザで開くことです
選択した場合
デフォルトでこのアプリケーションを使用するチェックボックス
その後、Android はユーザーへのオプション リストの表示を停止し、選択したデフォルト ブラウザでリンクを開き続けます。
あなたが持つことができる唯一の解決策は、設定に入ってその設定を明確にすることです.そして、それ以降のアンドロイドは、リストを使用して完全なアクションを表示します.
また、複雑な方法で移動したい場合は、Javascript インジェクションを使用して、リンクがクリックされたときに Android コードを呼び出して、ブラウザ リストをプログラムでユーザーに表示することができます。
と を使用PackageManager
しqueryIntentActivityOptions()
てアクティビティを除外し、ユーザーが選択できる他のアクティビティのリストを取得できます。
@Neha モバイルで利用できるブラウザの数によって異なります。たとえば、デフォルトのブラウザしかない場合、そのブラウザにのみリダイレクトされます。次回アプリを実行するときにクロムブラウザをインストールした場合、ブラウザオプションを選択するように求められます。