我正在使用来自 http://developer.android.com/training/camera/photobasics.html 的代码
代码:
private void dispatchTakePictureIntent() {
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (takePictureIntent.resolveActivity(getActivity().getPackageManager()) != null) {
File photoFile = null;
try {
photoFile = FileUtilities.createImageFile();
} catch (IOException ex) {
// Error occurred while creating the File
Toast.makeText(getActivity(),"Error!",Toast.LENGTH_SHORT).show();
}
if (photoFile != null) {
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT,
Uri.fromFile(photoFile));
startActivityForResult(takePictureIntent, REQUEST_TAKE_PHOTO);
}
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == Activity.RESULT_OK) {
Bundle extras = data.getExtras(); //error
//code after this doesn't get executed
}
}
我正在尝试访问存储在设备上的缩略图和图片。但是由于某种原因,当我尝试代码时,我在 data.getExtras(); 上得到了一个空指针异常。部分。
我在这里错过了什么?
最佳答案
这是臭名昭著的 Android 开发经验之一。
Android Intent 不保证在 data.getExtras()
中提供捕获的图像,尤其是用户使用第 3 方相机/成像应用程序。您可以在here中找到许多尝试和建议。并在任何地方用“android camera intent null”进行谷歌搜索。
其中一些常见的如下。
data.getExtras().get("数据");
data.getExtras()
使用不同的键(即“照片”)data.getData()
Uri.fromFile(f)
用于EXTRA_OUTPUT
预定义路径。Uri.fromFile(f)
带有一些随机文件名(日期时间格式或 IMG-xxx)没有维护EXTRA_OUTPUT
定义。
我建议您使用断点找到它,它是给定 Intent 的变量路径。最好在 if-else if-else
方法中检查所有这些。
此外,发布应用后请仔细检查崩溃报告。您可能会从上述试验中得到错误。
关于android - 无法让 Android 文档中的相机代码正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36394526/