我正在关注这个例子:
http://developer.android.com/training/camera/photobasics.html
如果你为这个putExtra(MediaStore.EXTRA_OUTPUT
按Ctrl-F,它会带你到我不确定的一段代码。进一步在应用程序中,他们覆盖onActivityResult
并尝试将此意图中的图像从活动结果中拉出以显示在应用程序中,但是当我这样做时,onActivityResult
中的Intent arg为null 。我尝试将putExtra
更改为"data"
而不是MediaStore.EXTRA_OUTPUT
,突然之间它完美无缺。
任何人都可以解释本教程试图让我做的事情吗?
基本上,有问题的代码:
static final int REQUEST_IMAGE_CAPTURE = 1;
private void dispatchTakePictureIntent() {
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
// Ensure that there's a camera activity to handle the intent
if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
// Create the File where the photo should go
File photoFile = null;
try {
photoFile = createImageFile();
} catch (IOException ex) {
// Error occurred while creating the File
...
}
// Continue only if the File was successfully created
if (photoFile != null) {
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT,
Uri.fromFile(photoFile));
startActivityForResult(takePictureIntent, REQUEST_TAKE_PHOTO);
}
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {
Bundle extras = data.getExtras();
Bitmap imageBitmap = (Bitmap) extras.get("data");
mImageView.setImageBitmap(imageBitmap);
}
}
Intent data
中的 onActivityResult
为空,因此当我调用getExtras
时它会崩溃。我将dispatchTakePictureIntent
更改为putExtra("data", Uri.fromFile(photoFile));
并且有效。
如果这是Google的一个大错并且在他们的教程中犯了错误,或者我做错了什么/不明白,我只是感到困惑?我之所以做出此更改,只是因为它在调用data
时使用字符串extras.get("data")
。所以我甚至不理解我的解决方案:(
答案 0 :(得分:1)
putExtra("NameOfExtra", object)
所以他们得到了额外的名字"数据" - 字符串是之前放置的额外值的名称。