2017-01-04 2 views
0

카메라에서 촬영 한 이미지를 장치의 내부 저장소에 저장 한 다음 ImageView로 사용하려고하는데 파일에 액세스 할 수 없습니다. . 그것은 모두 교육적인 목적을위한 것입니다. 하위 액티비티로 카메라 앱을 호출하는 버튼이 있습니다.Android : Android 장치의 내부 저장소에서 이미지 파일에 액세스 할 수 없습니다.

public void addListener() { 
    Button b = (Button)findViewById(R.id.snap); 
    b.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      File picturesDirectory; 
      picturesDirectory = getFilesDir(); 
      imageFile = new File(picturesDirectory, "passspoints_image"); 

      Log.d(DEBUGTAG, imageFile.getAbsolutePath()); 

      Intent i = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
      i.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(imageFile)); 
      startActivityForResult(i, PHOTO_TAKEN); 
     } 
    }); 
} 

그리고 나서 파일에 액세스하려고합니다.

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    switch(requestCode) { 
     case PHOTO_TAKEN: 
      Log.d(DEBUGTAG, imageFile.getAbsolutePath()); 
      Bitmap photo = BitmapFactory.decodeFile(imageFile.getAbsolutePath()); 
      try { 
       photo = rotateImageIfRequired(photo, Uri.fromFile(imageFile)); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
      if(photo != null) { 
       ImageView imageView = (ImageView)findViewById(R.id.imageView); 
       imageView.setImageBitmap(photo); 
      } else { 
       Toast.makeText(this, "Unable to read photo file", Toast.LENGTH_LONG). 
         show(); 
      } 
      break; 
    } 
} 

이 디버그 태그의 경로입니다 :

/data/data/tk.crackedbunny.www.takingphotostest/files/passspoints_image 

그리고이 오류 메시지입니다 : 그 전에

E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: /data/data/tk.crackedbunny.www.takingphotostest/files/passspoints_image: open failed: ENOENT (No such file or directory) 

나는이 외부 저장 장치를 사용하여이 작업을 수행하기 위해 관리 한 외부 저장소를 사용할 수없는 경우 내부 저장소를 사용하고 싶습니다.

감사합니다.

답변

0

passspoints_image 그림 이름은 무엇입니까? passspoints_image.jpg과 같이 확장을 추가하는 것은 어떨까요?

AndroidManifest.xml 파일에 읽기/쓰기 권한이 있습니까?

+0

예, ** passpoins_image **는 파일 이름입니다. 언급했듯이 외부 저장소를 사용할 때 제대로 작동합니다. 'picturesDirectory = Environment.getExternalStoragePublicDirectory (Environment.DIRECTORY_PICTURES); ' 나는 안드로이드 매니페스트에서 permession을 가졌지 만 읽기/쓰기에만 필요하다고 생각합니다. 내부 저장소가 아닌 외부 저장소 어쨌든, 나는 이것을 가지고있다 : ' dkk6

+0

유감스럽게도 .jpg와 .bmp는 여전히 작동하지 않는다. – dkk6

관련 문제