Я разрабатываю мобильное приложение на базе Android с minSdkVersion=15
. Я хотел бы поддержать обе ориентации для планшетов и только портрет для смартфонов. Все работает как шарм, но я испытываю небольшую ошибку, которая сводит меня с ума.
Когда смартфон находится в ландшафтном режиме, и я пытаюсь запустить новую активность, она открывается в ландшафтном режиме на некоторое время, а затем авторотируется на портрет.
Каждый из моих действий расширяет класс GeneralActivity:
public class GeneralActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// If smartphone lock orientation to portrait
if (!Helper.isTablet(this.getApplicationContext())){
this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
}
}
Я обнаруживаю таблетки с помощью этой функции:
public class Helper {
public static boolean isTablet(Context context){
Configuration config = context.getResources().getConfiguration()
return config.smallestScreenWidthDp >= 600;
}
}
Я не хочу указывать android:screenOrientation
внутри Manifest.xml, потому что таким образом я могу поддерживать всю ориентацию интерфейса для планшетов.
Я что-то пропустил?
ИЗМЕНИТЬ
Я решил применить наилучшую практику, предложенную в ответе Джонатана, но проблема, которую я описал, все еще здесь. Здесь мое репо на github: https://github.com/giacmarangoni/Android-Orientation-Test