Android: screenOrientation tag в приложении не работает

Тег android:screenOrientation при размещении в <application> не работает. Но когда я помещаю android:screenOrientation в <activity> он работает.

Если тег android:screenOrientation работает в <application> тогда не нужно было бы устанавливать обработку android:screenOrientation для каждого действия.

Интересно, почему существует такое странное поведение в платформе Android для тега screenOrientation ?

Элемент <application> не поддерживает android:screenOrientation . Вы можете сказать это, прочитав документацию .

Что касается того, почему он не поддерживается в элементе <application> , я думаю, что это, по крайней мере, частично, потому что вы не должны использовать его во многих действиях и, возможно, не во всех действиях.

Например, ваш предлагаемый android:screenOrientation="portrait" просто не должен быть выполнен, почти всегда. landscape я могу понять, для определенных видов деятельности (камеры, видеоплееры, некоторые игры). Но portrait означает:

  • Вы не хотите, чтобы пользователи могли использовать свои аппаратные клавиатуры на стороне слайдера
  • Вы не хотите, чтобы пользователи могли использовать свои планшеты в Android-естественной ландшафтной ориентации
  • Вы не хотите запускать Google TV

android:screenOrientation следует использовать только в тех действиях, которые абсолютно позитивно должны быть в этой ориентации. В противном случае, пожалуйста, соблюдайте пожелания ваших пользователей относительно того, какую ориентацию использовать. Не позволять вам устанавливать его для приложения в целом – это просто один из способов помочь вам убедиться, что вы действительно думаете о том, требуется ли это для данного вида деятельности или нет.