2014-10-06 4 views
2

그래서 사진을 찍고 그 후에 그 경로에 저장하려고 시도하지만 액세스 할 수 없습니다. 이 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>을 시도했지만 작동하지 않았습니다.FileNotFoundException : /storage/emulated/0/Pictures/pic.jpg : 열기 실패 : EACCES (사용 권한이 거부 됨)

사진을 찍어 저장하는 방법입니다.

private void takePic(View v) 
    { 
     // se usa para usar algun app del phone para usar sus cosas para hacer lo que queremos envez de crearlo from scratch 
     Intent intent = new Intent("android.media.action.IMAGE_CAPTURE"); 

     //guarda la imagen 
     File imgFile = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),"pic.jpg"); 

     imgUri = Uri.fromFile(imgFile); 

     intent.putExtra(MediaStore.EXTRA_OUTPUT, imgUri); 

     //le dice que use el app de camare y le dice que use la camara de atras 1 = la de atras 
     startActivityForResult(intent, TAKE_PICTURE); 
    } 

    //hay que hacerle override para que haga algo que no es parte del metedo. 
    //Por ejemplo quiero que guarde la imagen donde yo quiera y no donde tiene por default. 
    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent intent) 
    { 
     super.onActivityResult(requestCode, resultCode, intent); 

     //si presiono el buton de ok 
     if(resultCode == Activity.RESULT_OK) 
     { 
      Uri selectedImg = imgUri; 

      // te deja saber que termino de usar la imagen 
      getContentResolver().notifyChange(selectedImg, null); 

      ImageView imgV = (ImageView)findViewById(R.id.SteerinRackImgVw); 

      // lo mismo de horita 
      ContentResolver cR = getContentResolver(); 

      //tiene la data de la img 
      Bitmap btMp; 

      try 
      { 
       btMp = MediaStore.Images.Media.getBitmap(cR, selectedImg); 

       imgV.setImageBitmap(btMp); 

       //display a small popup de lo que esta pasando 
       Toast.makeText(TestMain.this,selectedImg.toString(), Toast.LENGTH_LONG).show(); 
      } 

      catch (Exception e) 
      { 
       Log.e("error", e.toString()); 
      } 
     } 
    } 

는 다행스럽게도 필자는 괄호를 놓치지 않았다 : P

나는 시도 및 캐치 블록, 1 행의 시도 중 프로그램 나누기, 디버깅

.

나는 이것이 의미가 있기를 바랍니다. 영어가 제 주요 언어가 아닙니다. 어떤 도움이라도 대단히 감사하겠습니다. 로그 캣없이

+0

아무도이를 고칠 방법을 모를 수 있습니까? 위대한 ... – user3842769

+0

로그 고양이를 게시하고 외부 저장 장치를 읽을 수있는 권한을 추가하려고 시도하십시오. –

+0

괜찮습니다. 내가 내 PC를 다시 가져올 때 나는 이것을 시도 할 것이다 – user3842769

답변

4

는 디버그에 하드가 될 것입니다,하지만 당신은 우선

android.permission.READ_EXTERNAL_STORAGE 

당신은 쓸 수있는 권한이

이 시도하지만 읽을 수 없습니다. 자세한 내용은이 부분을 참조하십시오. Android Permissions

+4

틀린! WRITE_EXTERNAL_STORAGE 권한을 선언 한 앱에는 READ_EXTERNAL_STORAGE 권한이 암시 적으로 부여됩니다. –

+0

원래 질문이 표시되면 android.permission.WRITE_EXTERNAL_STORAGE 만 사용되었습니다. 이것이 내가 READ 권한을 추가 한 이유입니다. 권리 –

관련 문제