2017-01-21 8 views
1

У меня проблема с проверкой того, поддерживает устройство Mutli Window Mode. Я использую эту функцию, чтобы проверить ее isInMultiWindowMode(), но она добавлена ​​в API 24, и когда я запускаю свое приложение на устройстве с более низкой версией api, это вызывает исключение. Есть ли замена этой функции для более низких версий api?Проверка поддержки нескольких окон

+0

Если он не существует в более низких API, как вы можете его проверить? –

ответ

0

Возможно, существует замена этой функции для более дешевых версий api?

Не в Android SDK. Нет многооконного режима (с точки зрения Android SDK) до уровня API 23. И по какой-то причине Google решил не добавлять isInMultiWindowMode() в ActivityCompat, возможно потому, что они не могут поддерживать соответствующее событие (onMultiWindowModeChanged()).

Итак, вот свободный метод замены:

public static boolean isInMultiWindowMode(Activity a) { 
    if (Build.VERSION.SDK_INT<Build.VERSION_CODES.M) { 
    return false; 
    } 

    return a.isInMultiWindowMode(); 
} 

Добавим, что в какой-то служебный класс где-то и называют его по мере необходимости.

Также обратите внимание, что isInMultiWindowMode() страдает от a race condition, что делает его ненадежным, ИМХО.

+0

Поддержка MultiWindow и isInMultiWindowMode() были добавлены в Android N (API 24) –