web-dev-qa-db-fra.com

Comment copier un fichier en utilisant adb dans le répertoire Android accessible depuis le PC

Si vous attachez Android au PC, vous pouvez parcourir les fichiers et les répertoires. Il est possible d'obtenir ce répertoire en utilisant Environment.getExternalStorage(). Vous pouvez l'utiliser à partir de votre application et créer des fichiers accessibles et dirs. Cela fonctionne très bien.

Sur mes appareils, ce chemin ressemble à /storage/emulated/0 et si j'essaye adb Push dans ce répertoire, j'obtiendrai une erreur d'accès refusé. Est-il possible de copier des fichiers en utilisant adb dans le même dossier que l'explorateur Windows?

D:\...\tools>adb Push ACCOUNTS.DB /storage/emulated/0
failed to copy 'ACCOUNTS.DB' to '/storage/emulated/0': Permission denied
58969 KB/s (606505 bytes in 0.010s)

J'implémente l'importation/exportation automatisée et je souhaite que les fichiers soient accessibles sans adb Shell en cas de problème.

Utilise actuellement variable$EXTERNAL_STORAGE comme solution de contournement, cela fonctionne à la fois pour adb et pour l'application.

Appareil: Asus Fonepad 7, Android 5.0, essayé Genymotion Custom Tablet 6.0 - fonctionne.

18
kemsky

Essayez d'utiliser /sdcard/. Bien qu'il soit fortement déconseillé de le faire dans code. Cela semble être le seul moyen avec adb:

$ adb Push somefile /storage/emulated/0/somefile
[100%] /storage/emulated/0/somefile
adb: error: failed to copy 'somefile' to '/storage/emulated/0/somefile': Read-only file system

$ adb Push somefile /sdcard/somefile
[100%] /sdcard/somefile

Soit dit en passant, sur mon appareil, ils n'ont pas la même valeur: Environment.getExternalStorage() pointe vers /storage/emulated/0/ Tandis que /sdcard Pointe vers /storage/emulated/legacy.

6
bwt

C'est assez simple, le stockage interne n'est pas disponible sur les appareils non rootés. Donc, comme cela a été mentionné dans réponse bwt il vous suffit de pousser vos données vers la carte SD:

adb Push somefile /sdcard/somefile

Avec la récupération de fichiers de votre système de fichiers, vous aurez également quelques problèmes. Mais avec le cas de l'extraction d'une base de données à partir d'une application de débogage - vous aurez juste besoin de modifier l'autorisation de fichier via chmod. Ici, vous avez un lien utile - les gars de XDA sur adb

2
Yurii Tsap