Android ICS Launcher 4.0.x无法保持屏幕方向

Pet*_*ton 17 android orientation android-4.0-ice-cream-sandwich

我有一个Android ICS Launcher 4.0.x的奇怪案例.

前提:

  • 具有root权限的ICS设备

  • 下载Android ICS Launcher 4.0.3/4源代码(修改并运行)

程序:

  1. 进入市场(Play商店),下载"Go Task Manager"

  2. 在Launcher上打开Widgets选项卡,找到"Mem Optimize",拖到主屏幕(工作区)

  3. 下载并安装"Fruit Ninja"

  4. 在主屏幕上的"Mem Optimize"小部件旁边创建"Fruit Ninja"快捷方式.

  5. 执行"Fruit Ninja"并将手机放在LANDSCAPE中(手持它在这个位置,不要更改)

  6. 在"水果忍者"的菜单屏幕上,切片"退出",选择"是"

  7. 现在回到Launcher主屏幕,点击"Mem Optimize"小部件

目前的结果:

  • 在步骤7之后,屏幕旋转到LANDSCAPE一段时间并返回PORTRAIT.

期望:

  • 在步骤7之后,屏幕应保持在PORTRAIT中.

我的尝试(修改Launcher ICS源代码):

  • 添加到"Manifest.xml":android:screenOrientation="portrait"=>仍然无法解决问题.

  • 处理配置更改,android:configChanges="orientation|screenSize"=>仍然无法解决问题.

  • 使用:setRequestedScreenOrientation(PORTRAIT)=>仍然无法解决问题.

我试过在Android 2.x上工作过的; 然而,从4.0.3+开始,它不能按预期工作.有没有人对此有任何想法?

Kev*_*oil 0

现有的 ICS 启动器有几个地方会将方向设置为未指定。只需在 Launcher.java 中搜索setRequestedOrientation,但具体来说它是在“eng”版本或平板电脑上。它在 onCreate 中执行此操作,但也在从 appscustomize 中拖放后执行此操作。

来自 Launcher.java 的 onCreate:

// On large interfaces, we want the screen to auto-rotate based on the current orientation
if (LauncherApplication.isScreenLarge() || Build.TYPE.contentEquals("eng")) {
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
}
Run Code Online (Sandbox Code Playgroud)