2013-08-05 48 views
0

我想捕捉照片照片在可能的應用程序... 這是我有: 照片被保存,但在活動結果上,我得到空點異常。 我可能會錯過什麼?Android照片cature error

private Uri getImgUri() { 
    File filePath= new File(Environment.getExternalStoragePublicDirectory (Environment.DIRECTORY_PICTURES),APP_ALIAS); 
    if(!filePath.exists()){ 
     if(!filePath.mkdirs()) 
      return null; 
    } 
    String timeStamp= new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); 
    String path=filePath.getPath()+File.separator+"_IMG"+timeStamp+".jpg"; 
    File file=new File(path); 
    return Uri.fromFile(file); 
} 

private void startGetPicFromCam() { 

    Intent intent= new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
    Uri uri= getImgUri(); 
    intent.putExtra(MediaStore.EXTRA_OUTPUT,uri); 
    startActivityForResult(intent,MEDIA_CAPTURE_RESULT_CODE); 
} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    // super.onActivityResult(requestCode, resultCode, data); 
    if(requestCode==MEDIA_CAPTURE_RESULT_CODE){ 
     if(resultCode==RESULT_OK){ 
      try{ 
      if(data.getData()!=null) 
      Toast.makeText(this,"saved to "+data.getData(),Toast.LENGTH_LONG).show(); 
      else 
       Toast.makeText(this,"saved to path",Toast.LENGTH_LONG).show(); 
      } 
      catch(Exception e){ 
       Toast.makeText(this,e.getMessage(),Toast.LENGTH_LONG).show(); 
      } 
     } 
    } 
} 

回答

0

編輯,它似乎我沒有讀你的問題不夠接近。看來問題在於,當你使用EXTRA_OUTPUT時,返回一個空的意圖。如果你想訪問你的數據,只需查詢你傳入的文件作爲額外的。有關更多詳細信息,請參閱thisthis問題。

+0

我使用的代碼:startActivityForResult(intent,MEDIA_CAPTURE_RESULT_CODE); –

+0

你在調試器中運行嗎?如果是這樣,對於較舊版本的Android操作系統,這會阻止訪問可能會導致您的空ptr的SD卡。 – droideckar

+0

@VictorOdiah我編輯了我的答案。抱歉,我第一次閱讀您的問題時完全迷惑,並且錯過了您使用MediaCapture過濾器的事實。 – Jonathan