2013-09-26 34 views
0

拍攝照片後,我的照片顯示在活動中,但是當我檢入文件夾時,我的照片尺寸爲0kb,我不知道爲什麼會發生這種情況,照片再次,新的照片,我想在文件夾中不救,這是我的代碼:android:在文件夾中保存捕獲照片0kb

{ 


        File sdCard= Environment.getExternalStorageDirectory(); 
      File path = new File (sdCard.getAbsolutePath() + "/android/data/spaj_foto"); 
      path.mkdir(); 
      File file= new File (path,"spaj_foto.png");   
      outputFileUri = Uri.fromFile(file); 
       Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
       cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri ); 
       startActivityForResult(cameraIntent,TAKE_PHOTO_CODE); 

       } 

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

      if (resultCode == RESULT_OK) { 
       if (requestCode == TAKE_PHOTO_CODE) { 
       Bundle extras = data.getExtras(); 

       Bitmap photo = (Bitmap) extras.get("data"); 
       image_spaj.setImageBitmap(photo); 
      } 
      else if (resultCode == RESULT_CANCELED) { 
       Toast.makeText(this, "Picture was not taken", Toast.LENGTH_SHORT); 
       } 
      } 


     } 

編輯

這是我的logcat:

09-26 17:57:38.072: E/AndroidRuntime(12498): FATAL EXCEPTION: main 
09-26 17:57:38.072: E/AndroidRuntime(12498): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=0, result=-1, data=null} to activity {org.example.touch/org.example.touch.FormSpaj}: java.lang.NullPointerException 
09-26 17:57:38.072: E/AndroidRuntime(12498): at android.app.ActivityThread.deliverResults(ActivityThread.java:3179) 
09-26 17:57:38.072: E/AndroidRuntime(12498): at android.app.ActivityThread.handleSendResult(ActivityThread.java:3222) 
09-26 17:57:38.072: E/AndroidRuntime(12498): at android.app.ActivityThread.access$1100(ActivityThread.java:140) 
09-26 17:57:38.072: E/AndroidRuntime(12498): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1276) 
09-26 17:57:38.072: E/AndroidRuntime(12498): at android.os.Handler.dispatchMessage(Handler.java:99) 
09-26 17:57:38.072: E/AndroidRuntime(12498): at android.os.Looper.loop(Looper.java:137) 
09-26 17:57:38.072: E/AndroidRuntime(12498): at android.app.ActivityThread.main(ActivityThread.java:4895) 
09-26 17:57:38.072: E/AndroidRuntime(12498): at java.lang.reflect.Method.invokeNative(Native Method) 
09-26 17:57:38.072: E/AndroidRuntime(12498): at java.lang.reflect.Method.invoke(Method.java:511) 
09-26 17:57:38.072: E/AndroidRuntime(12498): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:994) 
09-26 17:57:38.072: E/AndroidRuntime(12498): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:761) 
09-26 17:57:38.072: E/AndroidRuntime(12498): at dalvik.system.NativeStart.main(Native Method) 
09-26 17:57:38.072: E/AndroidRuntime(12498): Caused by: java.lang.NullPointerException 
09-26 17:57:38.072: E/AndroidRuntime(12498): at org.example.touch.FormSpaj.onActivityResult(FormSpaj.java:990) 
09-26 17:57:38.072: E/AndroidRuntime(12498): at android.app.Activity.dispatchActivityResult(Activity.java:5347) 
09-26 17:57:38.072: E/AndroidRuntime(12498): at android.app.ActivityThread.deliverResults(ActivityThread.java:3175) 
09-26 17:57:38.072: E/AndroidRuntime(12498): ... 11 more 

回答

4

您已經創建了一個新文件。 (空白)

然後啓動相機意圖。

但是你還沒有做什麼,被告知相機意圖在哪裏保存圖像。

因此,留下一個空白文件。

File file= new File (path,"spaj_foto.png"); 


    outputFileUri = Uri.fromFile(file); 
    Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
    cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri ); 
    startActivityForResult(cameraIntent,TAKE_PHOTO_CODE); 

請注意,您不需要創建該文件,android camera intent將爲您做到這一點。 你需要做的是傳遞額外的東西,所以意圖知道在哪裏保存。

(你還需要創建目錄)

+0

我不明白,你能更具體嗎? –

+0

@AoyamaNanami查看添加的代碼 – Doomsknight

+0

我得到了錯誤,請參閱上面,我已添加我的logcat –