Android Pie 中的 AccessibilityService 是否已更改?
Was AccessibilityService changed in Android Pie?
我有这个 AccessibilityService class 在 Android Oreo (API 27) 和之前工作:
AndroidManifest.xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.google.test.testaccessibility">
<application
android:icon="@mipmap/ic_launcher"
android:label="TestAccessibility">
<service
android:name=".TestAccessibility"
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/test_accessibility" />
</service>
</application>
test_accessibility.xml
<?xml version="1.0" encoding="utf-8"?>
<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
android:accessibilityEventTypes="typeViewTextChanged"
android:accessibilityFeedbackType="feedbackGeneric"
android:accessibilityFlags="flagDefault"
android:canRetrieveWindowContent="true"
android:notificationTimeout="10" />
TestAccessibility.java
包裹 com.google.test.testaccessibility;
import android.accessibilityservice.AccessibilityService;
import android.util.Log;
import android.view.accessibility.AccessibilityEvent;
public class TestAccessibility extends AccessibilityService {
@Override
public void onAccessibilityEvent(AccessibilityEvent event) {
Log.d("TestAccessibility", "onAccessibilityEvent");
}
@Override
public void onInterrupt() {
Log.d("TestAccessibility", "onInterrupt");
}
@Override
protected void onServiceConnected() {
Log.d("TestAccessibility", "onServiceConnected");
}
}
它有效,每次在任何应用程序中更改文本时都会调用方法 onAccessibilityEvent 但是,当我 运行 将此代码放在 Android Pie 中时(API 28) 仅调用 onServiceConnected 一个。
我想从 API 27 到 28 已经发生了一些变化,但我在网上找不到任何东西。
谁能给我线索?
谢谢!
没有有意更改,大多数服务都正常工作。
尝试两件事:
1) 无障碍服务开发代码实验室:https://codelabs.developers.google.com/codelabs/developing-android-a11y-service/index.html
2) 删除通知超时
这是一个已报告的错误:
https://issuetracker.google.com/issues/117747909
我会尝试用错误的答案更新此回复。
我有这个 AccessibilityService class 在 Android Oreo (API 27) 和之前工作:
AndroidManifest.xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.google.test.testaccessibility">
<application
android:icon="@mipmap/ic_launcher"
android:label="TestAccessibility">
<service
android:name=".TestAccessibility"
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/test_accessibility" />
</service>
</application>
test_accessibility.xml
<?xml version="1.0" encoding="utf-8"?>
<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
android:accessibilityEventTypes="typeViewTextChanged"
android:accessibilityFeedbackType="feedbackGeneric"
android:accessibilityFlags="flagDefault"
android:canRetrieveWindowContent="true"
android:notificationTimeout="10" />
TestAccessibility.java 包裹 com.google.test.testaccessibility;
import android.accessibilityservice.AccessibilityService;
import android.util.Log;
import android.view.accessibility.AccessibilityEvent;
public class TestAccessibility extends AccessibilityService {
@Override
public void onAccessibilityEvent(AccessibilityEvent event) {
Log.d("TestAccessibility", "onAccessibilityEvent");
}
@Override
public void onInterrupt() {
Log.d("TestAccessibility", "onInterrupt");
}
@Override
protected void onServiceConnected() {
Log.d("TestAccessibility", "onServiceConnected");
}
}
它有效,每次在任何应用程序中更改文本时都会调用方法 onAccessibilityEvent 但是,当我 运行 将此代码放在 Android Pie 中时(API 28) 仅调用 onServiceConnected 一个。 我想从 API 27 到 28 已经发生了一些变化,但我在网上找不到任何东西。 谁能给我线索?
谢谢!
没有有意更改,大多数服务都正常工作。
尝试两件事: 1) 无障碍服务开发代码实验室:https://codelabs.developers.google.com/codelabs/developing-android-a11y-service/index.html
2) 删除通知超时
这是一个已报告的错误:
https://issuetracker.google.com/issues/117747909
我会尝试用错误的答案更新此回复。