samedi 12 novembre 2011

OBTENIR LE CODE SOURCE DES APPLICATIONS ANDROID



Pour les developpeurs et pour notre culture Android il est utile de savoir comment obtenir le code source d'une application pour Android. Comment ? en la décompilant !Les applications pour Android sont des fichiers ayant l'extension "APK".
En réalité elles sont compactées. Nous pouvons changer cette extension par "ZIP" ou "RAR" et la décompacter.
Nous aurons ainsi l'arborescence du projet et surtout à sa racine un fichier "classes.dex" qui contient toute l'intelligence de l'application.

Mais ce fichier ".DEX" est illisible.

Nous allons voir comment le décompiler et ainsi obtenir le code source en java du projet de l'application !

Il va nous falloir deux applications, plutôt trois en comptant WINRAR.

- DEX2JAR : qui transformera le fichier "classes.dex" en "classes.dex.dex2jar.jar"
- Un décompilateur Java comme JD.

video


Voila nous avons tout le code source du projet de l'application Frecord

Amusez-vous bien :)

vendredi 11 novembre 2011

Intent : passer d’une Activity à une autre



Depuis le début des tuto Android, nous faisons des mini-applications qui n’utilisent qu’un seul écran, qu’une seule page, en résumé qu’une seule Activity. Pour débuter, c’est très bien mais pour faire une véritable application, il serait utile de savoir comment passer d’une page à une autre, autrement dit d’uneActivity à une autre.
Comme d’habitude, nous allons commencer par un petit peut de code XML.

Code XML

Qui dit nouvel écran, dit nouvelle vue donc nouveau layout. Créez un nouveau fichier XML dans le dossierlayout, et appelez-le afficahgequestionactivity.xml. Nous allons faire une vue très simple, avec un TextView au centre de l’écran qui nous servira à poser une question et deux Button en dessous qui nous permettra d’y répondre. Voici ce que ça donnera schématiquement :


Voici donc le code XML pour réaliser cette vue (cf. ci-dessus)
<?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"
  >
 
   <TextView android:id="@+id/question"
     android:layout_width="fill_parent"
     android:layout_height="wrap_content"
     android:textStyle="bold"
     android:gravity="center_horizontal"
     />
 
     <LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
      android:orientation="horizontal"
      android:paddingTop="30dp"
    >
 
    <Button android:id="@+id/buttonOui"
     android:layout_width="80dp"
     android:layout_height="wrap_content"
     android:text="Oui" />
 
     <Button android:id="@+id/buttonNon"
     android:layout_width="80dp"
     android:layout_height="wrap_content"
     android:text="Non" />
 
  </LinearLayout>
 
</LinearLayout>


Si vous avez des difficultés n’hésitez pas à poser des questions en commentaire.

Passons maintenant au code JAVA, soyez attentif, c’est à partir d’ici que commence la petite subtilité du jour.


Code JAVA


Avant de se lancer dans le code JAVA, je vais vous expliquer un peu le fonctionnement des Intent. LesIntent permettent d’envoyer et recevoir des messages (éventuellement avec des données) pour déclencher une action, dans un composant d’une même application (exemple : une Activity) voir même dans une autre application. Dans notre cas, nous allons utiliser l’Intent pour déclencher dans une autre Activity, une question en fonction de l’item sur lequel on a cliqué, et cette dernière renverra la réponse à l’Activityprincipale. Je ne sais pas si vous avez tout compris, mais je vous avais prévenu, il fallait être attentif… En tout cas si vous n’avez pas tout saisi, ce n’est pas grave vous allez comprendre au fur et à mesure et sinon et bien posez moi des questions !

Commençons par modifier notre Activity principale qui sera l’Activity mère. Ouvrez le fichier JAVA principal (moi je l’ai appelé Tutoriel9_Android.java mais cela dépend du nom que vous lui avez donné, enfin normalement il devrait y avoir qu’un seule fichier dans le dossier src donc vous ne devriez pas vous tromper).

