Вы не можете привязываться к AccessibilityService, потому что это onBind()
метод объявлен окончательным. НО, вы можете использовать его экземпляр, сохраняя его в статическом поле.
В вашем MyAccessbilityService класс:
1.Create статическое поле типа вашего AccessibilityService
private static MyAccessibilityService myAccessibilityServiceInstance;
2.Initialize это в методе onServiceConnected()
@Override
protected void onServiceConnected() {
super.onServiceConnected();
myAccessibilityServiceInstance = this;
}
3 .Получите это, когда AccessibilityService отключено в методе onUnbind():
@Override
public boolean onUnbind(Intent intent) {
myAccessibilityServiceInstance = null;
return super.onUnbind(intent);
}
4.Create геттер для экземпляра и давайте добавим аннотаций @Nullable, так как мы не знаем, в какой период жизненного цикла сервиса он будет называться
@Nullable
public static MyAccessibilityService getInstance(){
return myAccessibilityServiceInstance;
}
и, наконец, в своей деятельности или где бы вы ни находились:
MyAccessibilityService accessibilityService = MyAccessibilityService .getInstance();
if(accessibilityService != null){
//do smth here:
}
Выполнено в моем приложении, работает до сих пор. Спасибо alanv в его ответе https://stackoverflow.com/a/12557673/5502121
А, я вижу. Невозможно ли связать с AccessibilityService? –
@JeffStorey: Нет, поскольку они отмечены 'onBind()' как final. Они сами используют это внутренне, если заглянуть в источник «AccessibilityService». – CommonsWare
Правильно, я видел это, они возвращают их реализацию. Благодарю. –