gpt4 book ai didi

android - 在 API 级别 8 上使用 API 级别 18 的 Android AccessabilityService 功能

转载 作者:行者123 更新时间:2023-11-29 21:14:06 28 4
gpt4 key购买 nike

我正在构建面向 API 级别 8 的 AccessabilityService,但我想使用 API 级别 18 中引入的功能 (getViewIdResourceName())。这应该可以通过使用 Android 支持库 v4 来实现,因为此功能可用 there .我已经准备好了图书馆和running但我不确定如何更改我的代码以使用它。

这是我的做法:

import android.accessibilityservice.AccessibilityService;
import android.view.accessibility.AccessibilityEvent;
import android.support.v4.accessibilityservice.*;
import android.support.v4.view.accessibility.*;
import android.support.v4.view.AccessibilityDelegateCompat;
import android.support.v4.view.ViewCompat;

public class MyAccessabilityService extends AccessibilityService {

@Override
public void onAccessibilityEvent(AccessibilityEvent event) {
Log.i(TAG, event.getSource().getViewIdResourceName());
}
}

当我在 manifest.xml 中将 android:minSdkVersion 设置为 18 时,一切正常。但是当我将其更改为 8 时,Eclipse 会警告我未使用 android.support.v4.* 导入,并且出现错误 Call requires API 级别 14(当前最低为 8):android.view.accessibility.AccessibilityEvent#getSource

最佳答案

您不能直接调用 event.getSource(),因为 API 8 上不存在该方法。相反,您需要使用 AccessibilityRecordCompat 和 AccessibilityNodeInfoCompat 类。

AccessibilityRecordCompat record = AccessibilityEventCompat.asRecord(event);
AccessibilityNodeInfoCompat node = record.getSource();
Log.i(TAG, node.getViewIdResourceName());

这些类包装了实际的事件和节点对象,当方法在当前设备 API 上不可用时,它们提供 stub 实现。因此,如果您在 API 8 上运行上面的代码 fragment ,它将因 NullPointerException 而崩溃,因为 getSource() 是一个 API 14+ 方法,并且在早期的 API 上将始终返回 null。

关于android - 在 API 级别 8 上使用 API 级别 18 的 Android AccessabilityService 功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21903108/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com