2016-04-26 6 views
0

Meine if-Bedingung auf imgFile.exist() gibt mir falsch, aber ich kann die Datei in dem Pfad vorhanden sehen, wenn Log.d das Ergebnis ausgibt.Warum existiert meine Datei nicht, obwohl ich einen Pfad angegeben habe, der existiert?

ich einfach bin versucht, ein Bild von einem Pfad zu laden es als Hintergrund eines activitys Miniatur-Bild zu setzen

Ich habe auch die Lese/Schreib-Erlaubnis in meinem Manifest android.permission.WRITE_EXTERNAL_STORAGE

LADEN A BILD:

File imgFile = new File(getRowItem.getImgURI().trim()); 
Log.d("TAGG", "FILE PATH: " + imgFile.getPath()); 
// imgFile's path: /storage/emulated/0/TravelDiary/img_1461684314337.jpg 


if(imgFile.exists()){ 

    //it never reach inside here 

    Log.d("TAGG", "FILE ABSOLUTE PATH: " + imgFile.getAbsolutePath()); 
    Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath()); 
    Drawable drawable = new BitmapDrawable(getResources(), myBitmap); 
    imageView.setBackground(drawable); 
} 

SPEICHERN BILD:

ein Bild gespeichert wird, wenn der Benutzer von einem intentChooser aus einem Bild caputure wählt entweder die Kamera oder das Bild von gallary

public void ImagePicker(View v){ 

if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) { 
     if (PackageManager.PERMISSION_GRANTED == ActivityCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) && PackageManager.PERMISSION_GRANTED == ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE)) { 

      final File rootdir = new File(Environment.getExternalStorageDirectory() + File.separator + "TravelDiary"); 
      rootdir.mkdirs(); 
      final String filename = "img_" + System.currentTimeMillis() + ".jpg"; 
      final File sdImageMainDirecotry = new File(rootdir, filename); 
      outputFileUri = Uri.fromFile(sdImageMainDirecotry); 
      ... 
      ... 


    } else { 
      //if permission is not granted, then we ask for it 
      ActivityCompat.requestPermissions(this, new String[] {Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE}, 1); 
     }else{ 
     Toast.makeText(this, "External storage not available", Toast.LENGTH_SHORT).show(); 
    } 
} 

Berechtigungen in meinem Manifest Auswahl:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.example.muddii.traveldiary"> 

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> 

... 
... 
... 

</manifest> 
+0

Mögliche Duplikat [android - File.Exists() gibt false für vorhandene Datei (für etwas anderes als pdf)] (http : //stackoverflow.com/questions/21579468/android-file-exists-returns-false-for-existing-file-for-anyything-different) – pablisco

+0

Vielleicht haben Sie 'READ_EXTERNAL_STORAGE' oder' WRITE_EXTERNAL_STORAGE' nicht als Erlaubnis angefordert. Wenn Sie haben, vielleicht [es gibt ein Problem, wie Sie das tun] (https://commonsware.com/blog/2015/08/31/hey-where-did-my-permission-go.html). – CommonsWare

+0

@CommonsWare Ich habe das getan, bevor ich die Frage gestellt habe. Das ist nicht, wo das Problem ist, denke ich – Muddz

Antwort

0

Fügen Sie das in Ihrem Manifest hinzu.

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 
+0

Ich habe schon das – Muddz

+0

AAnd READ_EXTERNAL_STORAGE, hast du es auch? – Ricardo

+0

@RicardoBarroca ja. – Muddz

0

Was ist Ihr SDK-Wert in Großbuchstaben? Wenn es 23 ist, müssen Sie zur Laufzeit um Erlaubnis fragen.

http://developer.android.com/training/permissions/requesting.html

+0

Seine 23 und ich habe die Erlaubnis angefordert, wenn der Benutzer auf ein Icon klickt, das dann eine intentChooser zeigt Der Benutzer kann entweder ein Bild aus der Galerie auswählen oder ein Bild von der Kamera nehmen. – Muddz

+0

Wenn Sie die RUNTIME-Berechtigung nicht angefordert haben und auf einem Marshmallow-Gerät ausgeführt werden, haben Sie keinen Zugriff auf externen Speicher, unabhängig davon, welche Berechtigungen in Ihrem Manifest angegeben sind. – Kuffs

+0

Ich habe das. Sieh dir meine bearbeitete Frage an, wo ich sie zeige – Muddz

0

versuchen, dies statt imgFile.exists()

File file = new File(path); 
if (!file.isFile()) { 
    //your code 
}else{ 
//your code 
} 
Verwandte Themen