I. Introduction▲
Donc pour commencer, créez votre projet Android (pour moi comme à mon habitude j'utilise la version 1.6 d'Android) et nous allons tout de suite créer la mini interface graphique de notre application. Elle se compose simplement de deux boutons. Voici à quoi ressemblera notre application une fois terminée :
II. Code XML▲
Bon je me demande si je dois vous donner le code pour une si simple interface graphique ? Allez pour les plus faignants, il n'y aura qu'un petit copier/coller à faire, voici le code :
<?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
:
layout_height
=
"fill_parent"
android
:
gravity
=
"center"
>
<Button
android
:
id
=
"@+id/CreateNotif"
android
:
layout_width
=
"fill_parent"
android
:
layout_height
=
"wrap_content"
android
:
text
=
"Créer une notification"
/>
<Button
android
:
id
=
"@+id/ClearNotif"
android
:
layout_width
=
"fill_parent"
android
:
layout_height
=
"wrap_content"
android
:
text
=
"Supprimer la notification"
/>
</LinearLayout>
III. Code JAVA▲
Nous allons travailler avec deux Activity. L'Activity principale sera celle contenant nos deux boutons et qui nous permettra de créer ce pour quoi nous sommes ici, c'est-à-dire une notification. Le bouton « Créer une notification » créera donc une notification et le bouton « Supprimer la notification » la supprimera. Bon ça, je pense que vous l'auriez trouvé sans moi… Mais alors, pourquoi avoir besoin d'une autre Activity ? Eh bien tout simplement lorsque l'on cliquera sur notre notification apparaissant dans la liste des notifications, cela nous emmènera vers un nouvel écran de notre application, tout en supprimant automatiquement la notification qui a été créée. Allez fini le blabla voici le code commenté de l'Activity principale :
package
com.tutomobile.android.notification;
import
android.app.Activity;
import
android.app.Notification;
import
android.app.NotificationManager;
import
android.app.PendingIntent;
import
android.content.Context;
import
android.content.Intent;
import
android.os.Bundle;
import
android.view.View;
import
android.view.View.OnClickListener;
import
android.widget.Button;
public
class
Tutoriel16_Android extends
Activity {
// On définit une variable global qui sera
// l'id unique correspondant à notre notification (bon moi j'ai choisi ma date de naissance)
public
static
final
int
ID_NOTIFICATION =
1988
;
/** Called when the activity is first created. */
@Override
public
void
onCreate
(
Bundle savedInstanceState) {
super
.onCreate
(
savedInstanceState);
setContentView
(
R.layout.main);
// On récupère nos deux boutons créés en XML grâce à leur id
Button boutonCreateNotif =
(
Button) findViewById
(
R.id.CreateNotif);
Button boutonClearNotif =
(
Button) findViewById
(
R.id.ClearNotif);
//On applique un écouteur d'évènement à notre bouton "Créer une notification"
boutonCreateNotif.setOnClickListener
(
new
OnClickListener
(
) {
public
void
onClick
(
View v) {
//on lance la méthode createNotify (qui comme son nom l'indique créera la notification)
createNotify
(
);
}
}
);
//On applique un écouteur d'évènement à notre bouton "Supprimer la notification"
boutonClearNotif.setOnClickListener
(
new
OnClickListener
(
) {
public
void
onClick
(
View v) {
//on lance la méthode cancelNotify (qui supprimera la notification de la liste des notifications)
cancelNotify
(
);
}
}
);
}
//Méthode qui crée la notification
private
void
createNotify
(
){
//On crée un "gestionnaire de notification"
NotificationManager notificationManager =
(
NotificationManager)getSystemService
(
Context.NOTIFICATION_SERVICE);
//On crée la notification
//Avec son icône et son texte défilant (optionnel si l'on ne veut pas de texte défilant on met cet argument à null)
Notification notification =
new
Notification
(
R.drawable.icon, "Toc toc, c'est une notification !"
, System.currentTimeMillis
(
));
//Le PendingIntent c'est ce qui va nous permettre d'atteindre notre deuxième Activity
//ActivityNotification sera donc le nom de notre seconde Activity
PendingIntent pendingIntent =
PendingIntent.getActivity
(
this
, 0
, new
Intent
(
this
, ActivityNotification.class
), 0
);
//On définit le titre de la notification
String titreNotification =
"C'est moi la notification !"
;
//On définit le texte qui caractérise la notification
String texteNotification =
"Je suis une belle notification..."
;
//On configure notre notification avec tous les paramètres que l'on vient de créer
notification.setLatestEventInfo
(
this
, titreNotification, texteNotification, pendingIntent);
//On ajoute un style de vibration à notre notification
//L'utilisateur est donc également averti par les vibrations de son téléphone
//Ici les chiffres correspondent à 0sec de pause, 0.2sec de vibration, 0.1sec de pause, 0.2sec de vibration, 0.1sec de pause, 0.2sec de vibration
//Vous pouvez bien entendu modifier ces valeurs à votre convenance
notification.vibrate =
new
long
[] {
0
,200
,100
,200
,100
,200
}
;
//Enfin on ajoute notre notification et son ID à notre gestionnaire de notification
notificationManager.notify
(
ID_NOTIFICATION, notification);
}
//Méthode pour supprimer de la liste de notification la notification que l'on vient de créer
private
void
cancelNotify
(
){
//On crée notre gestionnaire de notification
NotificationManager notificationManager =
(
NotificationManager)getSystemService
(
Context.NOTIFICATION_SERVICE);
//on supprime la notification grâce à son ID
notificationManager.cancel
(
ID_NOTIFICATION);
}
}
Créez ensuite une nouvelle classe Java, qui sera notre seconde Activity. Moi je l'ai appelée ActivityNotification. Le code de cette Activity est très simple, mais tout de même commenté, le voici :
package
com.tutomobile.android.notification;
import
android.app.Activity;
import
android.app.NotificationManager;
import
android.content.Context;
import
android.os.Bundle;
import
android.widget.TextView;
public
class
ActivityNotification extends
Activity {
@Override
public
void
onCreate
(
Bundle savedInstanceState) {
super
.onCreate
(
savedInstanceState);
//On crée un TextView en Java
TextView txt=
new
TextView
(
this
);
txt.setText
(
"Voici à l'Activity qui apparait lorsque l'on clique sur la notification !"
);
//On ajoute notre TextView à la vue
setContentView
(
txt);
//On supprime la notification de la liste de notification comme dans la méthode cancelNotify de l'Activity principale
NotificationManager notificationManager =
(
NotificationManager)getSystemService
(
Context.NOTIFICATION_SERVICE);
notificationManager.cancel
(
Tutoriel16_Android.ID_NOTIFICATION);
}
}
Une fois tout ceci fait il ne reste plus qu'à faire une petite modification dans le fichier AndroidManifest.xml.
IV. AndroidManifest.xml▲
Il n'y a que deux petites choses à rajouter, l'autorisation pour faire vibrer le téléphone, ainsi que la déclaration de la nouvelle Activity que l'on a créée. Il faut donc ajouter ceci entre les balises <application> déjà existantes :
<activity
android
:
name
=
".ActivityNotification"
android
:
label
=
"@string/app_name"
/>
Puis ajouter ceci juste avant la balise fermante </manifest> déjà existante également :
<uses-permission
android
:
name
=
"android.permission.VIBRATE"
/>
Voilà c'est terminé. Normalement si vous lancez votre application vous pourrez cliquer sur le bouton « Créer une notification » vous verrez apparaître la notification dans la barre de notification en même temps que votre téléphone vibrera. Si vous faites glisser la barre de notification vers le bas pour avoir une vue plus détaillée des notifications en cours, lorsque vous cliquerez sur votre notification, la nouvelle Activity va s'afficher et la notification aura disparu. Enfin bon je vous laisse jouer et découvrir par vous-même, ce n'est pas très difficile.
V. Remerciements▲
Je tiens à remercier tout particulièrement MrDuchnokhttp://www.developpez.net/forums/u4372/mrduchnok/ qui a mis ce tutoriel au format Developpez.com.
Merci également à Mahefasoahttp://www.developpez.net/forums/u25336/mahefasoa/ d'avoir pris le temps de le relire et de le corriger.