在我阅读了教程Taking Photos Simply后,我尝试按照教程中的说法进行操作。
问题是我的OnePlus X上有效。如果我使用其他手机,如三星Galaxy S5或S6或任何其他设备,它无法正常工作。
pictureActionIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (pictureActionIntent.resolveActivity(getPackageManager()) != null) {
File photoFile = null;
try {
photoFile = createImageFile();
} catch (IOException ex) {
e.printStackTrace();
}
if (photoFile != null) {
//pictureActionIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photoFile));
}
}
startActivityForResult(pictureActionIntent, CAMERA_REQUEST);
如果我删除评论,则data
中的onActivityResult
为null
。
如果我设置了评论,data
看起来(在三星设备上)就像:
data = {android.content.Intent@19974} "Intent{act=inline-data dat=content://Media/external/images/media/16123 (has extras)}"
那么,问题出在哪里?我需要更改什么才能使其在每台设备上运行?
感谢您的帮助!
亲切的问候!
答案 0 :(得分:1)
您还需要传递IMAGE URL。
intent.putExtra( MediaStore.EXTRA_OUTPUT, _fileUri);
然后您可以使用此文件路径。
修改强>
private void saveFullImage() {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
File file = new File(Environment.getExternalStorageDirectory(), "test.jpg");
outputFileUri = Uri.fromFile(file);
intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
startActivityForResult(intent, TAKE_PICTURE);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if ((requestCode == TAKE_PICTURE) && (resultCode == Activity.RESULT_OK)) {
// Check if the result includes a thumbnail Bitmap
if (data == null) {
// TODO Do something with the full image stored
// in outputFileUri. Perhaps copying it to the app folder
}
}
}