Dans ce tuto je vais faire une application qui liste les sms reçus par le téléphone. Je vais pour cela utiliser le fournisseur de contenu (provider) sms. Certaines applications d’android peuvent se comporter comme des fournisseurs de contenu et pour les utiliser il faut connaitre leur URI.
Dans mon application je vais utiliser content://sms
pour créer un objet de type uri
Uri LeSmsUri = Uri.parse("content://sms");
Pour lire les informations de notre fournisseur de contenu j’utilise l’objet Cursor
private Cursor objCursor = null;
objCursor= managedQuery(LeSmsUri ,
null,
null,
null,
null);
Ensuite avec les méthodes moveToFirst() et moveToNext() je lis ligne par ligne le contenu mes sms, j’affiche dans une listview le numéro de téléphone (-) le message;
objCursor= managedQuery(LeSmsUri,
null,
null,
null,
null);
list = new ArrayList<String>(); //je cree ma list view pour affichage lire ce tuto
if (objCursor.moveToFirst()) {
do {
String sms = objCursor.getString(objCursor.getColumnIndex("address")) +
" - " + objCursor.getString(objCursor.getColumnIndex("body"));
list.add(sms);
} while (objCursor.moveToNext());
}
code complet
public class ListeSms extends ListActivity {
private Cursor objCursor= null;
private List<String> list = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//SMS URI
Uri LeSmsUri = Uri.parse("content://sms");
try {
//Query to the contentProvider
objCursor= managedQuery(LeSmsUri ,
null,
null,
null,
null);
list = new ArrayList<String>(); //je cree ma list view pour affichage lire ce tuto
if (objCursor.moveToFirst()) {
do {
String sms = objCursor.getString(objCursor.getColumnIndex("address")) +
" - " + objCursor.getString(objCursor.getColumnIndex("body"));
list.add(sms);
} while (objCursor.moveToNext());
}
}
catch (Exception e) {
Log.e("SMS", "Access list", e);
}
setListAdapter(
new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, android.R.id.text1, list));
}
}