Android 如何監聽App的輸入了那些內容
阿新 • • 發佈:2019-01-11
監聽手機上任意一個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開啟即可。