Блокировка устройства с помощью AccessibilityService и TileService
У меня есть простой пример приложения, которое выполняет блокировку через GLOBAL_ACTION_LOCK_SCREEN (новая функция от Pie). В этом примере:
1) AccessibilityService.class следующим образом:
@Override
public void onAccessibilityEvent(AccessibilityEvent event) {
if (event.getEventType() == AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED) {
doLock();
}
}
public void doLock() {
performGlobalAction(GLOBAL_ACTION_LOCK_SCREEN);
}
2) TileService.class следующим образом:
@Override
public void onStartListening() {
super.onStartListening();
Tile t = getQsTile();
t.setState(Tile.STATE_INACTIVE);
t.updateTile();
}
@Override
public void onClick() {
Intent i = new Intent(getApplicationContext(), MainActivity.class);
i.addFlags(FLAG_ACTIVITY_NEW_TASK);
startActivityAndCollapse(i);
super.onClick();
}
3) MainActivity.class следующим образом:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity);
Handler h = new Handler();
h.postDelayed(new Runnable() {
@Override
public void run() {
MainActivity.this.finish();
}
}, 2500);
Теперь у меня есть вопрос о реализации точно такого же приложения без MainActivity. Как вызвать метод doLock() AccessibilityService непосредственно из метода onClick TileService?
Я безуспешно пробовал Messenger, EventBus и т. Д. Есть ли возможность это сделать - просто нажмите на плитку QS и напрямую вызовите метод DoLock (или, может быть, через onAccessibilityEvent, но я не знаю, какое событие запускается в этом случае)? Спасибо за совет. PS Извините, если мой вопрос слишком глуп для вас, я действительно новичок в разработке Android. P.S2 Очень признателен, если кто-нибудь даст мне пример кода, а не только подсказки.