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 ?



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();
		}
    }
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
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>
D'avance, merci beaucoup pour vos commentaires et éclaircissements...