2012-05-17 109 views

回答

8

Android的web視圖可訪問性是通過在蜂窩JavaScript注入及以上的啓用(爲pointed out by alanv)。該用戶必須啓用它:

  • 打開輔助模式,包括在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設備保留say WebView或根本沒有。

+1

通過啓用「設置」>「輔助功能」>「注入Web腳本」,可以在Honeycomb及以上版本中使用WebView訪問鍵盤。在Jelly Bean及以上版本中,通過啓用「設置」>「輔助功能」>「增強Web可訪問性」,WebView可通過鍵盤訪問(並且在啓用JS時可觸摸可探測)。 – alanv

3

我也遇到4.0設備上的這個問題。我最終在WebView的頂部放置了一個TextView,使得TextView背景和文本透明。將TextView的文本內容設置爲WebView的內容,並刪除所有HTML標記。

一個最不雅的解決方案,我知道,但嘿工程....

1

我知道如何通過Accessibility API訪問Web查看內容,當AccessibilityNodeInfo.getText()爲null或「null」時,調用AccessibilityNodeInfo.getContentDescription()。

簡單的代碼:

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()可以得到網頁視圖內容。

對不起我的英文不好。