1

我正在 Android 中开发无障碍服务。当用户关闭辅助功能服务时,我想禁用某些功能,但我不确定如何检测到这一点。

我想当用户关闭它时,它会调用onDestroy(),但显然,它没有被调用。

有什么方法可以知道用户何时关闭无障碍服务?或者是否有一个函数在用户关闭时被调用?

(以防万一,我正在为 Android Wear 开发。)

非常感谢!!我感谢您的帮助!:)

4

2 回答 2

1

interface AccessibilityManager.AccessibilityStateChangeListener

系统可访问性状态的侦听器。要监听设备上可访问性状态的变化,请实现此接口并通过调用将其注册到系统中addAccessibilityStateChangeListener

例子:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // ...
    AccessibilityManager am = (AccessibilityManager) getSystemService(Context.ACCESSIBILITY_SERVICE);
    am.addAccessibilityStateChangeListener(new AccessibilityManager.AccessibilityStateChangeListener() {
        @Override
        public void onAccessibilityStateChanged(boolean b) {
            Log.d(TAG,"onAccessibilityStateChanged b=" + b);
            updateServiceStatus(b);
        }
    });
    updateServiceStatus(am.isEnabled());
}

programcreek.com上的更多 java 示例。

于 2018-05-03T07:51:08.020 回答
0

我不知道任何通知应用程序有关无障碍服务状态更改的事件、广播或回调。我能想到的最好的事情是偶尔手动检查服务状态:

AccessibilityManager am = (AccessibilityManager) getSystemService(ACCESSIBILITY_SERVICE);
boolean isAccessibilityEnabled = am.isEnabled();

文档:AccessibilityManager#isEnabled()

于 2018-05-02T09:19:29.213 回答