我正在使用ro意图从相机捕获图像:
public void takePhoto(View view) {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
try {
Bundle bundle = new Bundle();
f = createImageFile(); // creates a new image file into which I want to store the photo
bundle.putString( "currentPhotoPath", f.getAbsolutePath() );
intent.putExtras(bundle);
startActivityForResult(intent, CAPTURE_IMAGE_FULLSIZE_ACTIVITY_REQUEST_CODE);
}
catch (IOException e) {
e.printStackTrace();
}
}
f.createImageFile
创建一个空的Image对象,我要将在其中存储从相机拍摄的照片。我试图将这个图像对象的路径传递给捆绑包,如下所示:
bundle.putString( "currentPhotoPath", f.getAbsolutePath() );
然后我使用以下代码获取结果:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == CAPTURE_IMAGE_FULLSIZE_ACTIVITY_REQUEST_CODE ) {
Bundle bundle = data.getExtras();
String currentPhotoPath = bundle.getString("currentPhotoPath");
File takenPhoto = new File("currentPhotoPath");
if (resultCode == RESULT_OK) {
if(takenPhoto.length() <= 0) {
takenPhoto.delete();
}
this.checkForUploads();
}
else if(resultCode == RESULT_CANCELED) {
takenPhoto.delete();
}
}
}
我期望在data.getExtras()
中找到键“ currentPhotoPath”,该键保存指向新Image对象的路径,但始终为null。相反,我得到的唯一键是我认为它包含实际位图数据的数据。
我已经看到类似的问题,所以我认为我做对了。
答案 0 :(得分:1)
我也看到了类似的问题,所以我认为我做对了。
抱歉,没有。
您放入Intent
的其他地方去了Intent
的地方。就您而言,它涉及一些具有ACTION_IMAGE_CAPTURE
<intent-filter>
的活动。该代码的额外功能取决于该活动的开发人员。在您的情况下,由于您自己发明了一个新的Intent
附加项,因此您的附加项将被忽略,因为ACTION_IMAGE_CAPTURE
活动的开发人员将不愿寻找它。
传递给Intent
的{{1}}与onActivityResult()
使用的Intent
完全不同。特别是,您不需要将startActivityForResult()
startActivityForResult()
上放置的其他内容包含在其他应用的Intent
响应中。