2016-10-07 4 views
0

Ich versuche, Ordner auf externe microsd-Karte erstellen, aber es funktioniert nicht.Erstellen Ordner auf externen Speicher

String sdpath = Environment.getExternalStorageDirectory().getAbsolutePath()+"/sdcard/Ankur Jain"; 

Toast.makeText(Second.this,sdpath,Toast.LENGTH_LONG).show(); 

File file = new File(sdpath); 
if(!file.exists()){file.mkdirs(); 
    Toast.makeText(Second.this,"Created path",Toast.LENGTH_LONG).show(); 

} 

ich habe alle Erlaubnis auch hinzugefügt.

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

und bauen gradle App wie unten

compileSdkVersion 24 
buildToolsVersion "24.0.2" 
defaultConfig { 
    applicationId "jss.intentgame" 
    minSdkVersion 11 
    targetSdkVersion 22 
    versionCode 1 
    versionName "1.0" 

Was nun Ordner auf der Karte erstellen stoppt?

+0

Können Sie mir sagen, in welcher Version versuchen Sie, es auszuführen? –

+0

Eigentlich hoffe ich, Sie wissen gut über die Erlaubnis-Funktion in Android. –

+0

Ein weiterer Punkt, wie @commonsWare erwähnt, dass es keinen Code gibt, der sich auf das Erstellen des Verzeichnisses bezieht. Überprüfen Sie, wie Sie einen Ordner in Java erstellen. –

Antwort

0

Zuerst erstellt new File() keine Datei. Es erstellt ein File Objekt. Ihre Frage enthält keinen Code zum Erstellen einer Datei oder eines Verzeichnisses.

Zweitens, Environment.getExternalStorageDirectory().getAbsolutePath()+"/sdcard/Ankur Jain" wird nicht auf "externe microsd-Karte" auf den meisten, wenn nicht allen Android-Geräten zeigen. Das verweist auf ein Unterverzeichnis, das Sie versuchen, unter external storage zu erstellen.

Drittens haben Sie keinen wahlfreien Zugriff auf removable storage auf Android 4.4 +.

Wenn Sie möchten, dass der Benutzer mit Wechselspeicher arbeiten kann, verwenden Sie the Storage Access Framework auf Android 4.4 +. Vorher gab es keine Unterstützung für Android SDK für Wechseldatenträger.

+0

Ich habe verpasst, Verzeichnis-Code zu erstellen. ich hoffe es ist jetzt ein bisschen sinnvoll. kannst du weiter führen. –

+0

es mache ich Verzeichnis jetzt aber im internen Speicher ... Wie bekomme ich den Pfad von microsd? –

+0

@AnkurJain: "Ich mache jetzt ein Verzeichnis, aber im internen Speicher" - der Code in Ihrer Frage funktioniert mit dem, was das Android SDK als [externer Speicher] bezeichnet (https://commonsware.com/blog/2014/04) /08/speicher-situation-externe-speicherung.html). "Wie bekomme ich den Weg von microsd?" - Sie haben keinen willkürlichen Zugriff auf [Wechselspeicher] (https://commonsware.com/blog/2014/04/09/storage-situation-removable-storage.html) auf Android 4.4 und höher. – CommonsWare

0

Lassen Sie mich den grundlegenden Arbeitscode teilen, den Sie sehen können, und versuchen Sie es entsprechend. Hoffe, das würde Ihnen helfen, den Ordner zu erstellen.

  1. Um den Ordner auf der SD-Karte zu erstellen, definieren Sie zunächst den Pfad und den Verzeichnisnamen. Danach habe ich eine Klasse erstellt, die Methoden enthält, die die absolute Pfadreferenz zurückgeben.
public class AppConst{ 
    private static String APPLICATION_PATH = Environment.getExternalStorageDirectory().getPath(); 
    private static String DIR_HOME = “YourRootDirName”; 
     private static String IMAGE_HOME = “SubDirectoryName”; 

     private static String getApplicationPath() { 
     return (APPLICATION_PATH + "/"); 
     } 

     public static String getRootPath() { 
     return (getApplicationPath() + DIR_HOME + "/"); 
     } 
     public static String getImageAbsolutePath() { 
     return getRootPath() + IMAGE_HOME + "/"; 
     } 
} 
  1. Nach der Constants-Klasse erstellen, Next Wir schaffen die Storagemanager, die uns helfen würden, das Verzeichnis zu erstellen. Diese Klasse benötigt die Hilfe von AppConst, um die absolute Position des Richtungsorts zu ermitteln.
public class StorageManager { 
    public static void verifyImagePath() { 
     File imageDirectory = new File(AppConst.getImageAbsolutePath());// It use the path that we define in constant file. 
     if (!imageDirectory.exists()) { 
      imageDirectory.mkdir(); 
     } 
    } 
} 
} 
  1. Jetzt in Ihrer Anwendung den Platz finden, wo Sie den Ordner erstellen und schreiben dies unter Code gestartet werden sollen.

    StorageManager. verifyImagePath(); 
    
  2. Die obige Aussage macht den Ordner auf definierten Ort auf Speicheroption erstellen.

Hinweis: Stellen Sie sicher, dass Sie die Lese-/Schreibberechtigung in Ihrer App-Manifest-Datei geben muss. Wenn Sie die App in Marshmallow Gerät ausführen, stellen Sie sicher, dass Sie die Lese-/Schreibberechtigung an Ihre -Anwendung vergeben.

+0

Keine Änderung. immer noch das gleiche Ergebnis, Ordner werden nur im internen Speicher erstellt. private static Zeichenfolge APPLICATION_PATH = Environment.getExternalStorageDirectory(). getPath(); private statische Zeichenfolge DIR_HOME = "sdcard1"; private statische Zeichenfolge IMAGE_HOME = "Ankur Jain"; entweder benutze ich SDcard, der Ordner wird im internen Speicher erstellt –

0

Ich habe den Trick, meine Probleme zu lösen. Holen Sie sich die Liste der Speichergeräte, trimmen Sie den Pfad und wir erhalten den absoluten Pfad für den SD-Kartenspeicher.Mit normalen mkdris Ordner erstellen. Hier ist Code.

File[] externalStorageFiles = ContextCompat.getExternalFilesDirs(MainActivity.this, null); 
    storagepath = new String[externalStorageFiles.length];            for (int i = 0; i < externalStorageFiles.length; i++) { 
     storagepath[i] = externalStorageFiles[i].toString(); 
      System.out.println(storagepath[i]); 
               } 
0

Ändern Sie Ihren Code in getPath() anstelle von getAbsolutePath(). In meinem Fall für alle Bedingungen arbeiten.

Environment.getExternalStorageDirectory().getPath() 
Verwandte Themen