2010-12-07 7 views
3

Je veux trouver un SMS spécifique qui contient un mot spécifique et répond automatiquement.Programmation SMS Android

Je l'ai trouvé un moyen de répondre à la SMS, mais je ne peux toujours pas travailler sur la recherche du SMS ...

Répondre

0

Il y a un fournisseur de contenu non documentée pour les SMS: "content: // sms/boîte de réception". Mais ce n'est pas officiel et peut changer. Il n'y a pas de moyen approprié d'accès sms.

2

Il est vrai que ce n'est pas documenté, mais les gens ont utilisé cela pendant des années et si une mise à jour devait changer la façon dont nous accédons à la base de données SMS, cela affecterait des centaines d'applications utilisateurs. Je doute donc que bientôt ils changeraient cela. De toute façon, commencez par créer un objet curseur dans la base de données SMS et exécutez simplement une requête sans condition dans la clause where. Ensuite, parcourez simplement la base de données en extrayant les valeurs dont vous avez besoin. Quelqu'un était également assez gentil pour poster les différents noms de colonne dans la base de données. Les voici: How many database columns associated with a SMS in android?

Vous trouverez ci-dessous un extrait de code pour obtenir les SMS de la base de données.

Cursor messages; 
    Columns message = ColumnsFactory.messages(); //points to structutre 
    messages = getContentResolver().query(Uri.parse("content://sms/"), 
      null, null, null, null); 



    while (messages.moveToNext()) { 
    //do stuff here. 
1

Dans votre récepteur de diffusion de SMS entrants, vérifiez le corps du SMS. Si le corps SMS contient ce mot particulier, envoyez une réponse à ce numéro. De la même manière, vous pouvez également vérifier les numéros entrants.

Exemple pour vérifier nombre particulier:

if (smsBody.contentEquals("word to match")) { 
    // create reply 
}