Как я могу получить доступ к нескольким пользовательским пространствам из ADB?

9

Я использую KitKat на планшете с двумя пользователями: основным (владельцем) и дополнительным. Мне нужно получить доступ к файлу, созданному приложением вторичного пользователя.

Когда я подключаю планшет к своему рабочему столу (Ubuntu) через USB, он монтируется как медиаустройство (MTP) и показывает мне базовую папку для текущего активного пользователя. [1] Но нужный мне файл находится в другом месте системы, поэтому я подключился через командную строку adb shellвместо этого.

Подключение через ADB дает мне доступ к более глубоким папкам (и /mnt /procт. Д.), Но я не смог найти файл, в котором ожидал [2], поэтому я /sdcardвсе равно заглянул в него . К моему удивлению, я распознал содержимое как базовую папку учетной записи владельца, хотя текущий активный пользователь является вторым пользователем.

Это также говорит мне, что, если мне когда-нибудь понадобится, я не смогу получить доступ к базовой папке для вторичного пользователя через adb shell.

Как получить доступ к планшету от adb shellимени дополнительного пользователя, а не основного пользователя (владельца)? (Возможность доступа к файлам вторичного пользователя достаточно хороша.)

[1] Я не уверен, что правильный термин здесь. Я имею в виду папку с Android, Download and Pictures, специфичную для конкретного пользователя.

[2] FWIW Я экспортирую файл OPML из Flym . Flym сообщает, что экспорт OPML генерируется в, /storage/emulated/10/Flym_123456789.opmlно я могу только добраться до /storage/emulated- нет названной подпапки 10, только legacyтакой же, как /sdcard(основная папка первичного / владельца, а не базовая папка вторичного пользователя).

david.libremone
источник
Для тех, кто попадает в этот пост с такой же или похожей проблемой, см. Как я могу получить доступ к эмулированной SD-карте для другого пользователя на root-нексусе 10
Firelord

Ответы:

3

В legacy/местах всегда указывает на данные текущего активного пользователя. Позвольте мне сначала указать на несколько связанных вопросов / ответов, явно связанных с этими проблемами многопользовательского хранения для некоторой предыстории:

Итак, чтобы найти файлы вторичного пользователя:

  • перечислить подкаталоги /data/mediaи/storage/emulated
  • ограничить поиск в подкаталогах, имена которых просто "цифры"
  • что 0кандидаты принадлежат владельцу, более высокие числа вторичных потребителей
  • Внешнее хранилище - это нечто иное: /sdcard/0указывает на внутреннюю SD-карту, а /sdcard/1должно быть внешним (если доступно). Аналогично для хранилища, прикрепленного через OTG

Помните, что вам может потребоваться быть пользователем root для доступа к данным пользователя, отличным от того, который в данный момент активен на устройстве.

Также см:

Иззи
источник
это помогает мне понять, что я должен увидеть, но на самом деле я вижу только / storage / emulated / legacy (без числовых папок), и у меня нет доступа к / data / media (разрешение отклонено) - я собираюсь попробовать перезапуск и никогда не вход в систему как владелец
david.libremone
Как я уже писал: «вам может потребоваться быть пользователем root» (что объясняет «отказано в разрешении»). Ваше устройство рутировано?
Иззи
это не так (немного страшно, кажется, что нет надежного процесса?)
david.libremone
но я могу подтвердить это: перезагрузите устройство, не входите в систему как владелец, войдите в систему как дополнительный, подключите usb, доступ через MTP: можно увидеть вторичную папку пользователя, доступ через оболочку adb: можно увидеть / storage / emulated / legacy как владелец (не вторичный пользователь) - другие папки не отображаются в / storage /
emulated
При входе в систему с дополнительным пользователем, emulated/должны указывать на данные дополнительного пользователя. Нет способа получить доступ ко всем без рута. И правильно, нет официального процесса рутирования вашего устройства; Возможно, вы захотите проверить нашу рутирующую tag-wiki и рутирующий индекс, чтобы проверить генералы и ваше устройство. Если нет в списке, не стесняйтесь задавать новый вопрос для этого.
Иззи