Android Datenaustausch mit SDCard
Ein Handy (Samsung GT S6500) mit dem Android Betriebssystem 2.3.6 ist über USB-Kabel mit einem PC verbunden.
Problem: Obwohl der ADB-Treiber (Android Debug Bridge) auf dem PC eingespielt ist und auch das Debuggen mit der Entwicklungsumgebung Eclipse auf dem Samsung-Handy funktioniert, ist es nicht möglich, vom PC aus auf die SDCard des Geräts zuzugreifen, d.h. den Inhalt der Speicherkarte einzusehen und Dateien zwischen PC und SDCard auszutauschen.
Lösung:
1.) Mit dem Finger oben auf dem Handy das USB Symbol berühren und nach unten ziehen.
2.) Daraufhin öffnet sich ein kleines Auswahlmenü mit dem Menüpunkt "USB verbunden". Dieser Eintrag ist anzuklicken.
3.) Es öffnet sich ein Dialog mit einem Button "USB-Speicher verbinden". Nach dem Drücken dieses Buttons erscheint im Datei-Explorer von Windows 7 die SDCard des Handys als Wechselfestplatte. Der Datenaustausch zwischen PC und SDCard ist nunmehr nur noch eine Frage von Drag und Drop.
Vorsicht: Fallstrick
Die Sache hat einen ganz großen Haken!!
Solange man diese PC <==> Handy Datenverbindung hergestellt hat, kann eine Android-App keine Datei mehr auf die SDCard schreiben.
Es kommt zu einer Exception, die nur in der Entwicklungsumgebung sichtbar ist:
java.io.FileNotFoundException: /mnt/sdcard/dateiname.txt (Permission denied)
Das bedeutet für einen Entwickler, der eine Methode testen möchte, die eine Datei auf die SDCard stellt, dass er darauf achten muss, dass zur Laufzeit definitiv keine USB-Speicherverbindung zwischen PC und Handy besteht und erst danach darf er wieder die USB-Speicherverbindung aktivieren, um sich den Inhalt der SDCard anzusehen.
Die oben beschriebene Aktivierung der USB-Speicherverbindung hat nichts zu tun mit der "normalen" USB-Kabelverbindung zwischen PC und Handy, die man für das Überspielen einer App oder während des Debuggens auf dem Handy benötigt.
Hier ein paar anzupassende Codezeilen, wenn jemand seinen Code in dieser Richtung untersuchen möchte:
Log.d(TAG, "StorageState: " + Environment.getExternalStorageState()); File root = Environment.getExternalStorageDirectory(); if (root.canWrite()) { Log.d(TAG, "root can write"); } else { Log.d(TAG, "root cannot write"); } OutputStream os = new FileOutputStream(destinationPath);
Nachtrag:
Bei der Android-Version 4.2.2 (KitKat) wird das USB-Symbol bei mir nicht angezeigt. Zur Aktivierung des Datenaustausches sind folgende Schritte erforderlich:
- Einstellungen/Speichern
- oben auf die drei Punkte klicken
- es erscheint ein Menüpunkt "USB-Verbindung PC", diesen anklicken
- Mediengerät(MTP) auswählen
Links:
Device Recovery: How to connect Android devices to PC with USB Mass Storage Mode
Kategorie: Android