Bonjour,
totalement newbie en android et java et afin de prendre de bonnes (ou de ne pas prendre de trop mauvaises) habitudes, pouvez-vous me dire si ce très petit bout de code est intelligible et codé dans les "standards" ?
C'est pour lister les sms d'un téléphone, en vue de les intégrer dans une base de données sur internet.
Et accessoirement m'éclairer sur les points suivants, s'il vous plaît ?
- Différence entre final et public ?
- Pour ce que cela fait, le code est-il correct ? Peut-il être optimisé ? Doit-il être différement structuré
- Ne faut-il pas fermer le curseur ?
- avantages/inconvénients de créer des objets globaux ou locaux ? toast vs toast1 ?
- utilité de gérer les exceptions comme cela (méthode par méthode) ? N'existe-t'il pas une gestion au niveau supérieur ?
- SimpleCursorAdapter semble désormais ne plus être la meilleure méthode. Il est préconisé d'utiliser LoaderManager et CursorLoader. Faut-il toujours suivre aveuglément ces conseils ?
- Comment puis-je déclarer globalement un objet toast ?
- public Toast toast=Toast.makeText(context, "blablabla", Toast.LENGTH_LONG); plante l'aappli
- final Toast toast=Toast.makeText(context, "blablabla", Toast.LENGTH_LONG); ne peut pas être modifié !!
- Je voudrais mettre les valeurs du tableau valeurDesColonnes dans les textview R.id.lib_sms_01,R.id.lib_sms_02 etc. Est-ce possible ?
- Si demain le nombre de colonnes du curseur change (augmente), je vais être embêté !!! Est-il possible de dynamiser le code pour anticiper cela ? Est-il préférable d'utiliser une table par exemple, qui aura un nombre de lignes variable ?
- Est-il possible de récupérer dynamiquement le type des colonnes du curseur, pour par exemple formater correctement la date (date/heure) du sms ?
et
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64 import android.app.ListActivity; import android.content.Context; import android.database.Cursor; import android.net.Uri; import android.os.Bundle; import android.widget.ListAdapter; import android.widget.SimpleCursorAdapter; import android.widget.Toast; public class ListeSms extends ListActivity { final Context context= ListeSms.this; public enum SousBoites { sent, inbox, draft, undelivered, failed, all }; //public Toast toast=Toast.makeText(context, "blablabla", Toast.LENGTH_LONG); public void onCreate(Bundle savedInstanceState) { try { super.onCreate(savedInstanceState); //setContentView(R.layout.listessms01); // surtout pas décommenter cette ligne : il ne faut pas initialiser la fenêtre lectureSMSBoitesSMS(SousBoites.all); } catch (Exception e) { // toast=Toast.makeText(context, "Erreur !!!!"+ e, Toast.LENGTH_LONG); // toast.show(); Toast toast1=Toast.makeText(context, "Erreur !"+ e, Toast.LENGTH_LONG); toast1.show(); } } private void lectureSMSBoitesSMS(SousBoites genre) { String aParser=""; try { switch (genre) { case sent:aParser="content://sms/sent";break; case inbox:aParser="content://sms/inbox";break; case draft:aParser="content://sms/draft";break; case undelivered:aParser="content://sms/undelivered";break; case failed:aParser="content://sms/failed";break; case all:aParser="content://sms";break; default : Toast toast=Toast.makeText(context, "Erreur de programmation", Toast.LENGTH_LONG); toast.show(); } Uri uriBoiteReceptionSMS = Uri.parse(aParser); Cursor curseur = getContentResolver().query(uriBoiteReceptionSMS, null, null, null, null); startManagingCursor(curseur); // String[] valeurDesColonnes = new String[] { "_id","thread_id","address","person","date","protocol","read","status","type","reply_path_present","subject","body","service_center","locked","error_code","seen" }; String[] valeurDesColonnes = curseur.getColumnNames(); int[] vuesQuiAffichentLesValeurs = new int[] { R.id.sms_01,R.id.sms_02,R.id.sms_03,R.id.sms_04,R.id.sms_05,R.id.sms_06,R.id.sms_07,R.id.sms_08,R.id.sms_09,R.id.sms_10,R.id.sms_11,R.id.sms_12,R.id.sms_13}; ListAdapter adapter = new SimpleCursorAdapter(this, R.layout.listessms01, curseur, valeurDesColonnes, vuesQuiAffichentLesValeurs); // // String[] valeurDesColonnes = curseur.getColumnNames(); // int[] vuesQuiAffichentLesNoms = new int[] { R.id.lib_sms_01,R.id.lib_sms_02,R.id.lib_sms_03,R.id.lib_sms_04,R.id.lib_sms_05,R.id.lib_sms_06,R.id.lib_sms_07,R.id.lib_sms_08,R.id.lib_sms_09,R.id.lib_sms_10,R.id.lib_sms_11,R.id.lib_sms_12,R.id.lib_sms_13}; // ListAdapter adapter = new SimpleCursorAdapter(this, R.layout.listessms01, curseur, valeurDesColonnes, vuesQuiAffichentLesNoms); setListAdapter(adapter); } catch (Exception e) { Toast toast1=Toast.makeText(context, "Erreur !"+ e, Toast.LENGTH_LONG); toast1.show(); } }
D'avance, merci beaucoup pour vos commentaires et éclaircissements...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:weightSum="1" android:layout_height="wrap_content"> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="fill_parent" android:weightSum="1" android:layout_height="wrap_content"> <TextView android:id="@+id/lib_sms_01" android:layout_height="wrap_content" android:layout_width="50dp"></TextView> <TextView android:id="@+id/sms_01" android:layout_height="wrap_content" android:layout_width="150dp"></TextView> </LinearLayout> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="fill_parent" android:weightSum="1" android:layout_height="wrap_content"> <TextView android:id="@+id/lib_sms_02" android:layout_height="wrap_content" android:layout_width="50dp"></TextView> <TextView android:id="@+id/sms_02" android:layout_height="wrap_content" android:layout_width="150dp"></TextView> </LinearLayout> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="fill_parent" android:weightSum="1" android:layout_height="wrap_content"> <TextView android:id="@+id/lib_sms_03" android:layout_height="wrap_content" android:layout_width="50dp"></TextView> <TextView android:id="@+id/sms_03" android:layout_height="wrap_content" android:layout_width="150dp"></TextView> </LinearLayout> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="fill_parent" android:weightSum="1" android:layout_height="wrap_content"> <TextView android:id="@+id/lib_sms_04" android:layout_height="wrap_content" android:layout_width="50dp"></TextView> <TextView android:id="@+id/sms_04" android:layout_height="wrap_content" android:layout_width="150dp"></TextView> </LinearLayout> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="fill_parent" android:weightSum="1" android:layout_height="wrap_content"> <TextView android:id="@+id/lib_sms_05" android:layout_height="wrap_content" android:layout_width="50dp"></TextView> <TextView android:id="@+id/sms_05" android:layout_height="wrap_content" android:layout_width="150dp"></TextView> </LinearLayout> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="fill_parent" android:weightSum="1" android:layout_height="wrap_content"> <TextView android:id="@+id/lib_sms_06" android:layout_height="wrap_content" android:layout_width="50dp"></TextView> <TextView android:id="@+id/sms_06" android:layout_height="wrap_content" android:layout_width="150dp"></TextView> </LinearLayout> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="fill_parent" android:weightSum="1" android:layout_height="wrap_content"> <TextView android:id="@+id/lib_sms_07" android:layout_height="wrap_content" android:layout_width="50dp"></TextView> <TextView android:id="@+id/sms_07" android:layout_height="wrap_content" android:layout_width="150dp"></TextView> </LinearLayout> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="fill_parent" android:weightSum="1" android:layout_height="wrap_content"> <TextView android:id="@+id/lib_sms_08" android:layout_height="wrap_content" android:layout_width="50dp"></TextView> <TextView android:id="@+id/sms_08" android:layout_height="wrap_content" android:layout_width="150dp"></TextView> </LinearLayout> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="fill_parent" android:weightSum="1" android:layout_height="wrap_content"> <TextView android:id="@+id/lib_sms_09" android:layout_height="wrap_content" android:layout_width="50dp"></TextView> <TextView android:id="@+id/sms_09" android:layout_height="wrap_content" android:layout_width="150dp"></TextView> </LinearLayout> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="fill_parent" android:weightSum="1" android:layout_height="wrap_content"> <TextView android:id="@+id/lib_sms_10" android:layout_height="wrap_content" android:layout_width="50dp"></TextView> <TextView android:id="@+id/sms_10" android:layout_height="wrap_content" android:layout_width="150dp"></TextView> </LinearLayout> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="fill_parent" android:weightSum="1" android:layout_height="wrap_content"> <TextView android:id="@+id/lib_sms_11" android:layout_height="wrap_content" android:layout_width="50dp"></TextView> <TextView android:id="@+id/sms_11" android:layout_height="wrap_content" android:layout_width="150dp"></TextView> </LinearLayout> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="fill_parent" android:weightSum="1" android:layout_height="wrap_content"> <TextView android:id="@+id/lib_sms_12" android:layout_height="wrap_content" android:layout_width="50dp"></TextView> <TextView android:id="@+id/sms_12" android:layout_height="wrap_content" android:layout_width="150dp"></TextView> </LinearLayout> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="fill_parent" android:weightSum="1" android:layout_height="wrap_content"> <TextView android:id="@+id/lib_sms_13" android:layout_height="wrap_content" android:layout_width="50dp"></TextView> <TextView android:id="@+id/sms_13" android:layout_height="wrap_content" android:layout_width="150dp"></TextView> </LinearLayout> </LinearLayout>
Partager