So laden Sie Dateien von FTP auf die SD-Karte herunter, ohne zu rooten

Einfache Frage, aber ich konnte die Antwort nirgendwo finden (alle Antworten erfordern das Rooten auf Android Marshmallow, da FTP-Clients nicht die Berechtigung enthalten, auf die SD-Karte zu schreiben). Ich habe eine riesige Datei, die zu groß ist, um sie in den internen Speicher herunterzuladen. Es kann also nur direkt auf die SD-Karte heruntergeladen werden. Es scheint auch, dass keine externen Apps die Berechtigung haben, auf die SD-Karte zu schreiben, sodass ich Befehlszeilentools nicht direkt verwenden kann.

Da die Datei riesig ist, muss ich auch in der Lage sein, Downloads anzuhalten und fortzusetzen.

@IrfanLatif Die Datei ist in meinem Fall größer als der interne Speicher.
Ja. Aus diesem Grund können Sie direkt auf eine externe SD-Karte im privaten Verzeichnis (innerhalb des Android/data/Verzeichnisses) der Download-App herunterladen. Sie können jede FTP-Client-GUI-App oder jedes CLI-Dienstprogramm verwenden. Wenn die App SAF-APIs verwendet, ist das Schreiben auf die SD-Karte in jedem Verzeichnis möglich.

Antworten (1)

Ich verwende Folder Sync.
Aber es hängt von Ihrer Android-Version ab. Wenn Sie 5.1 oder höher haben, müssen die Anwendungsentwickler Environment.getExternalStorage einschließen.....

BEISPIELDATEIVERWENDUNG

File file = new File(Environment.getExternalStorageDirectory(), "myfile.txt"); 

anstelle der alten fest codierten Methode.

File file = new File("SDCard", "myfile.txt"); 

Für weitere Informationen über das Anhalten des Fortsetzens mit FTP habe ich einen Link zu einer Entwicklungsfrage zum Anhalten des Fortsetzens auf Android-Clients eingefügt

Kostenlose Ordnersynchronisierung

Entwickeln eines FTP-Clients mit Pause Resume auf Android

Für den Terminalemulator sollten Sie ausführen

getprop vold.path.external_sd

Versuchen Sie dann, das externe Verzeichnis wie zurückgegeben auszuführen

NICHT

sdcard/download/txt.txt

EHER

storage/sdcard0/download/txt.txt

Es ist normalerweise nur ein Verzeichnis / das alte Verzeichnis ist nicht mehr zugänglich. Sie müssen also den tatsächlichen Pfad mit einem Befehl abrufen ...

getprop  

getprop gibt alle aktuellen Systemeigenschaften zurück, dazu gehören Speicherpfade und Netzwerkstatusergebnisse

Also muss ich root für Ihre App verwenden. aber dafür warte ich auf die Funktion von Android 7.
Sie sollten niemals Root-Zugriff benötigen, um auf die SD-Karte zuzugreifen, es sei denn, die Anwendung verwendet einen alten fest codierten SD-Kartenpfad. Ich weiß, dass Sie einen Ordner auswählen können, dann auf SD-Karte anzeigen klicken und dann den Ordner auf der SD auswählen Card to save to... Es sollte nicht SD Card heißen, sondern so etwas wie E4-534/download/path statt SDCard/download/path.... Dies erfordert keinen Root-Zugriff, nur die richtige Codierung
Es scheint das Anhalten und Fortsetzen des Downloads nicht zu unterstützen. Ich habe nur Teilzeit-Internetzugang.
Ok, wie groß ist die Datei? .. Ich bin mir nicht sicher, ob die Funktion zum Anhalten der Wiederaufnahme auf den meisten FTP-Servern aufgrund der geringen Sicherheit bei gesendeten Rohdaten, Benutzername, Passwort usw.
Sie können jederzeit mit wget oder aria2 auf FTP-Servern pausieren und fortsetzen (die Verbindung wird geschlossen und beim erneuten Öffnen beginnt der Download mit einem Offset) . Es ist 30 ɢb groß, aber als XML-Datei kann seine Größe vor dem Herunterladen eventuell reduziert werden.
Es könnte ein Client-Problem mit Android-Anwendungen sein ... hier ist der Link, den ich gelesen habe: stackoverflow.com/questions/32536854/…
wget und aria2c sind Linux-Befehle, die einen Terminalemulator auf Android erfordern. Ich habe keinen Terminalemulator gesehen, der es erlaubt, auf die SD-Karte zu schreiben.
Es wäre eigentlich ziemlich einfach nach dem vorherigen Link zu machen, aber ich würde einen halben Tag brauchen!
Terminalbefehle können mit Prozess- und Eingabestrom ausgeführt werden, dann könnten Sie den mit der SD-Karte verschlüsselten Verzeichnisnamen E4-686/ abrufen und dann einen Zeichenfolgenbefehl ausführen, der das Verzeichnis mit dem Befehl zusammenfügt, der über den Prozess ausgeführt werden soll, und dann den Eingabestrom erfassen und zurückgeben zum Benutzer!
Was ??? ??? ???