在根据相机 Intent 拍摄照片后,我无法通过“onActivityResult”方法获取数据。
这是我调用相机 Intent 的方法:
private void __initCamera() {
String path = Environment.getExternalStorageDirectory() + "/vault/images/";
File dir = new File(path);
if (!dir.exists()) {
dir.mkdirs();
dir = new File(path);
}
String[] content = dir.list();
String fileName = (content.length + 1) + ".jpg";
File file = new File(path, fileName);
if (!file.exists()) {
try {
file.createNewFile();
} catch (IOException ex) {
Log.e("my_app", ex.getMessage());
}
}
Uri uri = Uri.fromFile(file);
Intent i = new Intent("android.media.action.IMAGE_CAPTURE");
i.putExtra(MediaStore.EXTRA_OUTPUT, uri);
startActivityForResult(i, 8765);
}
这是我的 onActivityResult 方法:
returnCode: -1(应该是:1,对吧?),
异常:java.io.FileNotFoundException:没有内容提供者:#Intent;action=inline-data;end
data.toURI() : #Intent;action=inline-data;end
@Override
protected void onActivityResult(int requestCode, int returnCode, Intent data) {
try {
Bitmap bitmap = Media.getBitmap(getContentResolver(), Uri.parse(data.toURI()));
FileOutputStream out = new FileOutputStream(file);
bitmap.compress(Bitmap.CompressFormat.JPEG, 50, out);
bitmap.recycle();
out.close();
} catch (Exception ex) {
Log.e("TROLL", ex.toString());
}
}
最佳答案
这个:
Bitmap bitmap = Media.getBitmap(getContentResolver(), Uri.parse(data.toURI()));
应该是这样的:
Bitmap bitmap = (Bitmap) data.getExtras().get("data");
至少,这就是我通常检索图像的方式。另外,我会建议检查正确的请求代码,而不是在那里使用包含所有内容的异常。
关于java - android相机 Intent 不返回任何数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12446627/