Блокировка устройства с помощью 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 Очень признателен, если кто-нибудь даст мне пример кода, а не только подсказки.

0 ответов

Другие вопросы по тегам