Gibt es eine Möglichkeit, Apps zu zwingen, nur den internen Speicher zu verwenden?

Ich habe ein Sony Xperia U und meine 8 GB Speicher sind in drei Teile aufgeteilt: 2 GB Telefonspeicher, 4 GB interner Speicher (ersetzt den MicroSD-Steckplatz) und 2 GB, über die ich noch nicht wirklich Bescheid weiß.

Ich möchte mich nicht mit der Neuaufteilung anlegen. Ich möchte nur jeden verwenden, da sie verwendet werden müssen.

Das Problem ist: Viele Apps sind darauf optimiert, viele Dinge in SD zu speichern, aber für dieses Telefon ist es nicht wirklich nützlich, da es viel Platz im Telefonspeicher hat! Was kann ich tun, damit automatisch erstellte App-Daten nur den internen Speicher verwenden und SD (intern, im Fall von Xperia U) für meine eigene Verwendung frei bleibt?

Edit: Danke für eure Antworten! John, mein Gerät ist gerootet, also könnten Sie diese Berechtigungen bitte näher erläutern? Danke im Voraus!

(Ihr Englisch ist in Ordnung. Besser sogar als manche Muttersprachler.)
Wenn Sie ein gerootetes Gerät haben, können Sie die Ordnerberechtigungen auf der SD-Karte nur auf root setzen.
Wenn der Entwickler das in seiner App codiert hat, können Sie nicht viel tun. Wenn er den "Pfad" kodiert (z . B. /sdcard/funnyapp, oder using getExternalStorageDirectory()(so sollte es gemacht werden) und anhängt /funnyapp(oder ein beliebiges Verzeichnis), könnten Sie mit Symlinks spielen (die diesen Ort mit dem internen Speicher verknüpfen) - aber selbst das wird höchstwahrscheinlich der Fall sein fehlschlagen, da symbolische Links vom Dateisystem der „sdcard“ „nicht unterstützt“ werden.
Ergänzend zu Izzys obigem Kommentar haben Sie Pech, wenn der Entwickler ausdrücklich möchte, dass die App irgendwo installiert wird. Weitere Informationen hierzu finden Sie in den Android-Supportdokumenten . @Izzy, dein Kommentar ist die Antwort auf diese Frage, oder?

Antworten (3)

Sie sagen, Ihr Telefon ist gerootet, es ist dann möglich, den Standardinstallationsort zu ändern, den der Paketmanager zum Installieren von Apps verwendet. Dies funktioniert nur mit Apps, die dies zulassen, wie andere bereits darauf hingewiesen haben. Apps können die Empfehlung des Paketmanagers ignorieren und trotzdem intern/extern installieren, auch wenn Sie das Gegenteil wählen. Außerdem werden große Spieldateien im obb-Verzeichnis dort gespeichert, wo sich das obb-Verzeichnis tatsächlich befindet. Dies hängt davon ab, welches Telefon Sie verwenden.

So ändern Sie das Standardinstallationsverzeichnis:

1) Verwenden Sie den Terminal-Emulator von Google Play (oder aktivieren Sie alternativ das USB-Debugging und verwenden Sie adb)

2) Geben Sie im Terminal-Emulator Folgendes ein:

su

akzeptiere die Superuser-Anfrage und versuche dann entweder:

pm setInstallLocation X

oder:

pm set-install-location X

wobei X entweder sein kann

0 = Paketmanager entscheiden lassen

1 = standardmäßig auf intern installieren

2 = standardmäßig auf extern installieren

Wie Sid ermutigt hat, werde ich meinen Kommentar in eine Antwort umwandeln - während ich Details aus den anderen Kommentaren zusammenführe:

Es gibt hauptsächlich zwei Möglichkeiten, wie die SDCard von Apps aus angesprochen wird:

  1. fest codierter Pfad (z. B. /sdcard/funnyapp)
  2. mit Androids API, dhgetExternalStorageDirectory()

Während 1. fehlschlagen könnte, wenn die SDCard an einer anderen Stelle gemountet wird, würde 2. dazu führen, dass die App Dinge auf der "ersten" SDCard speichert (bei Geräten mit interner SDCard, dh interne SDCard, bei anderen extern). Beiden Fällen ist jedoch gemeinsam: Wenn die App keine Konfigurationsoption bietet, können Sie daran nichts ändern. Android bietet keine entsprechende Einstellung und Symlinks funktionieren nicht auf SDCards (aufgrund von Einschränkungen des Dateisystems).

Gleiches gilt für den Speicher, der für die App selbst verwendet wird, wie Sid unter Hinweis auf Android-Supportdokumente schrieb (siehe dazu auch die Entwicklerdokumentation zum App-Installationsort ). Während man in den meisten Fällen eine App mit der in Android integrierten App2SD-Funktion verschieben kann, kann der Entwickler dies außer Kraft setzen, sodass seine App nicht verschoben werden kann.

Was Johns Kommentar betrifft , würde dies nicht wirklich funktionieren. Noch eine kleine Erklärung, was er höchstwahrscheinlich meinte: Mit "root powers" konnte man den Besitz aller Dateien und Verzeichnisse ändern. Seine Idee war also wahrscheinlich, alle Dinge auf Ihrer SD-Karte im Besitz von root zu machen und nur für andere lesbar zu machen. Dies würde aus mehreren Gründen nicht funktionieren:

  • Dies würde die Dinge für Sie noch komplizierter machen (da Sie auch nicht schreiben konnten, ohne vorher jedes Mal root zu werden).
  • Sie könnten das nicht auf Verzeichnisebene tun (z. B. für jedes einzelne Verzeichnis außer einem mit einem "Phantasienamen" wie z. B. "MyOwnDocs", wo Sie Ihre Sachen ohne den Ärger des vorherigen Arguments speichern könnten), als das Dateisystem auf der Karte (FAT) unterstützt das nicht.
  • Es könnte irgendwie sein, wenn Sie ein Skript verwenden, um die Karte jedes Mal, wenn Sie darauf schreiben möchten, erneut zu lesen und zu schreiben, und sie wieder schreibgeschützt machen, wenn Sie fertig sind. Aber noch einmal, diese Komplikation ist es höchstwahrscheinlich nicht wert. Darüber hinaus können einige Apps mit einer schreibgeschützten SD-Karte abstürzen, da sie (aus guten Gründen) nicht erwarten, dass eine SD-Karte vorhanden, aber nicht beschreibbar ist.

TL;DR

Kurz gesagt: Wenn die Apps nicht selbst so konfiguriert werden können, gibt es keine Möglichkeit, dies zu erreichen (außer diese Apps neu zu schreiben).

Symlinks funktionieren nicht auf Fat, aber er kann einen Ordner wie folgt mounten und binden: mount -o bind /internal/dir /sdcard/dir

Versuchen Sie es mit Lucky Patcher und installieren Sie die apk der App als System-App.

Könntest du Lucky Patcher verlinken? Wird sich dadurch tatsächlich ändern, wo die App Dinge speichert?