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

3

在我的应用程序中,我使用ImgButton调用第二个Activity,并在onClick()方法中调用相机意图。拍摄照片后,返回到我的Activity,在那里我显示一个AlertDialog框,用户可以选择是否继续拍照。在我的清单文件中,我将第二个Activity的方向锁定为纵向,因为如果我旋转设备,AlertBox会消失:

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

在我的清单中我还添加了:
android:configChanges="orientation|keyboardHidden"

并且适用于全屏模式

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

如果我在纵向模式下拍照并关闭相机意图(不旋转设备),则会出现两个不同设备的问题:
HTC Desire:一切都很好,我保存应用程序状态并在从相机返回到我的活动时恢复它们:D
Galaxy S3 *:sgs3上的相机似乎默认以横向模式运行?因此,如果您返回到我的活动,则我的活动的显示内容会在眨眼之间以横向模式显示,并立即返回纵向模式。但是,在方向更改之前会显示AlertDialog,因此AlertDialog会在不需要的旋转之前消失(因此在横向模式下仅在0.1秒内看到AlertBox,然后它就会消失并且旋转切换回纵向模式)......
如果我在横向模式下结束相机意图(无论在哪个设备上),问题与sgs3 *上的情况相同。
我如何防止从相机返回到我的活动后出现屏幕旋转?我可以简单地在这种不需要的定向更改后显示AlertBox吗?如果可以,我该如何做到这一点?或者有其他解决方法吗?
谢谢,对我的糟糕英语感到抱歉...xD

现在已经很晚了,但你找到解决方法了吗?我现在也遇到了在sgs4上的同样问题。 - Katharina
@Katharina,如果下面的答案没有解决您的问题,我就没有其他的想法了。 - Pali
好的,谢谢!我会再试一次。 - Katharina
1个回答

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

放在了正确的位置。

AlertDialog[...].show();

onResume()活动中添加代码,这样如果从相机意图返回到我的活动,则AlertDialog会随屏幕旋转而不是消失。
这导致WindowManager的错误。

"[包名]泄漏窗口..."

但最终它按照我想要的方式工作,应用程序没有崩溃...
不确定这是否是最好和正确的解决方案,但它能够工作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接