Como posso acessar vários espaços de usuário do adb?

9

Estou executando o KitKat em um tablet com dois usuários: primário (proprietário) e secundário. Preciso acessar um arquivo gerado por um aplicativo do usuário secundário.

Quando conecto o tablet à minha área de trabalho (Ubuntu) via USB, ele é montado como um dispositivo de mídia (MTP) e me mostra a pasta base do usuário ativo no momento. [1] Mas o arquivo que eu quero está em outro lugar no sistema, então eu conectei a partir da linha de comando via adb shell.

A conexão via ADB me dá acesso a pastas mais profundas ( /mnt /procetc), mas não consegui encontrar o arquivo onde esperava [2], então procurei de /sdcardqualquer maneira. Para minha surpresa, reconheci o conteúdo como a pasta base da conta do proprietário, mesmo que o usuário ativo no momento seja o usuário secundário.

Isso também me diz que, se precisar, não poderei acessar a pasta base para o usuário secundário via adb shell.

Como posso acessar o tablet adb shellcomo usuário secundário, e não como usuário principal (proprietário)? (Ser capaz de acessar os arquivos do usuário secundário é bom o suficiente.)

[1] Não sei qual é o termo adequado aqui. Quero dizer a pasta com Android, Download e Imagens, específica para um usuário em particular.

[2] FWIW Estou exportando um arquivo OPML da Flym . Flym relata que a exportação OPML é gerada em, /storage/emulated/10/Flym_123456789.opmlmas eu só posso chegar até /storage/emulated- não há subpasta chamada 10, apenas legacya mesma que /sdcard(a pasta base principal / proprietário, não a pasta base do usuário secundário).

david.libremone
fonte
Para aqueles que terminam nesta postagem com um problema igual ou semelhante, consulte Como acessar o sdcard emulado para outro usuário em um nexo 10 enraizado
Firelord

Respostas:

3

Os legacy/locais estão sempre apontando para os dados do usuário ativo no momento. Deixe-me primeiro apontar para algumas perguntas / respostas relacionadas que lidam explicitamente com os problemas de armazenamento multiusuário para alguns antecedentes:

Então, para encontrar os arquivos do usuário secundário:

  • listar os subdiretórios de /data/mediae/storage/emulated
  • restrinja sua pesquisa a subdiretórios cujos nomes são simplesmente "números"
  • os 0candidatos pertencem ao proprietário, números mais altos são de usuários secundários
  • armazenamento externo é algo diferente: /sdcard/0aponta para o sdcard interno, enquanto /sdcard/1deve ser o externo (se disponível). Da mesma forma para armazenamento conectado via OTG

Lembre-se de que você pode precisar ser root para acessar dados de um usuário que não seja o atualmente ativo no dispositivo.

Veja também:

Izzy
fonte
isso me ajuda a entender o que devo ver, mas o que realmente vejo é apenas / storage / emulated / legacy (sem pastas numéricas) e não tenho acesso a / data / media (permissão negada) - vou tentar reiniciando e nunca login como proprietário
david.libremone
Como escrevi: "você pode precisar ser root" (o que explica a "permissão negada"). O seu dispositivo está enraizado?
Izzy
ele não é (um pouco com medo de, parece que não há nenhum processo de confiança?)
david.libremone
mas posso confirmar isso: reinicialize o dispositivo, não faça login como proprietário, faça o login como secundário, conecte o usb, acesse via MTP: veja a pasta do usuário secundário, acesse via adb shell: veja / storage / emulated / legacy as usuário proprietário (não usuário secundário) - nenhuma outra pasta aparece em / storage /
emulated
Quando conectado com o usuário secundário, emulated/deve apontar para os dados do usuário secundário. Não há como acessar tudo sem raiz. E correto, não há processo oficial para fazer root no seu dispositivo; convém verificar nossa tag-wiki e índice de root para procurar por generais e por seu dispositivo. Se não estiver listado, faça uma nova pergunta para isso.
Izzy