在我的应用程序中,我使用 ImgButton 调用第二个 Activity,它在 onClick() 上调用相机 Intent 。拍完照片后,回到我的 Activity 中,我会显示一个警报对话框,用户可以在其中选择是否拍摄更多照片。在我的 list 中,我将第二个 Activity 的方向锁定为纵向,因为如果我旋转设备,AlertBox 就会消失:
<activity android:name="SecondActivity"
android:screenOrientation="portrait"></activity>
在我的 list 中我还添加了:
android:configChanges="orientation|keyboardHidden"
全屏模式
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
如果我拍照并从肖像模式关闭相机 Intent (不旋转设备),则有 2 种不同的设备出现问题:
HTC Desire:一切正常,我保存应用程序状态并在我从相机返回到我的 Activity 时恢复它们:D
Galaxy S3*:sgs3 上的摄像头似乎在横向模式下默认运行?所以如果你回到我的 Activity ,我的 Activity 的显示内容是在横向模式下眨眼,然后立即返回到纵向模式。但是 AlertDialog 在方向改变之前显示,所以 AlertDialog 在不需要的旋转之前消失(所以我在横向模式下只看到 AlertBox 0.1 秒,然后它消失并且旋转切换回纵向模式)...
如果我从横向模式结束相机 Intent ,无论在哪个设备上,问题都与 sgs3* 上的问题相同。
从相机返回我的 Activity 后如何防止屏幕旋转?在这种不希望的方向改变之后,我可以简单地显示 AlertBox 吗?如果是这样,我该怎么做?或者还有其他解决方法吗?
谢谢,抱歉我的英语不好... xD
最佳答案
我自己解决了我的问题:我只是把
AlertDialog[...].show();
进入 onResume()
Activity ,所以如果我从相机 Intent 返回到我的 Activity ,AlertDialog 会随屏幕旋转而不是消失。
这会导致 WindowManager
发生错误
"[package name] leaked window ..."
但最终它如我所愿地工作并且应用程序没有崩溃......
不确定这是否是最佳和正确的解决方案,但它确实有效。
关于android - 如何防止屏幕方向改变从相机 Intent 返回(SGS3),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14852069/