求大神解答,困扰已久:Android 调用相机返回的data空值问题

chuang0326 2014-03-19 10:09:07
我的代码是这样的:

package com.example.testcamera;

import java.io.File;

import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView;

import com.example.testcamera.R;

public class MainActivity extends Activity {

private static final int RESULT_CAPTURE_IMAGE = 1;
String fileName = Environment.getExternalStorageDirectory() + "/taxi51/download" + File.separator + "myHeader.jpg";
ImageView image = null;
Uri photoUri = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

image = (ImageView) findViewById(R.id.img_persion);
image.setOnClickListener(new OnClickListener(){
public void onClick(View v)
{
Intent imageCaptureIntent = new Intent("android.media.action.IMAGE_CAPTURE");

imageCaptureIntent.putExtra(MediaStore.Images.Media.ORIENTATION, 0);
imageCaptureIntent.putExtra(MediaStore.EXTRA_OUTPUT,
Uri.fromFile(new File(fileName)));
startActivityForResult(imageCaptureIntent, Activity.DEFAULT_KEYS_DIALER);
}
});

}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {

case RESULT_CAPTURE_IMAGE:
if (resultCode == -1) {
if(data.getExtras() == null)
{
System.out.println("data空的");
}else
{
System.out.println("data不是空的");
}
Bundle bundle = data.getExtras();
Bitmap bitmap = (Bitmap) bundle.get("data");
image.setImageBitmap(bitmap);
}
break;
}
}


}
现在出现的错误代码如下:


03-19 10:03:48.946: W/dalvikvm(4845): threadid=1: thread exiting with uncaught exception (group=0x41876498)
03-19 10:03:48.956: E/AndroidRuntime(4845): FATAL EXCEPTION: main
03-19 10:03:48.956: E/AndroidRuntime(4845): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=null} to activity {com.example.testcamera/com.example.testcamera.MainActivity}: java.lang.NullPointerException
03-19 10:03:48.956: E/AndroidRuntime(4845): at android.app.ActivityThread.deliverResults(ActivityThread.java:3162)
03-19 10:03:48.956: E/AndroidRuntime(4845): at android.app.ActivityThread.handleSendResult(ActivityThread.java:3205)
03-19 10:03:48.956: E/AndroidRuntime(4845): at android.app.ActivityThread.access$1100(ActivityThread.java:136)
03-19 10:03:48.956: E/AndroidRuntime(4845): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1249)
03-19 10:03:48.956: E/AndroidRuntime(4845): at android.os.Handler.dispatchMessage(Handler.java:99)
03-19 10:03:48.956: E/AndroidRuntime(4845): at android.os.Looper.loop(Looper.java:137)
03-19 10:03:48.956: E/AndroidRuntime(4845): at android.app.ActivityThread.main(ActivityThread.java:4881)
03-19 10:03:48.956: E/AndroidRuntime(4845): at java.lang.reflect.Method.invokeNative(Native Method)
03-19 10:03:48.956: E/AndroidRuntime(4845): at java.lang.reflect.Method.invoke(Method.java:511)
03-19 10:03:48.956: E/AndroidRuntime(4845): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:804)
03-19 10:03:48.956: E/AndroidRuntime(4845): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:571)
03-19 10:03:48.956: E/AndroidRuntime(4845): at dalvik.system.NativeStart.main(Native Method)
03-19 10:03:48.956: E/AndroidRuntime(4845): Caused by: java.lang.NullPointerException
03-19 10:03:48.956: E/AndroidRuntime(4845): at com.example.testcamera.MainActivity.onActivityResult(MainActivity.java:61)
03-19 10:03:48.956: E/AndroidRuntime(4845): at android.app.Activity.dispatchActivityResult(Activity.java:5274)
03-19 10:03:48.956: E/AndroidRuntime(4845): at android.app.ActivityThread.deliverResults(ActivityThread.java:3158)
03-19 10:03:48.956: E/AndroidRuntime(4845): ... 11 more
...全文
7458 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
gandeng 2016-08-30
  • 打赏
  • 举报
回复

@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data)
	{
		Bundle bundle = data.getExtras();
		bitmap = (Bitmap) bundle.get("data");// 获取相机返回的数据,并转换为Bitmap图片格式
		if (data.getData() != null)
		{
			uriImageData = data.getData();
		}
		else
		{
			uriImageData  = Uri.parse(MediaStore.Images.Media.insertImage(getContentResolver(), bitmap, null,null));	
		}
	}
air_peng 2016-02-18
  • 打赏
  • 举报
回复
怎么搞定的啊 我也碰到了
muyang9960 2016-01-20
  • 打赏
  • 举报
回复
lz怎样解决了,我也遇到了相同的问题,烦请相告一下,谢谢!!!
grace4666 2015-05-02
  • 打赏
  • 举报
回复
请问你是怎么解决的?用了URI就是空的呀,然后上面那个错误,有的时候会有,有的时候就能正常运行。。。有人遇到过这个嘛?
crazyingfei 2015-01-19
  • 打赏
  • 举报
回复
请问怎么解决啊 ?
wxfdzj521 2014-08-25
  • 打赏
  • 举报
回复
引用 6 楼 z13144099248m 的回复:
引用 5 楼 chuang0326 的回复:
感谢。。。已经搞定了。。
请问是这么解决的?我有时候可以返回数据,有时候返回data空值
请看4楼的回答
ShadowRunner 2014-08-03
  • 打赏
  • 举报
回复
引用 5 楼 chuang0326 的回复:
感谢。。。已经搞定了。。
请问是这么解决的?我有时候可以返回数据,有时候返回data空值
chuang0326 2014-03-19
  • 打赏
  • 举报
回复
感谢。。。已经搞定了。。
mmorss 2014-03-19
  • 打赏
  • 举报
回复
data.getData()
mmorss 2014-03-19
  • 打赏
  • 举报
回复
File f=new File(fileName); if(!f.exsit){ f.mkdirs(); }
chuang0326 2014-03-19
  • 打赏
  • 举报
回复
现在的问题是,data返回的是一个空值,求大神解决这个难题。。感激。

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