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

移动开发 码拜 6年前 (2015-05-10) 390次浏览 0个评论

我的代码是这样的:

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

现在的问题是,data返回的是一个空值,求大神解决这个难题。。感激。
File f=new File(fileName);
if(!f.exsit){
f.mkdirs();
}
data.getData() 
20分
http://blog.csdn.net/zimo2013/article/details/16916279
感谢。。。已经搞定了。。
引用 5 楼 chuang0326 的回复:

感谢。。。已经搞定了。。

请问是这么解决的?我有时候可以返回数据,有时候返回data空值

引用 6 楼 z13144099248m 的回复:
Quote: 引用 5 楼 chuang0326 的回复:

感谢。。。已经搞定了。。

请问是这么解决的?我有时候可以返回数据,有时候返回data空值

请看4楼的回答

请问怎么解决啊 ?
请问你是怎么解决的?用了URI就是空的呀,然后上面那个错误,有的时候会有,有的时候就能正常运行。。。有人遇到过这个嘛?

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明求大神解答,困扰已久:Android 调用相机返回的data空值问题
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!