Datei auf SD-Karte wird in Windows-Explorer nicht angezeigt

  • 3 Antworten
  • Letztes Antwortdatum
noobadix

noobadix

Neues Mitglied
1
Hallo!

Gerade bin ich als Hobbyprogrammierer dabei meine erste App auf dem Motorola Razr HD zu entwickeln und scheitere, bzw. bin verwirrt durch das simple Anlegen einer leeren Textdatei auf der SD-Karte.

Ich speichere die Datei folgendermaßen:
Code:
File file = new File("/mnt/external1","testFile.txt");
try{
     if(file.createNewFile()) System.out.println("Saved successfully!");
     else System.out.println("Saving FAILED!"); 
}
catch(Exception e){
     e.printStackTrace();
}

Sie ist auch zu finden, wenn ich mit dem Dateibrowser des Handies auf der SD-Karte nachsehe. In Windows (7) hingegen sehe ich die Datei nicht! :confused:

Wie kommt das und was kann ich dagegen tun?!

Habe bereits:
-verschiedene Pfade zum Speichern probiert
-Windows-Suchfunktion probiert
-im Windows-Explorer"versteckte Dateien/Ordner anzeigen" aktiviert und "Systemdateien ausblenden" deaktiviert

Gruß!
 
Zuletzt bearbeitet:
Also wenn du den Pfad via
Code:
Environment.getExternalStorageDirectory().getAbsolutePath()
holst und die Berechtigungen der App korrekt gesetzt hast (und der Speicher verfügbar ist), kannst du in den externen Speicherbereich schreiben.

Heutige Android-Geräte haben aber oft einen internen Speicher, einen externen Speicher und eine SD-Karte. Bei solchen Geräten kannst du (soviel ich weiss) nicht auf die SD-Karte schreiben. Die ist dann nur zum lesen.

Der interne und externe Speicher sind beide im Gerät verbaut (bzw. es ist ein Speicher mit verschiedenen Partitionen). Extern heisst in dem Fall dann nur, dass es der geteilte Speicherbereich für Apps ist. Vom PC auf die externe Partition zugreifen solltest du aber können.
 
Danke für deinen Hinweis! Das bizarre ist: Mit meinem HTC One V funktioniert der folgende code, mit dem Motorola Razr HD hingegen nicht. D.h., dass auf beiden Geräten Pfad und Datei erstellt worden sind, mit dem Windows Explorer sind sie jedoch nur auf dem HTC zu finden. :crying:
Ich weiß nichtmal wonach ich googlen sollte! :X
Woher weiß ich denn, bzw woran erkenne ich, dass ich per App nicht auf die SD-Karte schreiben darf?

EDIT: Oh, nach einem Neustart des Motorolas war die Datei plötzlich zu sehen. Der Tipp kam von http://www.xoomforums.com/forum/xoo...ows-does-not-show-new-files-created-xoom.html, der Lösungsvorschlag mit dem MediaScanner funktioniert bislang aber noch nicht.

Code:
...
File path = Environment.getExternalStorageDirectory(),
     filePath = new File(path.getAbsolutePath()+"/testDir"),
     file = new File(filePath.getAbsolutePath(), "testFile.txt");
if(sdCardAvailable()){
     if(createDirectory(filePath)){
          tv.append("\n Creating file in:"+filePath.getAbsolutePath()+"...");
          if(createFile(file)) tv.append("successfully.");
          else tv.append("FAILED!");
     }
     else tv.append("\n Directory '"+filePath.getAbsolutePath()+"' not available.");
}
else tv.append("\n SD-Card not available.");
	
public boolean createFile(File file){
     if(file.exists()){
          tv.append("\n"+"File exists already and is "+(file.isHidden()?"hidden.":"not hidden."));
          return true;
     }
     try{
          return file.createNewFile();
     }
     catch(Exception e) e.printStackTrace();
     return false;
}
	
public boolean sdCardAvailable(){
     if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
          System.out.println("SD-Card available.");
          return true;
     }
     else{
          System.out.println("SD-Card NOT available!");
          return false;
     }
}

public boolean createDirectory(File file){
     if(file.isDirectory()){
          System.out.println("Path '"+file.getAbsolutePath()+"'exists already.");
          if(file.list()!=null) for(String s: file.list()) System.out.println(s);
          else System.out.println("File.list() is null");
          return true;
     }
     else{
          System.out.println("Path '"+file.getAbsolutePath()+"' does not exist.");
          try{
               if(file.mkdirs()){
                    System.out.println("Path created.");
                    return true;
               }
               else{
                    System.out.println("Creating path FAILED!.");
                    return false;
               }
          }
          catch(Exception e){
               e.printStackTrace();
               return false;
          }
     }
}
 
Zuletzt bearbeitet:
Android gibt dir mit
Code:
Environment.getExternalStorageDirectory()
einfach den externen Speicher, egal ob das jetzt eine Partition des internen Speichers ist oder eine physische SD-Karte. Als Entwickler ändert sich also nichts.

Ich dachte zuerst, der Fehler könnte daran liegen, dass deine App das File auf der externen Partition des internen Speichers erstellt und das Gerät dir dann auch diesen Speicher anzeigt (deshalb siehst du das File dann auf dem Gerät), du dann aber mit Windows auf der physischen SD-Karte danach suchst. Das Problem war ja aber schlussendlich etwas anderes ;)

Zur Info (Android Storage Options: External Storage):
It's possible that a device using a partition of the internal storage for the external storage may also offer an SD card slot. In this case, the SD card is not part of the external storage and your app cannot access it (the extra storage is intended only for user-provided media that the system scans).
 

Ähnliche Themen

AnnaBauer21
Antworten
0
Aufrufe
476
AnnaBauer21
AnnaBauer21
D
Antworten
8
Aufrufe
754
jogimuc
J
S
Antworten
7
Aufrufe
1.145
Silvasurf
S
AnnaBauer21
Antworten
6
Aufrufe
952
AnnaBauer21
AnnaBauer21
P
Antworten
13
Aufrufe
497
Peter18
P
Zurück
Oben Unten