在我的应用程序中,我使用Android设备相机捕获图像.对于某些设备,它工作正常但有些则不然.我刚刚在LG nexus 4 E960上进行了测试,在我捕获图像后,我的应用程序崩溃而无法保存结果.这是我的代码:
//Using intent to open camera Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(intent,CAMERA_CAPTURE);
在activityResult中:
protected void onActivityResult(int requestCode, int resultCode, Intent data) { if(resultCode==RESULT_OK) { if(requestCode==CAMERA_CAPTURE) { Bitmap pictTaken = null ; Bundle extras = data.getExtras(); if(extras.keySet().contains("data")) { pictTaken = (Bitmap) extras.get("data"); picUri = getIntent().getData(); } else{ picUri = getIntent().getData(); try { pictTaken = decodeUri(picUri); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } } Intent cropIntent= new Intent (this, Crop.class); cropIntent.putExtra("data", picUri.toString()); cropIntent.putExtra("pict", pictTaken); cropIntent.putExtra("code","camera"); startActivity(cropIntent); } }
捕获并保存后,下一个名为Crop.class的活动中显示的图像是我的logcat
12-12 13:26:36.340: E/AndroidRuntime(23575): FATAL EXCEPTION: main 12-12 13:26:36.340: E/AndroidRuntime(23575): Process: com.example.cobaandroid, PID: 23575 12-12 13:26:36.340: E/AndroidRuntime(23575): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=Intent { act=inline-data (has extras) }} to activity {com.example.cobaandroid/com.example.cobaandroid.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.net.Uri.toString()' on a null object reference 12-12 13:26:36.340: E/AndroidRuntime(23575): at android.app.ActivityThread.deliverResults(ActivityThread.java:3368) 12-12 13:26:36.340: E/AndroidRuntime(23575): at android.app.ActivityThread.handleSendResult(ActivityThread.java:3411) 12-12 13:26:36.340: E/AndroidRuntime(23575): at android.app.ActivityThread.access$1300(ActivityThread.java:138) 12-12 13:26:36.340: E/AndroidRuntime(23575): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1247) 12-12 13:26:36.340: E/AndroidRuntime(23575): at android.os.Handler.dispatchMessage(Handler.java:102) 12-12 13:26:36.340: E/AndroidRuntime(23575): at android.os.Looper.loop(Looper.java:136) 12-12 13:26:36.340: E/AndroidRuntime(23575): at android.app.ActivityThread.main(ActivityThread.java:5050) 12-12 13:26:36.340: E/AndroidRuntime(23575): at java.lang.reflect.Method.invoke(Native Method) 12-12 13:26:36.340: E/AndroidRuntime(23575): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 12-12 13:26:36.340: E/AndroidRuntime(23575): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 12-12 13:26:36.340: E/AndroidRuntime(23575): Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.net.Uri.toString()' on a null object reference 12-12 13:26:36.340: E/AndroidRuntime(23575): at com.example.cobaandroid.MainActivity.onActivityResult(MainActivity.java:226) 12-12 13:26:36.340: E/AndroidRuntime(23575): at android.app.Activity.dispatchActivityResult(Activity.java:5433) 12-12 13:26:36.340: E/AndroidRuntime(23575): at android.app.ActivityThread.deliverResults(ActivityThread.java:3364) 12-12 13:26:36.340: E/AndroidRuntime(23575): ... 9 more
我有一个问题是打开/使用在大多数Android设备上工作的相机,这个项目的主要目标很大程度上取决于相机的使用.请帮帮我,谢谢..