android - 如何防止屏幕方向改变从相机 Intent 返回(SGS3)

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

在我的应用程序中,我使用 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/

相关文章:

android - Kotlin 构造函数属性 val 不能在类中使用

在 Activity 以外的类中使用的 Android Context

android - 带有 ListView 和底部 TextField 的 Flutter AlertDialog

android - 在方向改变时保存 fragment 状态

android - 使用 React Native 的纵向锁定 Android 应用程序中的方向感知模态

Android Studio 组合图表崩溃

android - GCM(现在的 FCM)是否有任何限制?

android - Python 2.7 错误通过 urllib.urlretrieve 下载 Dropbox 文件

android - 如何在 AlertDialog 中添加多个 EditText 对象

android - 如何在方向更改时保留所选微调器/下拉项的状态?