6

作成しているWebビューがあります。番号をtel:urlsに自動的にリンクしているようです。この機能を削除する方法はわかりませんでした(少なくとも、テキストビューで有効にする方法と似たものはありません)。

コードは非常に単純です。

// populate the web view
WebView webView = (WebView) findViewById(R.id.app_info_webview);
webView.getSettings().setJavaScriptEnabled(true);
webView.setScrollBarStyle(WebView.SCROLLBARS_INSIDE_OVERLAY);

webView.setBackgroundColor(0);
String url = APP_INFO_BODY_HTML + "?versionName=" + versionName;

webView.loadUrl(url);

ページの下部に著作権表示があります。Androidは2011年をダイヤラを開くクリック可能なリンクに変更しています。また、アプリバージョン1.0.0がダイヤラで開きます。

この機能を無効にする方法はありますか?

更新:これはデバイスに依存しているようです... Droid Xで発生しますが、Samsung Captivateでも、Nexus Sでも、エミュレーターでも発生しません。

4

3 に答える 3

7

それを行う方法があります-かなり醜い、2層ですが、それでも回避策です。

あなたがすべき

  1. webview が自動リンク可能なアイテムを処理する方法を変更します
  2. スタイルと触覚フィードバックを適用しないように、読み込まれたページに明示的に指示します。

    mWebView.setWebViewClient( new WebViewClient() {
    
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, final String url) {
        Uri uri = Uri.parse(url);
    
        //TODO analyse the uri here 
        //and exclude phone and email from triggering any action
    
        return false;
    }
    
    public void onReceivedError(WebView view, int errorCode, 
                                            String description, String failingUrl) {}
    
    public void onPageFinished (WebView view, String url) {...}
    
    public void onPageStarted(WebView view, String url, Bitmap favicon) {...}
    
    public void onLoadResource(WebView view, String url) {...}
    }); 
    

    HTML で、タグ内に次のメタ タグを指定します。

    <meta name="format-detection" content="telephone=no" />
    <meta name="format-detection" content="email=no" />
    

お役に立てれば。

于 2011-08-03T05:21:58.677 に答える
0

独自の WebView から番号を選択すると Dialer が起動することに驚きました。

WebViewClient::shouldOverrideUrlLoading() をオーバーライドし、URL スキームに「tel」が含まれていることを検出して Dialer アクティビティを開始しない限り、WebView から Dialer を起動することはありません。shouldOverrideUrlLoading() で tel: スキームを処理していませんか?

于 2011-03-29T13:24:28.650 に答える
-2

external/ webkit/ WebKit/ android/ nav/ CacheBuilder.cpp:などで実際の検出を行うコードを見つけることができますFindPartialNumber()

無効にするか、必要に応じてロジックを変更できます。

于 2011-08-17T02:59:44.160 に答える