-
-
Save qihnus/1909616 to your computer and use it in GitHub Desktop.
$ adb logcat -s RecorderService | |
--------- beginning of /dev/log/system | |
--------- beginning of /dev/log/main | |
V/RecorderService( 1841): onServiceConnected | |
... | |
V/RecorderService( 1841): onAccessibilityEvent: [type] TYPE_VIEW_CLICKED [class] android.widget.Button [package] com.example [time] 7710428 [text] Activity1 | |
V/RecorderService( 1841): onAccessibilityEvent: [type] TYPE_VIEW_FOCUSED [class] android.widget.EditText [package] com.example [time] 7710521 [text] | |
V/RecorderService( 1841): onAccessibilityEvent: [type] TYPE_WINDOW_STATE_CHANGED [class] com.example.Activity1 [package] com.example [time] 7710536 [text] TestRecord | |
V/RecorderService( 1841): onAccessibilityEvent: [type] TYPE_VIEW_FOCUSED [class] android.widget.EditText [package] com.example [time] 7710539 [text] | |
V/RecorderService( 1841): onAccessibilityEvent: [type] TYPE_VIEW_CLICKED [class] android.widget.EditText [package] com.example [time] 7725471 [text] | |
V/RecorderService( 1841): onAccessibilityEvent: [type] TYPE_VIEW_TEXT_CHANGED [class] android.widget.EditText [package] com.example [time] 7728589 [text] f | |
V/RecorderService( 1841): onAccessibilityEvent: [type] TYPE_VIEW_TEXT_CHANGED [class] android.widget.EditText [package] com.example [time] 7728804 [text] fg | |
V/RecorderService( 1841): onAccessibilityEvent: [type] TYPE_VIEW_TEXT_CHANGED [class] android.widget.EditText [package] com.example [time] 7728994 [text] fgj | |
... |
import android.accessibilityservice.AccessibilityService; | |
import android.accessibilityservice.AccessibilityServiceInfo; | |
import android.util.Log; | |
import android.view.accessibility.AccessibilityEvent; | |
public class RecorderService extends AccessibilityService { | |
static final String TAG = "RecorderService"; | |
private String getEventType(AccessibilityEvent event) { | |
switch (event.getEventType()) { | |
case AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED: | |
return "TYPE_NOTIFICATION_STATE_CHANGED"; | |
case AccessibilityEvent.TYPE_VIEW_CLICKED: | |
return "TYPE_VIEW_CLICKED"; | |
case AccessibilityEvent.TYPE_VIEW_FOCUSED: | |
return "TYPE_VIEW_FOCUSED"; | |
case AccessibilityEvent.TYPE_VIEW_LONG_CLICKED: | |
return "TYPE_VIEW_LONG_CLICKED"; | |
case AccessibilityEvent.TYPE_VIEW_SELECTED: | |
return "TYPE_VIEW_SELECTED"; | |
case AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED: | |
return "TYPE_WINDOW_STATE_CHANGED"; | |
case AccessibilityEvent.TYPE_VIEW_TEXT_CHANGED: | |
return "TYPE_VIEW_TEXT_CHANGED"; | |
} | |
return "default"; | |
} | |
private String getEventText(AccessibilityEvent event) { | |
StringBuilder sb = new StringBuilder(); | |
for (CharSequence s : event.getText()) { | |
sb.append(s); | |
} | |
return sb.toString(); | |
} | |
@Override | |
public void onAccessibilityEvent(AccessibilityEvent event) { | |
Log.v(TAG, String.format( | |
"onAccessibilityEvent: [type] %s [class] %s [package] %s [time] %s [text] %s", | |
getEventType(event), event.getClassName(), event.getPackageName(), | |
event.getEventTime(), getEventText(event))); | |
} | |
@Override | |
public void onInterrupt() { | |
Log.v(TAG, "onInterrupt"); | |
} | |
@Override | |
protected void onServiceConnected() { | |
super.onServiceConnected(); | |
Log.v(TAG, "onServiceConnected"); | |
AccessibilityServiceInfo info = new AccessibilityServiceInfo(); | |
info.flags = AccessibilityServiceInfo.DEFAULT; | |
info.eventTypes = AccessibilityEvent.TYPES_ALL_MASK; | |
info.feedbackType = AccessibilityServiceInfo.FEEDBACK_GENERIC; | |
setServiceInfo(info); | |
} | |
} |
thanks for the example. saved my time!
through which event will i get the contact number of clicked contact. can i get the code for it.
thank you! this example is help me.
I was searching for something like this. Thank you so much.
Can you explan me Plz ?
Is the use of the accessibility services requires that I must have a special version of Android,
I currently have the 4.1.2, but no service works fo me;
When iIverifie my phone , i don't find the specific ICON shown above : Home...Setting......
Thank you :))
Thank you! Exactly what I wanted
Thank you!!! It helped me a lot. I need to paste response on edittext. can you help me on it?
What does the value returned by getEventTime() represent?
tks you very much:D
I have a server based realtime keylogger, the issue is when I type in passwords it sends null value to the server ! What can I do to fix this ?
The code is written on android and keystrokes are monitored by Accessibility Event handler.
In which cases do "onInterrupt" get called? Isn't it the same as "onDestroy" ? I thought that the OS will try to keep it alive as long as possible, no?
For me this doesn't give any events for Compose views but for xml views this works. Is there anything extra that we need to do to make it work with compose views?
For API >= 14, it's probably easier to get the event type string by using
AccessibilityEvent. eventTypeToString(int)
.