20 votes

Android Lire les SMS récents en ligne de commande

J'ai récemment cassé l'écran de mon Android. (Encore)

C'est un T-Mobile G2

Essayer de suivre ma vie trépidante liée à la technologie est déjà assez difficile sans perdre le lien avec tout le monde.

J'ai enraciné le téléphone et le débogage USB est déjà activé.

Est-ce que quelqu'un sait comment je pourrais vérifier mes messages SMS récents à partir du shell adb afin que je puisse continuer à travailler pendant que j'économise pour avoir un nouveau téléphone ou un écran de remplacement.

Merci à tous ceux qui ont des informations à ce sujet.

EDITAR

Réponse à elderathis

C:\android-sdk\platform-tools>adb shell
$ cd /data/data/com.android.providers.telephony/databases
cd /data/data/com.android.providers.telephony/databases
$ sqlite3 mmssms.db
sqlite3 mmssms.db
sqlite3: permission denied
$

Impossible de donner un chmod au fichier. Savez-vous vraiment où il se trouve ?

$ chmod +x sqlite3
chmod +x sqlite3
Bad mode
$

su ne me laisse que les commandes de base

$ su
su
# cd /data/data/com.android.providers.telephony/databases
cd /data/data/com.android.providers.telephony/databases
# sqlite3 mmssms.db
sqlite3 mmssms.db
sqlite3: not found
#

Corrigé

sqlite n'a pas été installé

C:\android-sdk\platform-tools>adb shell
$ cd /data/data/com.android.providers.telephony/databases
cd /data/data/com.android.providers.telephony/databases
$ sqlite3 mmssms.db
sqlite3 mmssms.db
SQLite version 3.6.22
Enter ".help" for instructions
sqlite>

De plus, pour accéder à la base de données, je devais être Root.

C:\android-sdk\platform-tools>adb shell
$ su
# cd /data/data/com.android.providers.telephony/databases
cd /data/data/com.android.providers.telephony/databases
# sqlite3 mmssms.db
sqlite3 mmssms.db
SQLite version 3.6.22
Enter ".help" for instructions
sqlite>

Merci beaucoup eldarerathis

Ce lien m'a aidé

0 votes

On dirait que vous n'avez pas le sqlite3 binaire sur votre appareil. Le premier lien de ma réponse contient des instructions pour vous aider à l'installer sur votre appareil. /system/bin . Voici un lien au binaire lui-même.

0 votes

Je sais que cela date de 10 ans, mais si vous cherchez une réponse plus propre, regardez ici : Android.stackexchange.com/questions/241439/ . Il faudra peut-être modifier légèrement le script pour obtenir les nouveaux messages plutôt que les messages basés sur le nom de la conversation.

10voto

David Negron Points 971

C'est vraiment moche, mais vous pouvez les lire depuis la ligne de commande en utilisant sqlite3 pour visualiser les entrées de la base de données. Vous aurez probablement besoin de déterrer un binaire pour cela, à moins que vous n'ayez installé une ROM personnalisée. Il y a des instructions pour installer ce binaire dans la section cette question de Stack Overflow und SuperOneClick est fourni avec le logiciel (une copie du binaire lui-même peut être trouvé aquí ).

Si vous avez besoin d'installer le binaire, utilisez mount (sans paramètres) pour déterminer où votre /system La partition est physiquement située (la mienne est /dev/block/mtdblock3 par exemple). Suivez ensuite les instructions du premier lien ci-dessus, et commencez par le remonter en mode lecture/écriture avec la commande :

mount -o rw,remount /your/system/partition /system

Une fois que vous avez sqlite3 vous voudrez ouvrir un adb shell , passer en Root avec su et faites ensuite ce qui suit :

# cd /data/data
cd /data/data
# cd com.android.providers.telephony/databases ***
cd com.android.providers.telephony/databases
# sqlite3 mmssms.db
sqlite3 mmssms.db
SQLite version 3.7.2
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> SELECT * FROM sms WHERE read=0;

