![](/img/trans.png)
[英]How to use an android accessibility service to detect which view the user touched?
[英]How to use accessibility service in Flutter - Platform Specific
我正在嘗試在基於 flutter 的應用程序中集成輔助功能服務,我深入研究它並發現我必須使用方法通道才能完成此任務,因為只有使用 android 本機代碼 (java/kotlin) 才有可能
如您所知,我們必須在 MainActivity 中編寫擴展 FlutterActivity 的代碼才能使其工作。 如何在此特定於平台的代碼中擴展 AccessibilityService?
public class MainActivity extends FlutterActivity {
private static final String CHANNEL = "samples.flutter.dev/battery";
@Override
public void configureFlutterEngine(@NonNull FlutterEngine flutterEngine) {
super.configureFlutterEngine(flutterEngine);
new MethodChannel(flutterEngine.getDartExecutor().getBinaryMessenger(), CHANNEL)
.setMethodCallHandler(
(call, result) -> {
// Note: this method is invoked on the main thread.
// TODO
}
);
}
}
這是我試圖在 Flutter 中實現的代碼,還有一個問題,我是否需要從 Flutter 客戶端調用此代碼? 因為據我所知,無障礙服務代碼是由android系統自動調用的
public class MyAccessibilityService extends AccessibilityService {
...
@Override
public void onAccessibilityEvent(AccessibilityEvent event) {
if (event.getEventType() == AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED) {
if (event.getPackageName().toString().equals("com.whatsapp")){
StringBuilder message = new StringBuilder();
if (!event.getText().isEmpty()) {
for (CharSequence subText : event.getText()) {
message.append(subText);
}
if (message.toString().contains("Message from")){
name=message.toString().substring(13);
}
}
}
}
}
@Override
public void onInterrupt() {
}
...
}
幾天前,我制作了一個 flutter 插件,用於與 Android 中的輔助功能服務進行交互。只需按照自述文件中的說明進行操作即可輕松使用,並查看示例以了解更多詳細信息flutter_accessibility_service
這是一個如何使用它的例子
/// check if accessibility permession is enebaled
final bool status = await FlutterAccessibilityService.isAccessibilityPermissionEnabled();
/// request accessibility permission
/// it will open the accessibility settings page
await FlutterAccessibilityService.requestAccessibilityPermission();
/// stream the incoming Accessibility events
FlutterAccessibilityService.accessStream.listen((event) {
log("Current Event: $event");
/*
Current Event: AccessibilityEvent: (
Action Type: 0
Event Time: 2022-04-11 14:19:56.556834
Package Name: com.facebook.katana
Event Type: EventType.typeWindowContentChanged
Captured Text: events you may like
content Change Types: ContentChangeTypes.contentChangeTypeSubtree
Movement Granularity: 0
Is Active: true
is focused: true
in Pip: false
window Type: WindowType.typeApplication
)
*/
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.