2017-01-04 13 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.getExternalStoragePublicTirects (Environment.DIRECTORY_PICTURES);' У меня есть разрешение на манифест андроида, но я думаю, что они необходимы только для чтения/записи внешнее, а не внутреннее хранилище. В любом случае, у меня есть это: '' – dkk6

+0

К сожалению, с .jpg и .bmp он все еще не работает. – dkk6