【问题标题】:Android Error when rotating phone after taking picture using Intent ACTION_IMAGE_CAPTURE使用 Intent ACTION_IMAGE_CAPTURE 拍照后旋转手机时出现 Android 错误
【发布时间】:2015-07-10 23:50:22
【问题描述】:

我在 ActivityResult 上收到错误:

“尝试在空对象引用上调用虚拟方法'java.lang.String android.net.Uri.getPath()'”,

拍照时旋转手机或模拟器确认“保存”图片。

这就是我对相机的称呼:

File file = getOutputMediaFile(processid);
            picUri = Uri.fromFile(file);

            Intent i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
            i.putExtra(MediaStore.EXTRA_OUTPUT, picUri); 
            startActivityForResult(i, 1);

【问题讨论】:

  • 发布您的 onActivityResult() 代码和包含错误的堆栈跟踪。

标签: android


【解决方案1】:

没有看到您的onActivityResult() 代码,我只能对问题进行有经验的猜测。有许多不同的相机应用程序,它们的行为方式不尽相同。

通常,当您请求相机图像捕获并为带有EXTRA_OUTPUT 的图像提供Uri 时,图像将写入该Uri,并且结果意图中不会返回Uri。我怀疑在您的onActivityResult() 中,您期望结果意图包含Uri。它没有:resultIntent.getData() 为空。

如果您使用EXTRA_OUTPUT为请求意图中的图像提供Uri,那么结果意图确实包含Uri,通常对于缩略图大小的图像。

【讨论】:

  • 我有这个 String filepath = picUri.getPath();位图 bmp = fromGallery(filepath, targetW, targetH); imgPhoto.setImageBitmap(bmp);
  • 发布onActivityResult() 的代码以及包含错误的堆栈跟踪。
  • 请重新阅读我的回答。当onActivityResult() 被调用时,picUri 为空。图像存储在您使用 EXTRA_OUTPUT 包含在 Intent 中的 Uri 中。如果您设置picUri' from the result Intent in onActivityResult()`,它将为空。如果picUri 与您调用startActivityForResult() 时使用的对象相同,则它不再具有原始值,现在为空。
  • 当我在拍照后不旋转设备时,一切正常。我这样做是为了复制错误:
  • picUri 是在哪里定义的?它是您的活动课程的成员吗?如果是,则您没有正确保存和恢复它,因此当旋转导致配置更改后重新启动活动时,picUri 为空。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-05-12
  • 2017-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多