在图像捕获 Intent 中添加额外的文件路径会导致相机应用在带有库存系统版本4.2.1的TF300t Android平板电脑上发生故障。按下“完成”按钮不会执行任何操作-甚至不会关闭相机应用程序 Activity 。没有结果返回。

我正在使用的代码是从Adroid developers site中提取的

Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
File imageFile = createImageFile();
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(imageFile));
startActivityForResult(cameraIntent, THIS_CAMERA_REQUEST);

使用 createImageFile()定义为:
private File createImageFile() throws IOException {
    File outputDir = getBaseContext().getCacheDir();

    String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
    String imageFileName = "photo_" + timeStamp + "_";
    File image = new File(outputDir, imageFileName);

    return image;
}

当线
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(imageFile));

删除后,相机应用程序将按预期运行。

有什么合理的解决方法吗?我宁愿不要自己拍摄照片就构建相机应用程序。

最佳答案

问题行:

File outputDir = getBaseContext().getCacheDir();

我已将其替换为:
private File createImageFile() throws IOException {
    String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
    String imageFileName = "1mind_" + timeStamp + ".jpg";
    File photo = new File(Environment.getExternalStorageDirectory(),  imageFileName);
    return photo;
}

事实证明,图像必须存储在外部存储中而不是在缓存目录中。

10-07 12:25