Отключить режим разделенного экрана для всех приложений в Android - PullRequest
0 голосов
/ 04 марта 2019

Что я хочу: Отключение пользователем режима разделения экрана для любого приложения в своем телефоне.

Что я уже сделал: Чтобы отключить разделение экранаВ этом режиме мне нужно определить, какой метод вызывается, и в этом методе я могу дополнительно добавить функцию для рисования пользовательского представления или быстрого раскрытия окна разделенного экрана.Я также изучаю AccessibilityEvents , возможно, мне нужно проанализировать и отфильтровать некоторые ключевые слова, чтобы перейти к распознаванию с разделенным экраном.пользователь только начал использовать режим разделенного экрана.И как мне тогда быстро опустить разделенное окно?

1 Ответ

0 голосов
/ 07 марта 2019

Вы можете определить, когда какое-либо приложение переходит в режим разделенного экрана, если вы спросили AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED событие при регистрации в службе специальных возможностей.

Возможный способ определения режима разделенного экрана:

В функции onAccessibilityEvent(AccessibilityEvent event) нам нужно написать event.getSource().getContentDescription();, и поиск «Split» или «Dismiss» или других ключевых слов в строке зависит от различных пользовательских параметров.Всякий раз, когда приложение входит в режим разделенного экрана, его описание контента устанавливается как «Split Whatsapp» и т. Д. Вот так мы можем определить, когда какое-либо конкретное приложение входит в режим разделенного экрана.

Возможный способ заблокировать использованиеРежим разделенного экрана для любого приложения:

После обнаружения необходимо добавить эту строку, чтобы пользователь не мог использовать режим разделенного экрана.Он просто закрепит текущее окно приложения.

performGlobalAction(AccessibilityService.GLOBAL_ACTION_TOGGLE_SPLIT_SCREEN)

Существуют и другие глобальные события для выполнения таких действий, как:

  1. GLOBAL_ACTION_BACK
  2. GLOBAL_ACTION_HOME
  3. GLOBAL_ACTION_LOCK_SCREEN
  4. GLOBAL_ACTION_NOTIFICATIONS
  5. GLOBAL_ACTION_POWER_DIALOG
  6. GLOBAL_S
  7. GLOBAL_ACTION_RECENTS
  8. GLOBAL_ACTION_TAKE_SCREENSHOT

GLOBAL_ACTION_TOGGLE_SPLIT_SCREEN

10 для этого подходит, но подходит для 1057 *1056* 10 для 10Сценарий: GLOBAL_ACTION_TOGGLE_SPLIT_SCREEN
public class AppAccessibility extends AccessibilityService {

    @Override
    protected void onServiceConnected() {
        super.onServiceConnected();
        AccessibilityServiceInfo config = new AccessibilityServiceInfo();
        config.eventTypes = AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED;
        config.feedbackType = AccessibilityServiceInfo.FEEDBACK_GENERIC;
        if (Build.VERSION.SDK_INT >= 16) {
            config.flags = AccessibilityServiceInfo.FLAG_INCLUDE_NOT_IMPORTANT_VIEWS;
        }
        setServiceInfo(config);
    }
    @Override
    public void onAccessibilityEvent(AccessibilityEvent event) {
        if (event != null && event.getEventType() == AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED) {
            if (event.getSource() != null && event.getSource().getContentDescription() != null) {
                if (event.getSource().getContentDescription().toString().contains("Split")) {
                    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
                        performGlobalAction(AccessibilityService.GLOBAL_ACTION_TOGGLE_SPLIT_SCREEN));
                }
            }
        }
    }
}
...