임의의 Notification을 인식해 동작을 하기 위해 AccessibilityService를 사용하려고 합니다.


아예 새로 클래스를 만들고 AccessibilityService를 extends한 후


public void onAccessibilityEvent(AccessibilityEvent event)

protected void onServiceConnected()


이 두 함수를 이용해서


AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED 이 들어오는 경우에 동작을 하도록 했습니다.


아래는 현재 코드입니다.


 public void onAccessibilityEvent(AccessibilityEvent event) {
	// TODO Auto-generated method stub
	Toast.makeText(this, "TEST TOAST1", Toast.LENGTH_SHORT).show();
	if (event.getEventType() == AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED) {
		// Do something, eg getting packagename
		Toast.makeText(this, "TEST TOAST2", Toast.LENGTH_SHORT).show();
		// Work
	}
}

 protected void onServiceConnected() {
	AccessibilityServiceInfo info = new AccessibilityServiceInfo();
	info.eventTypes = AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED;
	info.feedbackType = AccessibilityServiceInfo.FEEDBACK_SPOKEN;
	setServiceInfo(info);
}



그리고 매니페스트에 이런 내용을 추가했습니다.


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



stackoverflow에서 유사 내용을 찾아서 meta-data 태그 없이 코드상 (onServiceConnected)으로 설정을 해주었습니다.


(NotificationStateListener는 당연히 위의 코드가 적힌  클래스의 이름입니다)



그런데 문제는 서비스를 동작시키고 테스트로 SMS를 날려서 동작을 시켜보았는데 위에 적어둔 Toast를 아무것도 실행하지 못합니다.


Log Cat으로 확인한것으로는 서비스로서의 동작을 하지 못한다는 것을 확인할 수 있었습니다. (not found)



혹시 빠뜨린 permission 정보나 제가 하지 않은것들이 있는가요?