在图像捕获 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;
}
事实证明,图像必须存储在外部存储中而不是在缓存目录中。