android - 从 Camera Intent 返回会导致 Activity 崩溃

标签 android android-intent android-camera

我有一个像这样启动 Camera Intent 的 Activity(没什么特别的):

    Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
    File photo = new File(Environment.getExternalStorageDirectory(),  filename);
    intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photo));
    Uri imageUri = Uri.fromFile(photo);
    startActivityForResult(intent, CAMERA_REQUEST);

然后我在 onActivityResult() 中得到结果并将位图设置为 ImageView。同样,没什么特别的。

问题是相机应用程序始终处于横向状态。因此,如果用户在点击确定将设备发送回我的 Activity 时将设备保持在水平方向,而我的 Activity 之前是纵向的,那么它会使我的 Activity 崩溃,因为它必须重建它。如果在点击相机中的“确定”之前将设备倾斜到纵向,则它不会崩溃。我该如何解决这个问题?

最佳答案

快速而肮脏的方法是自己处理方向变化。如果您的应用程序没有不同的横向和纵向布局,那么这是一个不错的选择。方法如下。

android:configChanges="orientation" 添加到 AndroidManifest 中的 Activity。

您可以做的另一件事是确保您的 onSaveInstanceState 正在保存相机数据和您可能正在使用的任何其他数据,以便当应用程序自行重新加载时,您可以在 中重新加载该数据>onRestoreInstanceState。如果您分享您的 LogCat 错误,您可能会看到 NullPointerException,这是因为数据在轮换时丢失。我会把钱花在相机数据上。

关于android - 从 Camera Intent 返回会导致 Activity 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9143519/

相关文章:

android - 动态地在另一个 fragment 中添加一个 fragment

android - 椭圆大小属性不适用于 Android 4.0

javascript - 从相机拍摄的图像未保存到画廊

android - MomentJS 类似 Android 应用程序的功能

java - Android:按钮淡出问题

android - 为什么后台堆栈中的零 fragment

android - 为什么我的可搜索 Activity 的 Intent.getAction() 为空?

android - GCMIntentService 抛出 "Sending message to a Handler on a dead thread"错误

android - 使用适用于Android的OpenCV在摄像机前挥手时移动图像

android - 如何显示在Android中从相机最后捕获的图​​像?