Androidは、クリックを開くためのデフォルトの方法を変更し、新しいブラウザではなくWebビューでクリックを開くようになりました。これはすでにここで尋ねられていますが、私が試したすべてのことはWebViewのリンクを開きます。誰かがクリックのキャプチャの詳細を教えてくれるので、強制しlink to open in the default browser
ます。
2 に答える
最後に、それが最善の方法であるかどうかはわかりませんが、機能します。onCreate 内に次のコードを配置しました。WebView に表示するページに設定された文字列 strSiteUrl。
/* Load WebView in memory */
WebView webv = (WebView) findViewById(R.id.webv);
webv.setWebViewClient(new WebViewClient() {
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Intent browserIntent = new Intent();
browserIntent.setAction(Intent.ACTION_VIEW);
browserIntent.addCategory(Intent.CATEGORY_BROWSABLE);
browserIntent.setData(Uri.parse(url));
startActivity(browserIntent);
return false;
}
}); //End webv.setVewView
/* Configure WebView */
WebSettings webSettings = webv.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
webSettings.setSupportMultipleWindows(true);
webv.loadUrl(strSiteUrl);
ユーザーが WebView ページのリンクをクリックすると、既定のブラウザーが開き、リンクされたページが表示されます。ただし、クリックされたリンクに応じて戻るボタンをクリックすると、WebView は元のページに戻るか、リンクされたページを表示します。これは私が望んでいたものではありません.WebViewに元のページを表示したかっただけです。一部のリンクが正しく返されなかった理由がわかりません。おそらくそれらのリンクはリダイレクトでしたか? この問題を回避するために、onStart 呼び出しを使用しました。配置して、ビュー webv をグローバルにしました
WebView webv;
私のグローバル宣言で。webv の割り当てをに変更しました
webv = (WebView) findViewById(R.id.webv);
次に、次の onStart を作成しました
@Override
public void onStart() {
super.onStart();
String strReturnUrl = String.valueOf(webv.getUrl());
Log.i("URL!", strReturnUrl);
if (!strReturnUrl.contentEquals(strSiteUrl)) {
webv.loadUrl(strSiteUrl);
}
}
返された URL をログに書き込むと、戻るボタンが押されたときに、クリックされたリンクに応じて異なる URL が返されることが証明されました。元の URL の不要なリロードを防ぐために、if ステートメントを使用しました。
ボタンのonclickでこれを使用します:
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.google.com"));
startActivity(browserIntent);
解析するには、先頭にhttp://が必要です。