2016-11-10 12 views
12

मैं किसी अन्य ऐप की टेक्स्ट सामग्री तक पहुंचने का प्रयास कर रहा हूं जो शायद गैर-मूल (जेएस + एचटीएमएल) आधारित ढांचे का उपयोग करके बनाया गया है।एंड्रॉइड में एक्सेसिबिलिटी सर्विस का उपयोग कर वेबव्यू तत्व के एक्सेसिबिलिटी नोडइन्फो की एचटीएमएल सामग्री तक कैसे पहुंचे?

इसलिए, मुझे लगा कि मैं वेबव्यू तत्व से संबंधित एक एक्सेसिबिलिटी नोड से डेटा तक पहुंचने का प्रयास करूंगा। हालांकि, मैं) gettext तरह के तरीकों के बाद से सामान्य तरीकों (का उपयोग कर शाब्दिक/HTML डेटा हड़पने ही काम करने में असमर्थ हूँ अगर यह इस तरह के एक TextView, बटन आदि

public class MyAccessibilityService extends AccessibilityService { 

@Override 
public void onAccessibilityEvent(AccessibilityEvent accessibilityEvent) { 
    AccessibilityNodeInfo accessibilityNodeInfo = accessibilityEvent.getSource(); 
    if (accessibilityNodeInfo == null) { 
     return; 
    } 
    int childCount = accessibilityNodeInfo.getChildCount(); 
    for (int i = 0; i < childCount; i++) { 
     AccessibilityNodeInfo accessibilityNodeInfoChild = accessibilityNodeInfo.getChild(i); 
     myRecursiveFunc(accessibilityNodeInfoChild); 
    } 
} 

@Override 
public void onInterrupt() { 

} 


private void myRecursiveFunc(AccessibilityNodeInfo accessibilityNodeInfoChild) { 
    if (accessibilityNodeInfoChild.getChildCount() > 0) { 
     for (int j = 0; j < accessibilityNodeInfoChild.getChildCount(); j++) { 
      AccessibilityNodeInfo child = accessibilityNodeInfoChild.getChild(j); 
      if (child != null) { 
       myRecursiveFunc(child); 
      } 
     } 
    } else { 
     if ("android.webkit.WebView".equals(accessibilityNodeInfoChild.getClassName())) { 

      //===========This is a WebView's AccessibilityNodeInfo !!!! 
      //===========How to get HTML data from nodeinfo object here ?? 

     } 
    } 
} 

}

के रूप में एक देशी एंड्रॉयड तत्व है

उत्तर

5

क्या आपकी सेवा FLAG_REQUEST_ENHANCED_WEB_ACCESSIBILITY है?

final AccessibilityServiceInfo info = getServiceInfo(); 
info.flags |= AccessibilityServiceInfo.FLAG_REQUEST_ENHANCED_WEB_ACCESSIBILITY; 
setServiceInfo(info); 

Android के डिफ़ॉल्ट AccessibilityService (TalkBack) इस WebView रों में पाठ पढ़ने स्क्रीन करने के लिए सक्षम होने के लिए की आवश्यकता है। स्रोत की जांच से, ऐसा लगता है कि कुछ स्क्रिप्ट इंजेक्शन है कि और कुछ थोड़ा क्रम में hackiness HTML तत्वों की पाठ्य सामग्री प्राप्त करने के लिए सक्षम होने के लिए

आप अपने स्रोत की जांच करनी चाहिए:

TalkBackService

WebInterfaceUtils

ProcessorWebContent

संबंधित मुद्दे