0

ユーザーが webview でクリックしたリンクを取得するにはどうすればよいですか? 例: 私の webview は、ユーザーを情報と PDF を一覧表示する Web サイトに移動させます。ユーザーが PDF をクリックすると、ユーザーがクリックした PDF ファイルのリンクを取得し、それを Google のオンライン ビューアーに入れたいと考えています。リンクをクリックしたことを傍受しないため、私が持っているコードは機能しません。何か案は?

ここに私が持っているものがあります:

webview.setWebViewClient(new WebViewClient() {
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            // do your handling codes here, which url is the requested url
            // probably you need to open that url rather than redirect:
            if (url.startsWith("tel:")) {
                startActivity(new Intent(Intent.ACTION_DIAL, Uri.parse(url)));
            } else if (url.startsWith("mailto:")) {
                url = url.replaceFirst("mailto:", "");
                url = url.trim();
                Intent i = new Intent(Intent.ACTION_SEND);
                i.setType("plain/text").putExtra(Intent.EXTRA_EMAIL,
                        new String[] { url });
                startActivity(i);

            } else if (url.startsWith("geo:")) {
                try {
                } catch (Exception e) {
                    System.out.println(e);
                }

            } else if (url.endsWith("pdf")) {
                try{
                    String pdf = (url);
                    webview.loadUrl("http://docs.google.com/viewer?url=" + pdf);
                    }
                    catch (ActivityNotFoundException e)
                    {
                     Toast.makeText(atcFaa.this, "No PDF Viewer Installed", Toast.LENGTH_LONG).show();
                    }

            }

            else {
                view.loadUrl(url);
            }
            return true;
            // then it is not handled by default action
        }
    });
webview.loadUrl("http://www.somewebsite.com/publications/");
}
4

1 に答える 1

4

オーバーライドしたいメソッドはWebViewClient.shouldInterceptRequest(WebView view, String url)だと思います

public WebResourceResponse shouldInterceptRequest (WebView view, String url)
  • ホスト アプリケーションにリソース要求を通知し、アプリケーションがデータを返せるようにします。戻り値が null の場合、WebView は通常どおりリソースの読み込みを続行します。それ以外の場合は、返された応答とデータが使用されます。注: このメソッドはネットワーク スレッドによって呼び出されるため、クライアントがプライベート データにアクセスするときは注意が必要です。パラメーター

webview shouldinterceptrequest の例を参照してください

于 2012-05-09T23:00:31.607 に答える