1. 程式人生 > >Android 如何監聽App的輸入了那些內容

Android 如何監聽App的輸入了那些內容

監聽手機上任意一個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開啟即可。