Android 13: Приложение в Landscape ориентации отображает портретный урезанный вид

Активити в манифесте имеет следующий вид:

<activity
       android:name=".MainActivity"
       android:exported="true"
       android:launchMode="singleTask"
       android:resizeableActivity="false"
       android:screenOrientation="portrait">

Необходимо, чтобы все экраны приложения было в портретной ориентации (за исключением одного) и не поддерживало мультиоконный режим (resizeableActivity нельзя ставить в true)

Но на одном фрагменте мне необходимо поддержать и landscape, и portrait ориентации. Делаю это следующим образом:

class MainFragment : Fragment() {

    companion object {
        fun newInstance() = MainFragment()
    }

    private var orientationEventListener: OrientationEventListener? = null

    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View {
        return inflater.inflate(R.layout.fragment_main, container, false)
    }

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)

        activity?.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_USER

        orientationEventListener = object : OrientationEventListener(requireActivity()) {
            override fun onOrientationChanged(orientation: Int) {
                handleOrientationType(orientation)
            }
        }
    }

    override fun onResume() {
        super.onResume()
        orientationEventListener?.enable()
    }

    private fun handleOrientationType(orientationType: Int) {
        when (orientationType) {
            Configuration.ORIENTATION_PORTRAIT -> {
                requireActivity().requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_USER_PORTRAIT
            }

            Configuration.ORIENTATION_LANDSCAPE -> {
                requireActivity().requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_USER_LANDSCAPE
            }
        }
    }
}

Этот код работает на всех девайсах до Android 13. В android 13 происходит следующее при повороте экрана:

Portrait orientation

Landscape orientation

Как это можно поправить?

Полный исходный код доступен тут: https://drive.google.com/drive/folders/1Ow7k7H3bChGzt2hY_nSiB5sGwMnpjXWy?usp=share_link


Ответы (0 шт):