Android摄像头意图返回null ...有时 [英] Android camera intent returns null... sometimes
本文介绍了Android摄像头意图返回null ...有时的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我调试在2个不同的物理设备我的应用程序:
I am debugging my app in 2 different physical devices:
- 摩托罗拉摩托G,安卓4.4.2
- LG OPTIMUS L5 II的Android 4.1.2
我打电话的按钮,相机:
I am calling the camera in a button:
buttonCamera.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, REQUEST_IMAGE_CAPTURE);
}
});
和我管理的意图的结果是这样的:
And I manage the intent result like this:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {
Uri selectedImage = data.getData(); // <-- Sometimes null
}
这里的问题是, data.getData()
是空的摩托罗拉摩托摹而不是在LG OPTIMUS,这是为什么?如何避免让空在摩托罗拉摩托G'
The problem here is that data.getData()
is null in the Motorola Moto G but not in the LG OPTIMUS, why is this? How can I avoid to get null in the Motorola Moto G?
推荐答案
一个有点晚了这个答案,但我有同样的问题,只是现在我找到了解决方法:
A bit late this answer but I had this same problem just now and I found a solution:
private static final String STATE_FILE_URI = "state_file_uri";
private static final int BROWSE_CAMERA = 111;
private String fileUri;
@Override
protected void onSaveInstanceState(Bundle outState) {
outState.putString(STATE_FILE_URI, fileUri);
super.onSaveInstanceState(outState);
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
fileUri = savedInstanceState.getString(STATE_FILE_URI);
super.onRestoreInstanceState(savedInstanceState);
}
private void takePictureIntent(){
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
fileUri = "your_uri";
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(fileUri)));
startActivityForResult(takePictureIntent, BROWSE_CAMERA);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK) {
if (requestCode == BROWSE_CAMERA) {
if (data == null) {
onDeliveryPicture(Uri.parse("file://" + fileUri));
} else {
onDeliveryPicture(data.getData());
}
}
}
}
private void onDeliveryPicture(Uri uri) {
...
}
希望它能帮助!
Hope it helps!
这篇关于Android摄像头意图返回null ...有时的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文