2017-05-31 8 views
0

AccessibilityService.getWindows()を使用して、画面に現在表示されているView要素のリストを取得できますか? 1つは一番上の要素で、パッケージ名はその要素に属していますか?もしそうなら、どうですか?Android AccessibilityService.getWindows()を使用して画面上のView要素のリストを取得する

私は全面的なアクセシビリティサービスを構築しようとしていません。画面上のウィンドウのリストを取得するgetWindows()メソッドのみに興味があります。私は次のコードを試しました:

AccessibilityService myService = new AccessibilityService() { 
    @Override 
    public void onAccessibilityEvent(AccessibilityEvent event) { 

    } 

    @Override 
    public void onInterrupt() { 

    } 
}; 
List<AccessibilityWindowInfo> windowList = myService.getWindows(); 
if (windowList.isEmpty()) { 
    Log.d(TAG, "Window list is empty"); 
} else { 
    Log.d(TAG, "Window list is not empty"); 
} 

しかし、ウィンドウリストは常に空です。私は何か間違っていると確信していますが、私はgetWindows()を使用してドキュメント/例を見つけることができないようです。

ありがとうございました。

答えて

0

このようにアクセシビリティサービスをインスタンス化することはできません。アクセシビリティサービスは、情報を見るための親密なアクセスを得る。アクティビティや他のクラスから無制限に立ち上げることを許可することは、非常に深刻なセキュリティ上のリスクになります。アクセシビリティサービスをシステムに登録し、アクセシビリティサービスの設定メニューからアクセシビリティサービスを開始する必要があります。その後、

<accessibility-service 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:description="@string/accessibility_service_description" 
android:accessibilityEventTypes="typeAllMask" 
android:accessibilityFlags="flagReportViewIds" 
android:canRetrieveWindowContent="true" 
android:canRequestTouchExplorationMode="true" 
android:accessibilityFeedbackType="feedbackSpoken" 
android:notificationTimeout="100" 
android:settingsActivity="com.yourpackage.MyServiceSettingsActivity" 
/> 

:このようなものが含まれている「service_config」と呼ばれる生のXMLファイルと共に

<application 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name"> 

    <service 
     android:name=".MyAccessibilityService" 
     android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE" > 

     <intent-filter> 
      <action android:name="android.accessibilityservice.AccessibilityService" /> 
     </intent-filter> 

     <meta-data 
      android:name="android.accessibilityservice" 
      android:resource="@xml/service_config" /> 

    </service> 

    <activity android:name=".MyServiceSettingsActivity" 
     android:label="@string/app_name"> 

     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.accessibilityservice.SERVICE_SETTINGS" /> 
     </intent-filter> 
    </activity> 
</application> 

:これを行うには、次のようになりますあなたのマニフェストファイルにエントリを持つべきですTalkBackを開始したのと同じ地域からサービスを開始するには、サービスのスイッチをオンにします。

関連する問題