onActivityResult数据返回= NULL
好了,所以在这里,这是我送onActivityResult数据返回= NULL
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
fileUri = getOutputMediaFileUri(MEDIA_TYPE_IMAGE); // create a file to save the image
intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri); // set the image file name
startActivityForResult(intent, REQUEST_CODE);
,并且打算再在onActivityResult我这样做:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Log.i("Intent name:",data.toString());
if (requestCode == REQUEST_CODE){
if (resultCode == Activity.RESULT_OK){
Toast.makeText(this, "Image saved to \n" + fileUri.toString() , Toast.LENGTH_LONG).show();
Toast.makeText(this, "Result Code: " + resultCode , Toast.LENGTH_LONG).show();
//Bitmap mBitMap = BitmapFactory.decodeFile(data.getData().toString());
//imageView.setImageBitmap(mBitMap);
}
else if (resultCode == RESULT_CANCELED){
Toast.makeText(this, "Capture Cancelled", Toast.LENGTH_LONG).show();
}
else {
Toast.makeText(this, "Capture failed", Toast.LENGTH_LONG).show();
}
}
super.onActivityResult(requestCode, resultCode, data);
}
的logcat的是表示一个NullPointerException表示保存的图像....
而且这也是:java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=100, result=-1, data=null}
无论我尝试使用我的课程的data
对象还是fileUri
字段,都会发生这种情况。
为什么数据返回null
?
为什么即使我正在使用类的字段,我仍然得到相同的错误?
当你保存通过在文件传递EXTRAOUTPUT带摄像头的意图即
intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);
的形象,onActivityResult
里面的数据参数,它总是返回null。因此,使用文件路径检索Bitmap
而不是使用数据检索图像。
所以onActivityResult
会是这样的:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_CODE) {
if (resultCode == Activity.RESULT_OK) {
String[] fileColumn = { MediaStore.Images.Media.DATA };
Cursor cursor = getContentResolver().query(imageUri,
fileColumn, null, null, null);
String contentPath = null;
if (cursor.moveToFirst()) {
contentPath = cursor.getString(cursor
.getColumnIndex(fileColumn[0]));
Bitmap bmp = BitmapFactory.decodeFile(contentPath);
ImageView img = (ImageView) findViewById(R.id.imageView1);
img.setImageBitmap(bmp);
} else if (resultCode == RESULT_CANCELED) {
Toast.makeText(this, "Capture Cancelled", Toast.LENGTH_LONG)
.show();
} else {
Toast.makeText(this, "Capture failed", Toast.LENGTH_LONG)
.show();
}
}
super.onActivityResult(requestCode, resultCode, data);
}
确保你已经采取imageUri或fileURI所为全局变量,以便可以在里面onActivityResult
访问它。好运
来处理在这些情况下数据将如下所述的正确的/优选的方式:
在称为活动设置数据到意图,然后的setResult代码RESULT_OK然后完成该活动。
在这种recieving活动,检查结果代码..和检索意图可变数据为:intent.getExtra("... ");
//您在已关闭,现在孩子活动而设置的变量..
你误解我。我实际上是打电话给自己的相机应用程序。我不需要自己设定结果。 – prometheuspk 2012-02-10 21:15:05
的Rü不使用getIntent()用于访问MediaStore.EXTRA_OUTPUT在onActivity结果 – 2012-02-10 17:17:28
都能跟得上。不知道如何使用它。你能给我一个代码片段吗? – prometheuspk 2012-02-10 17:19:29
intent.putExtra(MediaStore.EXTRA_OUTPUT,fileUri);在Activity的Result_OK中使用Uri u = data.getData();得到uri还要确保fileUri是Uri不是文件名.. – 2012-02-10 17:34:28