3

Androidは、クリックを開くためのデフォルトの方法を変更し、新しいブラウザではなくWebビューでクリックを開くようになりました。これはすでにここで尋ねられていますが、私が試したすべてのことはWebViewのリンクを開きます。誰かがクリックのキャプチャの詳細を教えてくれるので、強制しlink to open in the default browserます。

4

2 に答える 2

0

最後に、それが最善の方法であるかどうかはわかりませんが、機能します。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 ステートメントを使用しました。

于 2012-10-09T16:10:23.097 に答える
0

ボタンのonclickでこれを使用します:

Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.google.com"));

startActivity(browserIntent);

解析するには、先頭にhttp://が必要です。

于 2012-10-08T20:23:46.447 に答える