Android -- > 무장 애 서비스 (AccessibilityService) 개발 안내 (주로 보너스 쟁탈, 인근 친구 추가 등 기능)

9625 단어 Android
가장 좋 은 방법 은 정부, 정부, 정부의 문 서 를 보 는 것 이다.상세 하 지 는 않 지만 권위 가 충분 하 다.
무장 애 공식 안내:https://developer.android.com/guide/topics/ui/accessibility/index.html
추천 박문:http://www.tuicool.com/articles/FRFnq2 http://blog.csdn.net/itfootball/article/details/21953763
1: AndroidManifest. xml 추가 설명
<manifest> 
  <application> 
    <service  android:name = ".RsenAccessibilityService" 
        --            .                -->
        android:label = "@string/accessibility_service_label" 
        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/accessibility_service_config"  /> 
    service> 
    <uses-permission  android:name = "android.permission.BIND_ACCESSIBILITY_SERVICE"  /> 
  application> 
manifest>

주의: RsenAccessibilityService 는 AccessibilityService 를 계승 하고 실현 해 야 합 니 다.
public void onAccessibilityEvent(AccessibilityEvent event) {}
public void onInterrupt() {}

이 두 가지 방법.
1.1: accessibility_service_config. xml 내용
xml version="1.0" encoding="utf-8"?>
"http://schemas.android.com/apk/res/android"
    //          ,               
    android:description="@string/app_accessibility_description"
    //  EventTypes   ,     ,  
    android:packageNames="com.tencent.mm,com.tencent.mobileqq"
    //       
    android:accessibilityEventTypes="typeAllMask"
    //    :    .      "   ".
    android:accessibilityFeedbackType="feedbackAllMask"
    //  2        ,       
    android:notificationTimeout="100"
    //    ,                   ,      Activity ;
    android:settingsActivity="com.angcyo.SettingsActivity"
    //       ,         
    android:accessibilityFlags="flagDefault"
    //                 ,          .        ;
    android:canRetrieveWindowContent="true"/>

구체 적 인 속성 설명:https://developer.android.com/guide/topics/ui/accessibility/services.html
2: Accessibility Service 서비스의 작성
public class RsenAccessibilityService extends AccessibilityService {

  @Override
  protected void onServiceConnected() {
      super.onServiceConnected();
      // setServiceInfo();//          xml      
  }

  @Override
  public boolean onUnbind(Intent intent) {
      //     ,  
      return super.onUnbind(intent);
  }

  @Override
  public void onAccessibilityEvent(AccessibilityEvent event) {
      //                   ,      .      
  }

  @Override
  public void onInterrupt() {
      //          .      
  }
}

이 단계 에 도달 하면 프로그램 은 이미 정상적으로 운행 할 수 있다.com. tencent. mm, com. tencent. mobileqq 두 가방 의 프로그램 에 우리 가 감청 한 이벤트 (android: accessibility EventTypes = "typeAllMask") 가 있 으 면 onAccessibility Event 방법 이 바 뀝 니 다. 그러면 다음 작업 을 진행 할 수 있 습 니 다.(메모: 시스템 에서 이 서 비 스 를 시작 해 야 합 니 다)
상용 이벤트:
TYPE_WINDOW_STATE_CHANGED   :32
TYPE_VIEW_SELECTED          :4
TYPE_VIEW_FOCUSED           :8
TYPE_WINDOW_CONTENT_CHANGED :2048
TYPE_VIEW_CLICKED           :1
TYPE_VIEW_SCROLLED          :4096

TYPE_VIEW_TEXT_SELECTION_CHANGED :8192
TYPE_VIEW_TEXT_CHANGED           :16

모든 이벤트 및 상세 정보:https://developer.android.com/reference/android/view/accessibility/AccessibilityEvent.html
3: 자주 쓰 는 방법
AccessibilityService.performGlobalAction(GLOBAL_ACTION_BACK);//             
//        
private boolean isServiceEnabled() {
  AccessibilityManager accessibilityManager =    (AccessibilityManager)getSystemService(Context.ACCESSIBILITY_SERVICE);

  List accessibilityServices =
        accessibilityManager.getEnabledAccessibilityServiceList(
        AccessibilityServiceInfo.FEEDBACK_ALL_MASK);
  for (AccessibilityServiceInfo info : accessibilityServices) {
      if (info.getId().contains("com.angcyo.accessibility.RsenAccessibilityService")) {
          return true;
      }
  }
  return false;
}
//           
Intent accessibleIntent = new Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS);
startActivity(accessibleIntent);
//    ,       View
AccessibilityNodeInfo source = event.getSource();
AccessibilityNodeInfo listNode = source.getChild(0).getChild(1);
List itemList = listNode.findAccessibilityNodeInfosByText("  ");
//      getParent(),  getChild(),      ;
//  View  ,     "    ","    ",         
//info.performAction(AccessibilityNodeInfo.ACTION_CLICK);
//listNode.performAction(AccessibilityNodeInfo.ACTION_SCROLL_FORWARD);
//         ,                 ,   ;

이로써 글 은 끝 났 습 니 다. 의문 이 있 으 시 면 QQ 군: 274306954 가입 을 환영 합 니 다.

좋은 웹페이지 즐겨찾기