AccessibilityService가 정상적으로 작동했지만 개발 중에 어떤 이유로 작동을 멈췄습니다. 나는 그 이유를 찾지 못하는 것 같습니다. 내 코드를보고 왜 작동하지 않는지 말해주십시오.android Accessibility-service가 갑자기 이벤트 트리거링을 중지했습니다.
public class MyServicee extends AccessibilityService {
public static final String TAG = "volumeMaster";
@TargetApi(Build.VERSION_CODES.KITKAT)
@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)
@Override
public void onAccessibilityEvent(AccessibilityEvent event) {
List<CharSequence> eventText;
Log.v(TAG, "***** onAccessibilityEvent");
final int eventType = event.getEventType();
switch (eventType) {
case AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED:
break;
}
if (event.getEventType() == AccessibilityEvent.TYPE_VIEW_CLICKED) {
}
}
private String processUSSDText(List<CharSequence> eventText) {
for (CharSequence s : eventText) {
String text = String.valueOf(s);
if (true) {
return text;
}
}
return null;
}
@Override
public void onInterrupt() {
Log.v(TAG, "***** onInterrupt");
}
@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
@Override
public void onServiceConnected() {
Log.v(TAG, "***** onServiceConnected");
AccessibilityServiceInfo info = getServiceInfo();
info.eventTypes =
AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED
| AccessibilityEvent.TYPE_VIEW_CLICKED
| AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED;
info.feedbackType = AccessibilityServiceInfo.FEEDBACK_GENERIC;
info.packageNames = new String[]{"com.whatsapp"};
info.flags = AccessibilityServiceInfo.FLAG_INCLUDE_NOT_IMPORTANT_VIEWS;
setServiceInfo(info);
super.onServiceConnected();
}
}
여기 매니페스트의 관련 부분 :
이<accessibility-service
xmlns:android="http://schemas.android.com/apk/res/android"
android:accessibilityEventTypes="typeViewClicked|typeNotificationStateChanged|typeWindowStateChanged"
android:accessibilityFeedbackType="feedbackAllMask"
android:canRetrieveWindowContent="true"
android:accessibilityFlags="flagIncludeNotImportantViews|flagRequestFilterKeyEvents"
android:notificationTimeout="1"
android:packageNames="com.whatsapp"
android:settingsActivity="@string/app_name" />
코드는 사용자가 통화 녹음 서비스를 시작했을 때 검색을 시도 :
는<service android:name=".MyServicee"
android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE"
android:enabled="true">
<intent-filter>
<action android:name="android.accessibilityservice.AccessibilityService" />
</intent-filter>
<meta-data android:name="android.accessibilityservice"
android:resource="@xml/myservice" />
</service>
여기 myserviceconfig.xml입니다. 당신은 시스템 구축 접근성 정보를 덮어, 당신의 onServiceConnected 기능에
첫째 :
당신의 재연에 감사드립니다 ..... @ Chris CM .........하지만 문제는 코드가 예외를 throw하면 서비스가 불행히도 멈추고 12 초 후에 완벽하게 작동합니다. 그래서 나에게 약간의 제안을해라. – Secret
서비스가 예외를 throw하는 경우 질문과 함께 스택 추적을 게시해야합니다. 스택 추적보다 문제를 디버깅하는 데 도움이되는 정보는 없습니다. – ChrisCM