Я пытаюсь сохранить изображение, сделанное камерой, в хранилище ВНУТРЕННЕГО устройства, а затем использовать его как 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)
Перед тем, что мне удалось сделать это, используя внешний накопитель, но я бы хотел использовать внутреннее хранилище, если внешнее хранилище недоступно.
Спасибо.
Да, ** passpoins_image ** - это имя файла. Как я уже упоминал, он работает нормально, когда я использую внешнее хранилище, когда 'picturesDirectory = Environment.getExternalStoragePublicTirects (Environment.DIRECTORY_PICTURES);' У меня есть разрешение на манифест андроида, но я думаю, что они необходимы только для чтения/записи внешнее, а не внутреннее хранилище. В любом случае, у меня есть это: ' ' –
dkk6
К сожалению, с .jpg и .bmp он все еще не работает. – dkk6