如何防止从相机意图返回的屏幕方向更改(SGS3)

时间:2013-02-13 11:05:29

标签: android android-alertdialog android-orientation orientation-changes

在我的应用程序中,我使用ImgButton调用第二个Activity,该调用onClick()调用相机意图。拍完照片后,回到我的活动中,我会显示一个AlertDialog Box,用户可以选择是否拍摄更多照片。在我的清单中,我将第二个活动的方向锁定为肖像,因为如果我旋转设备,则AlertBox消失:

<activity android:name="SecondActivity"
            android:screenOrientation="portrait"></activity>

在我的Mannifest中,我还补充道:

android:configChanges="orientation|keyboardHidden"

和全屏模式

android:theme="@android:style/Theme.NoTitleBar.Fullscreen"

如果我拍摄照片并从纵向模式关闭相机意图(不旋转设备),则会出现2个不同设备的问题:

HTC Desire:一切正常,我保存应用程序状态并恢复它们,如果我从相机返回到我的活动:D

Galaxy S3 *:sgs3上的摄像头似乎在横向模式下默认运行?因此,如果你回到我的活动,我的活动的显示内容是在横向模式下眨眼,并返回到纵向模式。但是在方向改变之前显示AlertDialog,因此AlertDialog在不希望的旋转之前消失(因此我只能在横向模式下看到AlertBox 0秒,然后旋转切换回纵向模式)...

如果我从横向模式结束相机意图,无论在哪个设备上,问题都与sgs3 *相同。

从相机返回活动后如何防止此屏幕旋转?在这个不受欢迎的方向改变后,我可以简单地显示AlertBox吗?如果是这样我怎么能这样做?还是其他解决方法?

谢谢,抱歉我的英语不好...... xD

1 个答案:

答案 0 :(得分:0)

我自己解决了问题:我只是把

  

AlertDialog [...]显示();

进入onResume()活动,因此如果我从相机意图返回到我的活动,则AlertDialog会随着屏幕旋转而不是消失。

这会导致WindowManager

出错
  

“[包名]泄露窗口......”

但最终它按我的意愿工作,应用程序不会崩溃...

不确定这是否是最佳和正确的解决方案,但它确实有效。