所以这有点奇怪,因为在我正在测试的三个设备中,我只在谷歌Nexus S 4.0.3上遇到此问题。我正在启动本机相机应用程序拍照,我不关心图像保存到哪里,所以我没有指定,希望它会保存到默认位置,但没有保存位置所有!
在Galaxy S 2和三星Skyrocket上都可以正常工作(两者都有2.3.something)。
我正在使用代码来启动应用
Intent camIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(camIntent, TAKE_PHOTO);
return true;
我保持简单,这就是为什么我很困惑!有没有人知道Nexus S相机特有的问题?
编辑:似乎Nexus S的相机应用程序可能会将文件保存在某些onActivityResult中,因为我启动了原生相机应用并且在返回时不保存图像,所以它不会保存它。有谁知道这是真的吗?看到这种行为?
编辑:没有人见过这个?我发现很难相信我是第一个遇到这个问题的人......
编辑:好吧,在完成更多工作之后,我尝试在意图的EXTRA_OUTPUT中添加一个URI,如下所示:
camIntent.putExtra(MediaStore.EXTRA_OUTPUT,
Uri.parse(folderPath + String.format("%d.jpg", System.currentTimeMillis())));
现在我看到这里描述的行为:Android ACTION_IMAGE_CAPTURE Intent当我点击确定时相机应用程序没有做任何事情,并且事先创建文件也不起作用,因为我尝试这样:
File f = new File(folderPath, filename);
f.createNewFile();
camIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.parse(folderPath + filename));
答案 0 :(得分:2)
好吧,想通了。奇怪的是,我不明白为什么,但改变了这一行:
camIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.parse(folderPath + filename));
到
camIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file));
修好了。不知道我是否应该理解为什么......但无论如何,它都有效。我确实尝试了十亿个其他的东西......
根本没有指定EXTRA_OUTPUT - >相机会表现得很好...除了它不会保存图像任何地方
获取intent.getExtras()获取的位图.get(“data”) - >确实返回了一个位图,但它并不是许多错误报告中广泛记录的全尺寸图像
使用上面的Uri.parse方法 - >导致本机相机应用程序复选标记按钮在单击时不执行任何操作
希望这有助于某人..