Créez la variable globale suivante (ici elle nous sera pas très utile mais cela permet d’identifier quelleActivity à provoquer le retour d’une valeur lorsqu’on appelle plusieurs Activity dans une même Activity) :
private static final int CODE_DE_MON_ACTIVITE = 1;
Nous allons modifier l’écouteur d’évènement que l’on avait mis en place sur la listView. Remplacez-le par le code suivant :
//On met un écouteur d'évènement sur notre listView
        maListViewPerso.setOnItemClickListener(new OnItemClickListener() {
  @SuppressWarnings("unchecked")
  @Override
          public void onItemClick(AdapterView a, View v, int position, long id) {
 
   //on récupère la HashMap contenant les infos de notre item (titre, description, img)
   HashMap map = (HashMap) maListViewPerso.getItemAtPosition(position);
 
   //On créé un objet Bundle, c'est ce qui va nous permetre d'envoyer des données à l'autre Activity
   Bundle objetbunble = new Bundle();
 
   //Cela fonctionne plus ou moins comme une HashMap, on entre une clef et sa valeur en face
   objetbunble.putString("titre", map.get("titre"));
   objetbunble.putString("description", map.get("description"));
 
   //On créé l'Intent qui va nous permettre d'afficher l'autre Activity
   //Attention il va surement falloir que vous modifier le premier paramètre (Tutoriel9_Android.this)
   //Mettez le nom de l'Activity dans la quelle vous êtes actuellement
   Intent intent = new Intent(Tutoriel9_Android.this, QuestionActivity.class);
 
   //On affecte à l'Intent le Bundle que l'on a créé
   intent.putExtras(objetbunble);
 
   //On démarre l'autre Activity
   startActivityForResult(intent, CODE_DE_MON_ACTIVITE);
         }
         });
Normalement, Eclipse doit vous indiquez une erreur. C’est normal, il ne connaît pas encore la classeQuestionActivity. Nous allons donc la créer. Créez une nouvelle classe dans le dossier src et appelez laQuestionActivity.java.
package com.tutomobile.android.intent;
 
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
 
public class QuestionActivity extends Activity {
 
   private String titre;
   private String description;
 
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
 
     //on lui associe le layout afficahgequestionactivity.xml
     setContentView(R.layout.afficahgequestionactivity);
 
     //on récupère tous les éléments
        TextView textView = (TextView)findViewById(R.id.question);
        Button buttonOui = (Button)findViewById(R.id.buttonOui);
        Button buttonNon = (Button)findViewById(R.id.buttonNon);
 
        //On récupère l'objet Bundle envoyé par l'autre Activity
        Bundle objetbunble  = this.getIntent().getExtras();
 
        //On récupère les données du Bundle
        if (objetbunble != null && objetbunble.containsKey("titre") && objetbunble.containsKey("description")) {
         titre = this.getIntent().getStringExtra("titre");
                description = this.getIntent().getStringExtra("description");
        }else {
         //Erreur
         titre = "Error";
         description = "Error";
        }
 
        //On créé notre question
     description = description.toLowerCase();
        textView.setText("Utilisez-vous " + titre +" comme "+description+"?");
 
        //On crée un écouteur d'évènement commun au deux Button
        OnClickListener onClickLister = new OnClickListener() {
 
   @Override
    public void onClick(View v){
       switch(v.getId()){
       //si on a cliqué sur le button Oui
       case R.id.buttonOui:
        //si le tire est égale à "Word"
        if (titre.equals("Word")){
         //on renvoi la valeur 1 à l'Activity principal
         setResult(1);
              }else if (titre.equals("Excel")){
               //on renvoi la valeur 2 à l'Activity principal
         setResult(2);
              }else if (titre.equals("Power Point")){
               //on renvoi la valeur 3 à l'Activity principal
         setResult(3);
              }else if (titre.equals("Outlook")){
               //on renvoi la valeur 4 à l'Activity principal
         setResult(4);
              }
        finish();
        break;
       case R.id.buttonNon:
        if (titre.equals("Word")){
         //on renvoi la valeur 5 à l'Activity principal
         setResult(5);
              }else if (titre.equals("Excel")){
               //on renvoi la valeur 6 à l'Activity principal
         setResult(6);
              }else if (titre.equals("Power Point")){
               //on renvoi la valeur 7 à l'Activity principal
         setResult(7);
              }else if (titre.equals("Outlook")){
               //on renvoi la valeur 8 à l'Activity principal
         setResult(8);
              }
        finish();
        break;
       }
      }
 
        };
 