Cela fera apparaître toutes les lignes du tableau pour tous les messages non lus. Les colonnes du tableau sont définies de la manière suivante (afin que vous puissiez couper les lignes du tableau) SELECT ):

CREATE TABLE sms (_id INTEGER PRIMARY KEY,thread_id INTEGER,address TEXT,
  person INTEGER,date INTEGER,protocol INTEGER,read INTEGER DEFAULT 0,
  status INTEGER DEFAULT -1,type INTEGER,reply_path_present INTEGER,
  subject TEXT,body TEXT,service_center TEXT,locked INTEGER DEFAULT 0,
  error_code INTEGER DEFAULT 0,seen INTEGER DEFAULT 0);

***Note pour la ligne marquée : cela peut être légèrement différent en fonction de votre appareil et de la version d'Android, c'est pourquoi j'ai inclus cette information. cd commandement séparément. I pensez à c'était le cas com.android.providers/telephony/databases sur des appareils plus anciens mais je ne m'en souviens plus très bien. Utilisez ls pour chercher le bon cheminement ici.


Sinon, vous pouvez essayer de copier le fichier .db sur votre carte SD (ou de le tirer avec la fonction adb pull ), puis de le lire sur votre ordinateur avec sqlite.

0 votes

J'ai essayé ceci et il semble que sqlite3 ait une permission refusée.

0 votes

Il est indiqué que le mode est mauvais

0 votes

@Jason : Vous devez être Root pour lire ce répertoire (exécutez simplement su au préalable).

3voto

user23548 Points 139

Grâce à la belle astuce d'eldarerathis, je fais juste

DB=/data/data/com.android.providers.telephony/databases/mmssms.db
echo 'select address,body from sms;' | ./sqlite3 -csv $DB 

pour lire mes SMS à partir de mon invite Root.

Comme je n'avais pas sqlite3, j'ai d'abord dû télécharger avec

curl http://dl.dropbox.com/u/16958605/sqlite3
chmod a+x sqlite3

Ou voir Installation de SQLite3 sur Google Play (si vous ne faites pas confiance à la source Dropbox).

2 votes

Une URL dl.dropbox.com pour ce binaire ne semble pas sûre. Pouvez-vous fournir une source officielle ?

1voto

Milner Points 533

Si vous êtes intéressé par d'autres détails que l'expéditeur et le message (comme dans le cas de cette réponse ), je viens de trouver un bel article sur le sujet : Lire les SMS directement depuis la base de données Sqlite dans Android . Voir aussi : La structure de données du message .

Mieux encore, jetez un coup d'œil à Github : Android-SMS est un outil écrit en Python qui récupère tous les messages SMS et les organise en Conversations SMS avec des statistiques fournies. Il récupère également tous les messages MMS et les organise en Conversations MMS, avec les fichiers correspondants. Je ne l'ai pas (encore) essayé moi-même (je viens de le découvrir il y a quelques minutes), mais ça a l'air plutôt chouette.

Bien sûr, ce programme ne fonctionne pas directement sur l'appareil Android, mais plutôt sur votre ordinateur (où il nécessite Python 2.7 avec SQLite3 pour Python). Vous devrez donc d'abord extraire la base de données de l'appareil. Toutes les étapes nécessaires sont décrites sur la page principale Github du projet.

0voto

Fr0sT Points 101

Une autre solution que j'ai inventée utilise une application sur le téléphone qui réagit aux SMS et les enregistre dans un fichier que vous pouvez lire avec ADB.

  • Installer n'importe quelle application de type Tasker, je l'ai fait avec E-Robot
  • Créer une nouvelle commande
  • Ajouter un événement Contact=>SMS
  • Ajouter une action Memory=>Write file Vous pouvez y enregistrer les SMS dans un nouveau fichier à chaque fois ou dans le même fichier avec un séparateur. Quoi qu'il en soit, sauvegardez-le dans /sdcard ou tout autre chemin accessible via ADB.
  • Surveillez ce chemin avec ADB et lisez le contenu du SMS.

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X