2013-08-05 3 views
0

카메라 앱을 5 월에 캡처하려고합니다 ... 사진은 저장되었지만 활동 결과에 Null 포인트 예외가 발생합니다. 누락 된 항목은 무엇입니까?Android photo cature 오류

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을 사용하면 null 의도가 다시 전달된다는 것입니다. 데이터에 대한 액세스 권한을 얻으려면 전달한 파일을 추가로 쿼리하면됩니다. 자세한 내용은 thisthis 질문을 참조하십시오.

+0

코드를 사용하고 있습니다. startActivityForResult (intent, MEDIA_CAPTURE_RESULT_CODE); –

+0

디버거에서 실행하고 있습니까? 그렇다면, 안드로이드 OS의 이전 버전의 경우 이것은 null ptr을 유발할 수있는 SD 카드에 대한 액세스를 차단합니다. – droideckar

+0

@VictorOdiah 내 대답을 편집했습니다. 죄송합니다. 질문을 처음 읽으면서 완전히 실패했으며 MediaCapture 필터를 사용하고 있다는 사실을 놓쳤습니다. – Jonathan