        //on affecte aux Button l'écouteur d'évènement
        buttonOui.setOnClickListener(onClickLister);
        buttonNon.setOnClickListener(onClickLister);
    }
 
}
Ensuite allez dans le fichier AndroidManifest.xml pour lui indiquez la nouvelle Activity grâce à ligne suivant placé entre les balises <application> :
<activity android:name=".QuestionActivity"></activity>
Normalement une fois le projet enregistré (Ctrl+S), Eclipse ne devrait plus voir d’erreur. Nous allons maintenant écrire le code dans l’Activity mère, nous permettant de récupérer la réponse envoyé par notreActivity QuestionActivity. Lorsque que l’on fait setResult cela déclenche la méthode onActivityResult de l’Activity mère. Nous allons donc l’implémenter. Revenez dans l’Activity mère et créez la méthodeonActivityResult grâce au code suivant :
@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data){
     //on regarde quelle Activity a répondu
     switch(requestCode){
     case CODE_DE_MON_ACTIVITE:
 
      //on créé une AlertDialog
      AlertDialog.Builder adb = new AlertDialog.Builder(this);
      adb.setTitle("Votre Réponse");
      adb.setPositiveButton("Ok", null);
 
     //On regarde qu'elle est la réponse envoyée et en fonction de la réponse on affiche un message différent.
      switch(resultCode){
      case 1:
       adb.setMessage("Vous utilisez Word.");
       adb.show();
       return;
      case 2:
       adb.setMessage("Vous utilisez Excel.");
       adb.show();
       return;
      case 3:
       adb.setMessage("Vous utilisez Power Point.");
       adb.show();
       return;
      case 4:
       adb.setMessage("Vous utilisez Outlook.");
       adb.show();
       return;
      case 5:
       adb.setMessage("Vous n'utilisez pas Word.");
       adb.show();
       return;
      case 6:
       adb.setMessage("Vous n'utilisez pas Excel.");
       adb.show();
       return;
      case 7:
       adb.setMessage("Vous n'utilisez pas Power Point.");
       adb.show();
       return;
      case 8:
       adb.setMessage("Vous n'utilisez pas Outlook.");
       adb.show();
       return;
      }
     }
    }


Voilà normalement, tout est bon vous pouvez lancer l’application. Je vous mets trois screenshots des trois phases.

Screeshot 1 : On lance l’application, on choisit un item en cliquant dessus, ce qui va afficher la deuxième Activity (dans mon exemple, j’ai cliqué sur Outlook).


Screnshot 2 : On arrive sur la deuxième Activity qui nous pose une question. Il nous suffit d’y répondre en cliquant sur Oui ou Non (dans mon exemple, j’ai cliqué sur Non).


Screnshot 3 : La réponse envoyée par l’Activity fille s’affiche dans l’Activity mère. Tout fonctionne !


Ainsi s’achève ce tutoriel Android qui n’était pas facile du tout. J’espère que mes explications ont été claires et puis bon comme je suis dans un bon jour et surtout comme vous avez travaillé dur pour arriver jusqu’ici, je vais vous fournir les sources du programme

INSTALLER GINGERBREAD 2.3.4 JPKI1 EN ARABE POUR GALAXY-S 2 - LANGUE ARABE






Vous êtes intéressé(e)s par une mise a jour du Galaxy S2 GT i9100 en version arabe? si oui, ce guide est pour vous ! Ce guide va vous aider à installer en étapes le nouveau firmware arabe (androidGingerbread 2.3.4 jpki1) sur votre Samsung Galaxy S2 GT i9100.

Vous pouvez installer la version Gingerbread 2.3.4 jpki1 en langue arabe sur un Samsung Galaxy S2 GT i9100 en suivent les étapes ci-dessous.

