2017-01-04 2 views
0

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.

Antwort

0

Ist passspoints_image ein Bildname? Wie wäre es, eine Erweiterung hinzuzufügen, z. B. passspoints_image.jpg?

Oder haben Sie Lese-/Schreibberechtigung in Ihrer AndroidManifest.xml Datei?

+0

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

+0

Leider mit .jpg und .bmp, es funktioniert immer noch nicht. – dkk6

Verwandte Themen