我正在关注这个例子:
http://developer.android.com/training/camera/photobasics.html
如果您为此 putExtra(MediaStore.EXTRA_OUTPUT
按 Ctrl-F,它会将您带到一段我不确定的代码。在应用程序的更上方,它们会覆盖 onActivityResult
并尝试将此 Intent 中的图像从 Activity 结果中拉出以显示在应用程序中,但是当我这样做时 onActivityResult
中的 Intent arg 为空。我尝试更改我的 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);
}
}
onActivityResult
中的 Intent data
为空,因此当我调用 getExtras
时它会崩溃。我将 dispatchTakePictureIntent
更改为 putExtra("data", Uri.fromFile(photoFile));
并且它有效。
如果这是 Google 的错误并且在他们的教程中犯了错误,或者我做错了什么/不明白,我只是感到困惑?我想进行此更改的唯一原因是因为它在调用 extras.get("data")
时使用字符串 data
。所以我什至不明白我的解决方案:(
最佳答案
putExtra("NameOfExtra", object)
所以他们得到了一个额外的命名“数据”——该字符串是之前放置的额外值的名称。
关于android - "putExtra"是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20846583/