Comment peut-on tirer de l' (privé) des données de sa propre application Android?

De tenter de tirer un seul fichier à l'aide de

adb pull /data/data/com.corp.appName/files/myFile.txt myFile.txt

échoue avec

failed to copy '/data/data/com.corp.appName/files/myFile.txt myFile.txt' to 'myFile.txt': Permission denied

malgré que le débogage USB est activé sur le périphérique.

Nous pouvons contourner le problème par le biais de l'archaïque route

adb shell
run-as com.corp.appName
cat files/myFile.txt > myFile.txt

mais c'est lourd pour plus d'un fichier.

Comment puis-je tirer le répertoire /data/data/com.corp.appName/les fichiers de mon MacBook?

Faisant ce soit directement ou par l'intermédiaire d'un transit dans " /storage/sdcard0/myDir (d'où je peux continuer avec Transfert de Fichiers Android) c'est bien.

De Commentaire Supplémentaire

Il se peut que juste courir

adb backup  -f myFiles com.corp.appName

va générer les fichiers, je suis à la recherche d'. Dans ce cas, je suis à la recherche d'un moyen de décompresser/décompressez l'résultant de sauvegarde!

  • À moins que l'appareil est enraciné, vous ne pouvez tout simplement pas le faire.
  • J'espère que vous avez tort, mais juste au cas où, s'il vous plaît passer votre commentaire être une réponse. Pourriez-vous ajouter une sorte de référence à sauvegarder pourquoi tu crois? Je voudrais sauver tous les fichiers inutiles qui le buggy versions de mon programme ont enregistré à assurez-vous en bas de la route que mon plus proche de déverrouillage programme permettra de traiter tous les types de fichiers d'entrée.
  • Je vais citer l'expérience (+de 20 appareils), et bien sûr developer.android.com/guide/topics/data/... vous dit que la mémoire de Stockage Interne est privé de l'application. Si vous êtes en train de recueillir des données de débogage, de l'écrire pour le stockage externe ou faire WORLD_READABLE.
  • Est-ce à dire que l'on pouvait chmod du répertoire de monde: - x au monde:r-x assez longtemps pour être en mesure de récupérer les fichiers?
  • Je pense qu'il serait utile de savoir si vous essayez de copier des fichiers à partir d'une Application dont vous êtes responsable, ou si c'est quelqu'un elses App. Si c'est votre Application, vous pouvez simplement écrire les données nécessaires à un support de stockage externe. Si c'est quelqu'un elses Application, vous allez exiger d'une interface quelconque (comme un ContentProvider) ou de la racine.
  • C'est en effet l'une de mes applications. Il est encore à mi-chemin par le biais de développement. Pour écrire, j'ai ouvert les fichiers à l'aide de 'contexte.getcontexteapplication().openFileOutput( myFile, le Contexte.MODE_PRIVATE )'. Mais maintenant je peux voir que c'est une mauvaise idée, et peut-être c'est pourquoi de nombreuses applications de stocker leurs fichiers à la racine du système de fichiers plutôt que dans le répertoire officiellement sanctionnée par Android.
  • Ce que je voulais dire, c'est de ne pas utiliser MODE_PRIVATE, mais plutôt MODE_WORLD_READABLE, au cours du développement. Ou mieux encore, utiliser un stockage externe au cours du développement.
  • Nonobstant le fait que c'est l'une de mes applications, n'est-il pas légitime pour que les utilisateurs soient en mesure de conserver une copie des données d'une application stockée sur leurs appareils? Après tout, les données vraisemblablement appartiennent au propriétaire de l'appareil, pas l'application de l'auteur.
  • Le problème est de savoir comment vous différencier entre le propriétaire, et une Application malveillante/programme, en essayant de faire l'interface avec vos Applications de données privées. (ce qui pourrait avoir un les utilisateurs de données personnelles)

InformationsquelleAutor Calaf | 2013-03-21