У меня проблема с проверкой того, поддерживает устройство Mutli Window Mode. Я использую эту функцию, чтобы проверить ее isInMultiWindowMode()
, но она добавлена в API 24, и когда я запускаю свое приложение на устройстве с более низкой версией api, это вызывает исключение. Есть ли замена этой функции для более низких версий api?Проверка поддержки нескольких окон
ответ
Возможно, существует замена этой функции для более дешевых версий 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, что делает его ненадежным, ИМХО.
Поддержка MultiWindow и isInMultiWindowMode() были добавлены в Android N (API 24) –
Если он не существует в более низких API, как вы можете его проверить? –