2011-03-29 18 views
6

Oluşturduğum bir web görüşüm var. Otomatik olarak tel: urls içine numaralandırma gibi görünüyor. Bu yeteneğin kaldırılması için bir yol görmedim (en azından metin görünümünde etkinleştirmenin yoluna benzeyen bir şey). Webview otomatik Linkify devre dışı bırak

kod

oldukça basittir:

// 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); 

Ben sayfanın alt kısmında bir telif hakkı bildirimi var, android çevirici açılır tıklanabilir bağlantı haline 2011 değişiyor. Ayrıca, App sürüm 1.0.0 çeviricide açılır.

Bu işlevselliği devre dışı bırakmanın bir yolu var mı?

Güncelleme: Cihazın bağımlı olduğunu görüyordum ... Droid X'de gerçekleşiyor, ama Samsung Captivate değil, Nexus S'de değil, emülatörde değil.

+0

Bir metin görünümü kullanmanın da iyi olacağını söylemiştiniz. Burada http://android-developers.blogspot.com/2008/03/linkify-your-text.html – Fender

cevap

0

Kendi Web Görünümünüzden bir numara seçerek Dialer'ı başlattığını gördüğüme şaşırdım.

WebViewClient :: shouldOverrideUrlLoading() öğesini geçersiz kılmadığınız sürece ve URL düzeninin "tel" olduğunu algılarsanız ve Çevirici etkinliğini başlatmazsanız, WebView'unuzdan asla bir Çevirici başlatmaz. ShouldOverrideUrlLoading() içinde tel: scheme işlemediğinden emin misin?

7

Bunu yapmak için bir yol var - daha çirkin, iki katmanlı, ama yine de bir çözüm.

Sen

  1. webview açıkça stilleri ve dokunsal geribildirim uygulamak için yüklü sayfayı değil anlatmak otomatik linkifiable öğeleri
  2. nasıl işleyeceğini değiştirmek gerekir. html olarak
    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) {...} 
    }); 
    

    etiketinin içine aşağıdaki meta etiketleri belirtin: Bu yardımcı olur

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

Umut.

+1

adreslerine nasıl link ekleyeceğinize dair bir bağlantı bulabilirsiniz. Üçüncü bir biçim algılama türü olduğunu düşünüyorum: . Telefon-no otomatik tel durur: bağlantılar, e-posta otomatik mailto durur: bağlantılar ve adres durur geo: bağlantılar. E-posta veya adresle ilgili resmi bir doküman bulamıyorum. http://developer.apple.com/library/safari/#documentation/appleapplications/reference/SafariHTMLRef/Articles/MetaTags.html yalnızca telefondan bahseder. –

-2

Sen external/webkit/WebKit/android/nav/CacheBuilder.cpp gerçek algılama yapmak kodunu bulabilirsiniz: vb FindPartialNumber() ve.

Bunu devre dışı bırakabilir veya mantığı istediğiniz gibi değiştirebilirsiniz.