Installer Android Gingerbread 2.3.4 JPKI1 "arabe" sur Galaxy S2 GT i9100


Guide étape par étape:
Étape 1: Téléchargez le fichier I9100JPKI1.rar . Taille: 307 MB.

Étape 2: Extrait le fichier téléchargé 'I9100JPKI1.rar' pour obtenir les 4 fichiers indiqués au dessous: [Mot de passe: samfirmware.com]


1- APBOOT_I9100JPKI1_CL566704_REV02_user_low_ship.tar.md5
2- CODE_I9100JPKI1_CL566704_REV02_user_low_ship.tar.md5
3- GT-i9100-MULTI-CSC-OJPKI1.tar.md5
4- MODEM_I9100XXKI1_REV_02_CL1058311.tar.md5


Étape 3: Téléchargez Odin3_v1.85.zip puis de l'extraire pour obtenir ces deux fichiers Odin3 v1.85.exe et Odin3.ini. Ne supprimez pas le fichier. Ini car il est aussi nécessaire pour l'exécution du programme (Odin)

Étape 4: Déconnectez le téléphone s'il est relié à un PC et éteignez le (le téléphone).

Étape 5: Mettez le Galaxy S en mode de téléchargement - Appuyez et maintenez les 3 touches Marche/arrêt + VolumeBAS + Touche home ensemble.

Étape 6: Exécutez Odin.exe.

Étape 7: Connectez votre téléphone au PC maintenant. Vous devriez obtenir le message "Ajouté! ! " à gauche sous la boîte de message d'Odin.

Étape 8: Sélectionnez les fichiers suivants dans les onglets d'Odin:

1- Cliquez sur l'onglet Bootloader, et sélectionnez APBOOT_I9100JPKI1_CL566704_REV02_user_low_ship.tar.md5 (de l'étape 2.1)
2- Cliquez sur l'onglet PDA, et sélectionnez CODE_I9100JPKI1_CL566704_REV02_user_low_ship.tar.md5 (de l'étape 2.2)
3- Cliquez sur l'onglet du CSC, et sélectionnez GT-i9100-MULTI-CSC-OJPKI1.tar.md5 (de l'étape 2.3)
4- Cliquez sur l'onglet Phone, puis sélectionnez MODEM_I9100XXKI1_REV_02_CL1058311.tar.md5 (de l'étape 2.4)

Étape 9: Important! Assurez-vous que ces deux cases sont cochées: Auto Reboot et F.Reset Time.

Étape 10: Maintenant, appuyez sur le bouton START pour commencer le processus de flashage. Quand il finit, votre téléphone redémarre automatiquement et vous pouvez ensuite débrancher le câble.

Étape 11: Lorsque le téléphone redémarre, il sera exécuté en Android Gingerbread 2.3.4 jpki1 en arabe.

Si le téléphone vous demande "confirm password" le code est: (samfirmware.com).

mercredi 9 novembre 2011

Faire un menu et sous-menu



Après quelques jours de répit nous voilà parti pour un nouveau tuto plutôt simple mais terriblement utile pour faire une application complète. Nous allons apprendre à réaliser des menus et sous-menus, assez pratique pour enrichir vos applications d’options.

Alors comme d’habitude créez un nouveau projet (moi j’ai utilisé Android 1.6), et direction le dossier layout car l’interface graphique est comme tout le temps créée grâce aux fichiers XML.

Code XML

Créez un fichier menu.xml dans le dossier layout. Nous allons créer un premier menu contenant les itemsOptions et Quitter. Lorsque l’on cliquera sur Quitter, on sortira de l’application et lorsque l’on cliquera surOptions, on aura un sous-menu qui s’affichera avec les items Favoris et Stats. Je vous propose donc le code suivant :
<menu xmlns:android="http://schemas.android.com/apk/res/android">
 
<item android:id="@+id/option" 
      android:title="Options"
      android:icon="@drawable/option">
 
     <menu android:id="@+id/sousmenu">
  <item android:id="@+id/favoris"
        android:title="Favoris"   /> 
 
  <item android:id="@+id/stats"
        android:title="Stats"  />
     </menu>
