Ich versuche, ein Bild von der Kamera in den internen Speicher des Geräts aufgenommen und dann als ImageView zu verwenden, aber ich kann nicht auf die Datei zugreifen . Es ist alles für Bildungszwecke. Ich habe eine Taste, um die Kamera App als Unteraktivität zu nennen.Android: Kann nicht auf eine Bilddatei aus dem internen Speicher auf Android-Gerät zugreifen
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);
}
});
}
Und dann versuche ich auf die Datei zuzugreifen.
@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;
}
}
Dies ist der Pfad von dem Debug-Tag ist:
/data/data/tk.crackedbunny.www.takingphotostest/files/passspoints_image
Und dies ist die Fehlermeldung:
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)
Davor habe ich es geschafft haben, diese mit dem externen Speicher zu tun, aber ich möchte den internen Speicher verwenden, falls der externe Speicher nicht verfügbar ist.
Danke.
Ja, ** passpoints_image ** ist der Name der Datei. Wie ich schon sagte, es funktioniert gut, wenn ich den externen Speicher verwende, wenn die 'picturesDirectory = Environment.getExternalStoragePublicDirectory (Environment.DIRECTORY_PICTURES);' Ich habe permession in Android Manifest, aber ich denke, dass sie nur zum Lesen/Schreiben benötigt werden der externe, nicht der interne Speicher. Wie auch immer, ich habe das: ' ' –
dkk6
Leider mit .jpg und .bmp, es funktioniert immer noch nicht. – dkk6