Soweit ich vermute, steht jedem Benutzer der interne Speicher zur Verfügung. Wenn emulierter Speicher ein Speicherort ist, der für einen bestimmten Benutzer erstellt wurde, sollen Dateien, die in erstellt wurden , in /storage/emulated/0
erscheinen /storage/sdcard0
? Ich gehe davon aus, dass dies nicht der Fall ist, da vom Benutzer erstellte Dateien nur emuliert angezeigt werden sollten, da sonst vom Benutzer erstellte Dateien für alle anderen Benutzer sichtbar wären.
Ich habe auf einem meiner Geräte nachgesehen, und wie die Kommentarkette bereits vermutet hat, müssen Sie sich keine Sorgen machen, dass jeder Zugriff auf die Daten aller anderen hat. Erste:
/storage/sdcard0 -> /storage/emulated/legacy
Das heißt, es ist nur ein Symlink, der immer auf die Daten des aktuellen Benutzers zeigt:
/storage/emulated/legacy -> /mnt/shell/emulated/0
(der erste Benutzer – in meinem Fall der einzige). Zweitens, wo Sie normalerweise danach suchen:
/sdcard -> /storage/emulated/legacy
Wieder das gleiche Spiel. Für die emulierte SD-Karte (auch als "interne SD-Karte" bezeichnet) kümmert sich das Android-System darum, sie dem aktuellen Benutzer entsprechend zuzuordnen. Bei der externen SD-Karte bin ich mir nicht sicher (ob diese z. B. zum Teilen von Daten zwischen mehreren Benutzern verwendet werden könnte). Dies ist normalerweise zu finden in /storage/sdcard1
:
$ mount | grep sdcard
/dev/block/vold/179:65 /mnt/media_rw/sdcard1 vfat […]
/dev/fuse /storage/sdcard1 fuse […]
$ ls /mnt/media_rw/sdcard1
/mnt/media_rw/sdcard1: Permission denied
$ su -c "ls /mnt/media_rw/sdcard1"
[data from external SD card]
Sie können also sehen, dass auf die externe SD-Karte nur mit Root-Berechtigungen direkt zugegriffen werden kann , warum "normale Benutzer" über eine darauf gelegte FUSE-Halterung gehen müssen. Das System könnte also wieder dafür sorgen, dass jeder Benutzer an dieser Stelle nur auf seine eigenen Daten zugreifen kann. Ich bin mit den Interna nicht vertraut genug, um es mit Sicherheit zu sagen (oder auch nur zu sagen, was genau dort gemacht wird).
Nun zu Ihrer ausdrücklichen Frage, ob Dateien, die in erstellt wurden, in /storage/emulated/0
erscheinen sollen /storage/sdcard0
: Angenommen, Sie sprechen von /mnt/shell/emulated/0
(ich konnte es /storage/emulated/0
auf meinem Gerät nicht finden), tun sie dies empirisch natürlich, da sich beide am selben Ort befinden: /storage/sdcard0 -> /storage/emulated/legacy -> /mnt/shell/emulated/0
– was bedeutet, dass /storage/sdcard0
zeigt, was in enthalten ist /mnt/shell/emulated/0
. Aber deine Sorge ist unbegründet: zeigt durch den "Mittelsmann" ( /storage/emulated/legacy
) /storage/sdcard0
immer auf den Speicher des "eingeloggten Benutzers" – wenn also z. B. der zweite Benutzer dort nachschaut, sieht er was drin ist /mnt/shell/emulated/1
(bzw was auch immer sein/ihr emulierter Speicherbereich ist).
Lassen Sie mich als PS die Dinge aus den Kommentaren als kurze FAQ zusammenfassen:
Siehe auch:
/sdcard
hier ist ein direkter Link zu /storage/emulated/legacy
, nicht zu /storage/sdcard0
./storage/emulated/0
würden, würde sie natürlich in /storage/sdcard0
erscheinen, da beide auf denselben Ort zeigen. Oh, ich verstehe, ich hätte das explizit schreiben sollen – das ist das Problem, wenn Sie jeden Tag mit einer Sache arbeiten, ist es klar, dass ein Symlink das tut :) OK, werde das zu meiner Antwort hinzufügen./storage/emulated/*
auf, /storage/sdcard0
sondern umgekehrt. Wenn also "user0" eingeloggt ist, sdcard0
zeigt es auf, emulated/0
aber wenn "user1" eingeloggt ist, zeigt es auf emulated/1
- dh "the sdcard" zeigt immer auf den emulierten Speicherbereich, der dem eingeloggten Benutzer gewidmet ist - der natürlich andere Inhalte für enthält jeder Benutzer.Herr Expensive Toys sagte: Ich bin erstaunt, dass dieses Problem immer noch auftritt, da es bereits bei Honeycomb auftrat.
Das /storage/emulated/0/DCIM/Camera
ist also derselbe Ordner wie Ihr normaler DCIM/Kamera-Ordner. Es ist nur ein Symlink. Die Dateien befinden sich also tatsächlich am richtigen Ort, Sie haben nur eine App, die fehlerhafte Daten in die MediaStore-Datenbank einfügt.
Wenn Sie von Ihrem PC aus auf Dateien zugreifen, listen Sie eigentlich die MediaStorage-Datenbank für Dateien auf. Es zieht keine traditionellen Verzeichnislisten. Was Sie sehen, basiert also auf dem Inhalt dieser Datenbank und den Pfadeinträgen in der Datenbank.
Dateien in der Datenbank, die auf emulierte Verzeichnisse verweisen, werden nicht angezeigt, da davon ausgegangen wird, dass es sich um Duplikate handelt, da es sich um dasselbe physische Verzeichnis wie bei Ihrer normalen DCIM/Kamera handelt. Was vor sich geht, ist, dass einige schlecht geschriebene Apps von Drittanbietern Einträge mit dem /storage/emulated/0/DCIM/Camera
Pfad in die Datenbank einfügen, anstatt mit dem richtigen Root-Pfad zu DCIM/Kamera. Das bedeutet, dass der MTP-Dienst sie nicht sehen kann, wenn Sie mit Ihrem PC verbunden sind.
Normalerweise lässt sich das Problem am einfachsten beheben, indem Sie einfach die MediaStore-Datenbanken löschen, um die fehlerhaften Einträge aus der MediaStore-Datenbank zu entfernen, und das System die Dateien neu indizieren und mit den richtigen Pfaden in die Datenbank einfügen lassen.
Einstellungen->Apps Drücken Sie das 3-Punkt-Menü oben rechts und wählen Sie System anzeigen. Medienspeicher suchen, auswählen, Speicher auswählen, dann Daten löschen. Externen Speicher suchen, auswählen, Speicher auswählen, dann Daten löschen Telefon ausschalten, Telefon wieder einschalten, Warten Sie, bis der Indexdienst die Daten neu erstellt hat.
Wenn Sie fertig sind, sollten die Dateien mit dem richtigen Verzeichnisbaum angezeigt werden und vom PC aus sichtbar sein. Abhängig von der Menge der Dateien auf dem Telefon kann es 10 bis 20 Minuten dauern, die Mediendatenbank neu aufzubauen, da der Dienst die Telefonverzeichnisse durchsucht, Metadaten erhält, Miniaturansichten erstellt usw.
Izzy
/storage/emulated/0
es spezifisch für einen bestimmten Benutzer ist – und nicht nur das „erste emulierte Speichergerät“, wie/storage/sdcard0
es die erste (interne) SD-Karte ist?Betäubungsmittel
Izzy
0
vs./0
ist zu leicht zu verwechseln). Bitte überprüfen Sie mit: Warum wurde /sdcard/ mit 4.2 zu /sdcard/0/? und verwirrt durch die vielen Speicherorte der virtuellen /sdcard/ . Ich habe selbst nie mit Multi-User gespielt, also habe ich hier nicht tiefer gegraben. Wenn Sie mehrere Benutzer auf Ihrem Gerät haben, können Sie das überprüfen? Ich wäre neugierig, aber ich vermute, dass das/storage/sdcard0
immer auf das Verzeichnis des entsprechenden Benutzers verweist, wie/storage/emulated/legacy/
es auch der Fall ist.Betäubungsmittel
Dan Brown
Dan Brown
Zauberbuch
Dan Brown
Izzy
Zauberbuch
Dan Brown
Izzy
mount
Befehl prüfen. Überraschung, erwarte ich: Es gibt ein überlagertes FUSE-Dateisystem (so wird die interne SD-Karte vom anderen internen Speicher getrennt, während sie sich auf derselben Partition befindet). Was ich jetzt vermute, ist, dass dieses FUSE-System möglicherweise für die Trennung von Benutzerdaten sorgt und die "SD-Karte" an der richtigen Stelle abbildet.Dan Brown
Izzy
Irfan Latif