</item>
 
<item android:id="@+id/quitter" 
     android:title="Quitter"
     android:icon="@drawable/quit" />
</menu>
Vous remarquerez que j’affecte un petit icône pour chaque item du menu mais pas du sous-menu. Tout simplement parce que dans le sous-menu, les icônes ne sont pas supporté par Android (« Sub menus do not support item icons, or nested sub menus. » via). La partie XML est terminée (oui c’est court et simple mais bon… ), passons désormais à la partie JAVA qui sera aussi courte et simple !

Code JAVA

Comme d’habitude, le code est commenté mais si ce n’est pas clair, laissez un commentaire et je vous aiderai du mieux que je peux.
package com.tutomobile.android.menu;
 
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.Toast;
 
public class Tutoriel10_Android extends Activity {
 
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main); 
 
    }
 
    //Méthode qui se déclenchera lorsque vous appuierez sur le bouton menu du téléphone
    public boolean onCreateOptionsMenu(Menu menu) {
 
        //Création d'un MenuInflater qui va permettre d'instancier un Menu XML en un objet Menu
        MenuInflater inflater = getMenuInflater();
        //Instanciation du menu XML spécifier en un objet Menu
        inflater.inflate(R.layout.menu, menu);
 
        //Il n'est pas possible de modifier l'icône d'entête du sous-menu via le fichier XML on le fait donc en JAVA
     menu.getItem(0).getSubMenu().setHeaderIcon(R.drawable.option_white);
 
        return true;
     }
 
       //Méthode qui se déclenchera au clic sur un item
      public boolean onOptionsItemSelected(MenuItem item) {
         //On regarde quel item a été cliqué grâce à son id et on déclenche une action
         switch (item.getItemId()) {
            case R.id.option:
               Toast.makeText(Tutoriel10_Android.this, "Option", Toast.LENGTH_SHORT).show();
               return true;
            case R.id.favoris:
                Toast.makeText(Tutoriel10_Android.this, "Favoris", Toast.LENGTH_SHORT).show();
                return true;
            case R.id.stats:
                Toast.makeText(Tutoriel10_Android.this, "Stats", Toast.LENGTH_SHORT).show();
                return true;
           case R.id.quitter:
               //Pour fermer l'application il suffit de faire finish()
               finish();
               return true;
         }
         return false;}
 
}
Voilà, c’est aussi simple que ça ! Maintenant, lancez votre application et appuyez sur le bouton menu du téléphone vous devriez voir quelque chose comme ceci :

Si vous cliquez sur l’item « Options » le sous-menu s’affiche :


Utiliser les notifications pour avertir l’utilisateur


Un des points fort des téléphones Android par rapport à l’iPhone est son système de notifications. Nous allons donc apprendre à créer une notification qui apparaitra en faisant vibrer votre téléphone. C’est très utile pour avertir l’utilisateur (par exemple pour nous prévenir que l’on reçoit un message, une notification se déclenche).

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:


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>
Code JAVA

Nous allons travailler avec deux Activity. L’Activity principale sera celle contenant nos deux boutons et qui nous permettra de créer ceux pourquoi 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 » supprimera la notification. Bon ça je pense que vous l’auriez trouvé sans moi… Mais alors pourquoi avoir besoin d’une autre Activity? Et 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éé.

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 :P)
 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éer 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éer la notification
    private void createNotify(){
     //On créer un "gestionnaire de notification"
     NotificationManager notificationManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);        
 
     //On créer la notification
     //Avec son icône et son texte défilant (optionel si l'on 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 notif
        String titreNotification = "C'est moi la notification !";
        //On définit le texte qui caractérise la notif
        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éé notre gestionnaire de notfication
     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é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éer 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 petit modification dans le fichier AndroidManifest.xml.

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 pour 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 faîtes 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.


Twitter Delicious Facebook Digg Stumbleupon Favorites More

 
Design by Free Android website | Bloggerized by wassim El mririe - Ramzi Essid | TO Best Web Host