2012-05-17 17 views

答えて

8

....私は知っているが、ちょっとそれは動作のAndroidのWebViewのアクセシビリティは、ハニカムにし、(pointed out by alanvなど)の上にはJavaScript注射を介して有効になっています。 4.0以降では「タッチガイド」を含む、アクセシビリティモードをオンに

  • ユーザーはでそれを有効にする必要があります。
  • 「拡張Webアクセシビリティ」を有効にするか、古いデバイスでは「Webスクリプトを挿入する」を有効にします。

これは、ロードされた各ページに<script>タグを使用してjavascriptを挿入することで機能します。すべてのコンテンツがこのjavascriptでうまく再生されるわけではないので、注意しなければならないことに注意してください。

2

いいえ、WebViewは、少なくともAndroidのバージョン4.0のように、内蔵のトークバックサービスからはアクセスできません。代わりに、視覚障害のあるユーザーはinstructed to useのようなものです。Mobile Accessibility for Androidのようなもので、音声によるブラウジングインターフェースを提供します。私はあなたのコンテンツを他のプロセスが利用できるようにすることを提案し、盲目のユーザーが選択したブラウザでコンテンツを見ることを可能にします。コンテンツを表示する意図を開始してこれを行いました:

public static void loadUrlInBrowser(Context c, Uri uri) { 
    Intent i = new Intent(Intent.ACTION_VIEW); 
    i.setDataAndType(uri, "text/html"); 
    c.startActivity(i); 
} 

または、WebViewのコンテンツの説明を設定できます。これはAndroid 4.0の4.0より前のバージョンでのみ動作するように見えることに注意してください。私は、4.0デバイスがsay WebViewか全く何も持たないことを発見しました。

+1

WebViewはHoneycomb以上で、[設定]> [アクセシビリティ]> [Webスクリプトを挿入]を有効にすることでキーボードからアクセスできます。 Jelly Bean以上では、WebViewは、[設定]> [アクセシビリティ]> [Webアクセシビリティの強化]を有効にすることによって、キーボードでアクセスできます(JSが有効な場合は触れることができます)。 – alanv

3

4.0デバイスでもこの問題が発生しました。 WebViewの上にTextViewを配置し、TextViewの背景とテキストを透明にしました。 TextViewのテキストコンテンツは、すべてのHTMLタグが取り除かれた状態でWebViewのコンテンツに設定されます。

A最も洗練ソリューションは、

1

AccessibilityNodeInfo.getText()がnullまたは "null"の場合、AccessibilityNodeInfo.getContentDescription()を呼び出すと、Accessibility APIによってWeb表示コンテンツにアクセスする方法が分かります。

シンプルコード:

private String getTextOrDescription(AccessibilityNodeInfo info) { 
    String text = String.valueOf(info.getText()); 

    if (isEmptyOrNullString(text)) { 
     text = String.valueOf(info.getContentDescription()); 
    } 
    return text; 
} 

private boolean isEmptyOrNullString(String text) { 
    if (TextUtils.isEmpty(text) || text.equalsIgnoreCase("null")) { 
     return true; 
    } 
    return false; 
} 

getContentDescriptionは、()は、Webビューのコンテンツを取得することができます。

私の貧しい私の英語のために申し訳ありません。