J'essaye ceci avec mon Nexus One. J'ai le SDK Android et ont utilisé la commande adb pull /data/data/com.myapp.android/databases C: \ tire mais tout ce que je reçois est pull: construction de la liste des fichiers ... 0 fichiers tirés. 0 fichiers ignorés. En outre, il semble que peu importe la quantité de données que j'ajoute à l'application Didacticiel NotePad que j'ai installée, la taille des données pour l'application (comme indiqué dans Paramètres) ne dépasse jamais 8 Ko. Comment est-ce possible? Y a-t-il un autre endroit où les bases de données sont stockées? Lorsque j'utilise la vue Explorateur de fichiers (qui fait partie d'ADT) dans Eclipse, je vois qu'il n'y a rien dans/data. Pour ajouter une touche, je n'ai aucune difficulté à extraire d'autres fichiers de l'appareil. C'est juste des bases de données avec lesquelles j'ai des problèmes. Ai-je raté quelque chose? Merci beaucoup.Comment puis-je retirer des bases de données de mon android sur mon bureau?
6
A
Répondre
10
L'accès au stockage interne est impossible à moins que votre téléphone ne soit rooté. Un moyen simple est d'utiliser l'émulateur, et vous pouvez ensuite accéder aux fichiers. Pour obtenir une base de données de l'appareil que j'ai écrit un petit utilitaire et mis dans une interface utilisateur de débogage pour elle:
private void backupDb() throws IOException {
File sd = Environment.getExternalStorageDirectory();
File data = Environment.getDataDirectory();
if (sd.canWrite()) {
String currentDBPath = "/data/com.yourcompany.yourapp/databases/yourapp.db";
String backupDBPath = "/yourapp_logs/yourapp.db";
File currentDB = new File(data, currentDBPath);
File backupDB = new File(sd, backupDBPath);
if (backupDB.exists())
backupDB.delete();
if (currentDB.exists()) {
makeLogsFolder();
copy(currentDB, backupDB);
}
dbFilePath = backupDB.getAbsolutePath();
}
}
private void makeLogsFolder() {
try {
File sdFolder = new File(Environment.getExternalStorageDirectory(), "/yourapp_logs/");
sdFolder.mkdirs();
}
catch (Exception e) {}
}
private void copy(File from, File to) throws FileNotFoundException, IOException {
FileChannel src = null;
FileChannel dst = null;
try {
src = new FileInputStream(from).getChannel();
dst = new FileOutputStream(to).getChannel();
dst.transferFrom(src, 0, src.size());
}
finally {
if (src != null)
src.close();
if (dst != null)
dst.close();
}
}
0
Créer un fichier « pull.bat » dans votre bureau Windows.
Dans le fichier put:
db pull /data/com.APPNAME/databases/DBNAME.sqlite
pause
0
Si vous utilisez MAC ou Linux essayez ce script. Cela ne nécessite pas les permissions root
#!/bin/bash
REQUIRED_ARGS=2
ADB_PATH=/Users/Tadas/Library/sdk/platform-tools/adb
PULL_DIR="~/"
if [ $# -ne $REQUIRED_ARGS ]
then
echo ""
echo "Usage:"
echo "android_db_move.sh [package_name] [db_name]"
echo "eg. android_db_move.sh lt.appcamp.impuls impuls.db"
echo ""
exit 1
fi;
echo""
cmd1="$ADB_PATH -d shell 'run-as $1 cat /data/data/$1/databases/$2 > /sdcard/$2' "
cmd2="$ADB_PATH pull /sdcard/$2 $PULL_DIR"
echo $cmd1
eval $cmd1
if [ $? -eq 0 ]
then
echo ".........OK"
fi;
echo $cmd2
eval $cmd2
if [ $? -eq 0 ]
then
echo ".........OK"
fi;
exit 0
Questions connexes
- 1. sur les bases de données dans android
- 2. bases de données Android SQLite
- 3. Aide - bases de données android
- 4. Dois-je retirer les FK de mon modèle de domaine?
- 5. Comment puis-je désinstaller mon bureau?
- 6. Quel est mon environnement de bureau actuel?
- 7. Comment empaqueter mon application android avec une base de données
- 8. comment installer mon application sur Motorola Android
- 9. Pourquoi l'icône de mon lanceur est-elle plus petite lorsqu'elle est placée sur le bureau Android?
- 10. Android - Retirer les données de la carte SD
- 11. comment lancer picasa de mon application (Android)
- 12. Comment capturer une vidéo de mon bureau avec .NET?
- 13. Primavera ne fonctionne pas sur mon système au bureau
- 14. Comment sauvegarder automatiquement une base de données SQL Server sur l'emplacement de mon FAI à partir de mon propre PC?
- 15. Indexation des bases de données
- 16. Nouvelle ligne Android dans mon EditText
- 17. Android redémarrer mon activité
- 18. Raisons pour lesquelles mon application Android planterait sur mon téléphone de manière cohérente, mais pas sur mon émulateur
- 19. Exportation du fichier de base de données de mon application de mon iPhone de développement vers mon ordinateur
- 20. Débogage sur mon téléphone (Eclipse, Android)
- 21. Inclure un fichier de données avec mon application Android
- 22. Comment utiliser plusieurs Datatables sur mon CrystalReport?
- 23. Verrouillage des bases de données
- 24. Optimisation des bases de données Mysql
- 25. Logiciel de bureau à distance à utiliser dans mon application
- 26. besoin d'un navigateur Web dans mon application de bureau
- 27. Comment nettoyer mon émulateur Android d'applications indésirables?
- 28. Comment générer des données de test pour mon script Python?
- 29. Comment envoyer des données (par exemple une chaîne) de mon activité à un service ... dans Android?
- 30. Comment faire fonctionner deux bases de données SQLite dans Android
Merci d'avoir partagé votre code. Au début, j'ai utilisé l'émulateur, mais je suis passé au développement sur mon téléphone Nexus One Dev parce que c'est beaucoup plus rapide de cette façon. Ce qui est bizarre, c'est que mon Nexus One est enraciné. Quand je démarre, je vois le cadenas déverrouillé en bas de l'écran pendant le chargement d'Android. Cela ne signifie-t-il pas que je devrais être capable d'exécuter des commandes root? –
Vous codez bien, mais mon Eclipse ne reconnaît pas la copie (currentDB, backupDB); instruction. Avez-vous installé une bibliothèque supplémentaire (.jar) pour utiliser la méthode de copie? – Rutger
Hey dhaag23, pourriez-vous s'il vous plaît fournir la mise en œuvre de la méthode de copie? –