监听手机上任意一个App都输入了哪类内容,比如像QQ聊天等。其实Android给我们提供了一个辅助类AccessibilityService,这个类能干很多事情,模拟点击(比如自动抢红包实例,感谢CSDN_SXL:http://blog.csdn.net/csdn_sxl/article/details/50651959的博客),不过这里我们将监听输入字符。
很简单,创建一个实例GetInputChar继承AccessibilityService,重写onAccessibilityEvent方法
@Override
public void onAccessibilityEvent(AccessibilityEvent event) {
try {
String inputChar= event.getText().get(0).toString();
Log.i(">>>>>>>", inputChar);
AccessibilityNodeInfo rootNode = getRootInActiveWindow();
} catch (IndexOutOfBoundsException e) {
e.printStackTrace();
}
}
然后在Manifest中声明权限:
<service
android:name="com.example.testgettext.GetInputChar"
android:enabled="true"
android:exported="true"
android:label="@string/app_name"
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>
在我们的res文件目录下建立一个xml文件夹,创建一个accessibility.xml文件,内容如下:
<?xml version="1.0" encoding="utf-8"?>
<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
android:accessibilityEventTypes="typeViewFocused|typeViewTextChanged"
android:accessibilityFeedbackType="feedbackVisual"
android:canRetrieveWindowContent="true"
android:description="@string/aaa"
android:packageNames="xxx.xxx.xxx"
android:notificationTimeout="100" />
这里的packageNames上指定,你想要监控APP的包名。就OK了。
安装好app之后,到设置->辅助功能:刚刚安装的App打开即可。