2016-08-10 2 views
0

Ich bin neu für Android, Im Bild von URL herunterladen und in ListView festgelegt. Es funktioniert einige mobile und nicht erstellen Datei/Verzeichnis in einigen mobilen. Sein Wurf Fehler wie:Datei nicht gefunden Ausnahme: Öffnen fehlgeschlagen: ENOENT

java.io.FileNotFoundException: /storage/emulated/0/.tam/veg.png: open failed: ENOENT (No such file or directory) 

Ich weiß nicht, warum seine throw Fehler wie dieser einige Handy. Ich möchte alle Arten von mobilen Verzeichnis erstellen. Bitte, bitte hilf mir.

Hier mein Code:

public class ImageStorage { 
public static String saveToSdCard(Bitmap bitmap, String filename) { 

    String stored = null; 

    File sdcard = Environment.getExternalStorageDirectory(); 
    File folder = new File(sdcard.getAbsoluteFile(), ".tam");//the dot makes this directory hidden to the user 
    folder.mkdir(); 
    File file = new File(folder.getAbsoluteFile(), filename) ; 
    if (file.exists()) 
     return stored ; 
    try { 
     FileOutputStream out = new FileOutputStream(file); 
     bitmap.compress(Bitmap.CompressFormat.PNG, 90, out); 
     out.flush(); 
     out.close(); 
     stored = "success"; 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    return stored; 
} 

public static File getImage(String imagename) { 

    File mediaImage = null; 
    try { 
     String root = Environment.getExternalStorageDirectory().getAbsolutePath(); 
     File myDir = new File(root); 
     if (!myDir.exists()) 
      return null; 

     mediaImage = new File(myDir.getPath() + "/.tam/"+imagename); 
    } catch (Exception e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    return mediaImage; 
} 

public static File checkifImageExists(String imagename) { 
    File file = ImageStorage.getImage("/" + imagename); 
    if (file.exists()) { 
     return file; 
    } else { 
     return null; 
    } 
} 

public static String getImageName(String value){ 

    String getName[] = value.split("/"); 
    return getName[4]; 
} 

}

Unten Pfad nicht in allen Mobil:

/storage/emulated/0/ 

Vielen Dank im Voraus !!

+0

Haben Sie in Manifest erforderlichen Berechtigungen hinzugefügt? –

+0

Haben Sie externe Genehmigung in Manifest benötigt? Wenn nicht, fügen Sie das ** hinzu ** –

+0

Ich habe bereits die Erlaubnis hinzugefügt .. Aber ich checke Handy ein Kein Pfad wie dieser/Speicher/emuliert/0/ – hikoo

Antwort

0

Vielleicht sollte u überprüfen, ob es in der mobilen externen Speicher ist, bevor u diesem Pfad verwenden

public String getDir(Context context) { 
String checkPath = null; 
if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState()) 
     || !Environment.isExternalStorageRemovable()) { 
    checkPath = Environment.getExternalStorageDirectory().getPath(); 
} else { 
    checkPath = context.getCacheDir().getPath(); 
} 
return checkPath; 
}  
+0

Wo ich diese getDir-Methode – hikoo

+0

anrufen 'überprüfen, ob es externen Speicher im Handy gibt'. Nicht benötigt. Jedes Handy verfügt über externen Speicher. – greenapps

+0

Mein Code funktioniert nur Android 6.0 und höher .. Wie bekomme ich die Erlaubnis in Marshmallow – hikoo

Verwandte Themen