0% ont trouvé ce document utile (0 vote)
6 vues30 pages

Notifications et Intents en Android

Transféré par

bintousane69
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
6 vues30 pages

Notifications et Intents en Android

Transféré par

bintousane69
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

INSA BADJI Doctorant à l’Université de Thiès / Tuteur à l’UVS

Séquence 5: les notifications et intents


• Objectif

• Plan:
- Les Toasts
- Les Boîtes de dialogues
- Navigation dans les pages
- Les intents
- Les intents prédéfinis

Basé sur le cours du Pr. Ousmane SALL


Notifications: La classe Toast
⚫ Texte qui apparaît en premier plan puis disparaît au bout
d'un temps donné
⚫ Création d'un Toast
⚫ [Link](Context, String, int) renvoie l'objet de classe Toast créé.
⚫ Le premier paramètre est l'activité
⚫ Le deuxième paramètre est le message à afficher
⚫ Le dernier paramètre indique la durée d'affichage les seules valeurs possibles sont :
Toast.LENGTH_SHORT (2 secondes) ou Toast.LENGTH_LONG (5 secondes).
⚫ Positionnement d'un Toast
⚫ setGravity(int, int, int) appelée avant l'affichage par show pour indiquer où s'affichera le
message.
⚫ Le premier paramètre sert à placer le message par rapport à l'écran. Il peut prendre l'une des
valeurs définies dans la classe Gravity soit : Gravity. (TOP, BOTTOM, LEFT, RIGHT,
CENTER_VERTICAL, FILL_VERTICAL, CENTER_HORIZONTAL, FILL_ HORIZONTAL,
CENTER, FILL).
⚫ Les deux paramètres suivants indiquent le décalage (en pixels).
⚫ Affichage d'un Toast
⚫ show() affiche le message pour la durée définie lors de sa création.
Notifications: La classe
AlertDialog
⚫ Style plus classique des boîtes de dialogue. Un AlertDialog s’ouvre, prend
le focus et reste affiché tant que l’utilisateur ne le ferme pas
⚫ Pour créer un AlertDialog:
⚫ Utiliser la classe Builder offrant un ensemble de méthodes permettant de
configurer un AlertDialog. Méthodes renvoie le Builder afin de faciliter le chaînage
des appels.
⚫ À la fin, il suffit d’appeler la méthode show() de l’objet Builder pour afficher la
boîte de dialogue.
⚫ Méthodes de configuration de Builder :
⚫ setMessage() permet de définir le "corps" de la boîte de dialogue
⚫ setTitle() et setIcon() permettent de configurer le texte et/ou l’icône
⚫ setPositiveButton(), setNeutralButton() et setNegativeButton() permettent
d’indiquer les boutons qui apparaîtront en bas de la boîte de dialogue, leur
emplacement latéral (respectivement, à gauche, au centre ou à droite), leur texte
et le code qui sera appelé lorsqu’on clique sur un bouton (en plus de refermer la
boîte de dialogue).
Notifications: : Exemple de
Toast
⚫ Un Toast est un message
qui apparait et disparait
⚫ Il est impossible de savoir si
l’utilisateur l’a vu ou pas
⚫ Configuration:
⚫ Un String contenant le
message
⚫ Une durée
⚫ Toast.LENGTH_LONG ou
Toast.LENGTH_SHORT
⚫ Il est aussi possible de
donner une View de votre
choix en paramètre
Toast : exemple
[Link]([Link],
"C'est vous qui voyez!!!",
Toast.LENGTH_SHORT).show();
Boites de dialogue

31/07/2015 Technologies Mobiles avec JavaME et Android 407


Exemple: AlertDialog
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="[Link]
xmlns:app="[Link]
xmlns:tools="[Link]
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">

<Button
android:id="@+id/btnCliquer"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginTop="16dp"
android:text="Cliquer" />
<EditText
android:id="@+id/txtmsg"
android:layout_width="232dp"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/btnCliquer"
android:layout_alignBottom="@id/btnCliquer"
android:layout_alignParentRight="true"
android:layout_marginRight="32dp"
android:layout_marginBottom="2dp"
android:ems="10"
android:hint="Cliquer sur le Bouton" />

</RelativeLayout>
Exemple: AlertDialog
package [Link]; @Override
protected void onCreate( Bundle saveInstanceState)
{
import [Link];
import [Link]; [Link](saveInstanceState);
import [Link]; setContentView([Link].activity_main);
import [Link]; txtMsg = (EditText)findViewById([Link]);
import [Link]; cliquerBouton =
import [Link]; (Button)findViewById([Link]);
import [Link]; [Link](new
import [Link]; [Link]() {
import [Link]; @Override
import [Link]; public void onClick(View v) {
AlertDialog diaBox = createDialogBox();
public class MainActivity extends Activity { [Link]();
Button cliquerBouton; [Link]("Je suis la!!");
EditText txtMsg; }
String msg; });
}
Exemple: AlertDialog
protected AlertDialog createDialogBox(){
AlertDialog myDialogBox = new [Link](this)
.setTitle("Exemple Dialog Box")
.setMessage("Voulez vous vraiment quitter le dialog")
.setIcon([Link].logo_uvs)
.setPositiveButton("Oui", new
[Link]() {
@Override
public void onClick(DialogInterface dialog, int which) {
msg = "oui" +[Link](which);
[Link](msg);
}
})
.setNeutralButton("Abandonner", new
[Link]() {
@Override
public void onClick(DialogInterface dialog, int which) {
msg = "Abandonner" +[Link](which);
[Link](msg);
}
})

.setNegativeButton("Non", new [Link]() {


@Override
public void onClick(DialogInterface dialog, int
which) {
msg = "Non" +[Link](which);
[Link](msg);
}
}).create();
return myDialogBox;
}

}
Principe des intents
⚫ Les Intents permettent de gérer l'envoi et la réception de messages
afin de faire coopérer les applications. Le but des Intents est de
déléguer une action à un autre composant, une autre application ou
une autre activité de l'application courante. Un objet Intent contient
les information suivantes:
⚫ le nom du composant ciblé (facultatif)
⚫ l'action à réaliser, sous forme de chaine de caractères
⚫ les données: contenu MIME et URI
⚫ des données supplémentaires sous forme de paires de clef/valeur
⚫ une catégorie pour cibler un type d'application
⚫ des drapeaux (informations supplémentaires)
⚫ On peut envoyer des Intents informatifs pour faire passer des
messages. Mais on peut aussi envoyer des Intents servant à lancer
une nouvelle activité
Intents pour une nouvelle
activité
⚫ Plusieurs façons de créer l'objet de type
Intent qui permettra de lancer une nouvelle
activité. Si l'on passe la main à une activité
interne à l'application, on peut créer l'Intent et
passer la classe de l'activité ciblée par
l'Intent:
Intent login = new Intent(this, [Link]);
startActivity(login);
Intents pour une nouvelle
activité
S'il s'agit de passer la main à une autre application, on
donne au constructeur de l'Intent les données et l'URI cible:
l'OS est chargé de trouver une application pouvant
répondre à l'Intent.
Button b = (Button) findViewById([Link].Button01);
[Link](new OnClickListener() {
@Override
public void onClick(View v) {
Uri telnumber = [Link]("[Link]
Intent call = new Intent(Intent.ACTION_CALL, telnumber);
startActivity(call);
} Sans oublier la permission dans le Masnifest
});
Intent avec résultat attendu en
retour
⚫ Lorsque le bouton retour est pressé, l'activité courante prend fin et
revient à l'activité précédente. Cela permet par exemple de terminer
son appel téléphonique et de revenir à l'interface ayant initié l'appel.
⚫ Au sein d'une application, une activité peut vouloir récupérer un
code de retour de l'activité "enfant". On utilise pour cela la méthode
startActivityForResult qui envoie un code de retour à l'activité
enfant.
public void startActivityForResult (Intent intent, int requestCode)
⚫ Lorsque l'activité parent reprend la main, il devient possible de filtrer
le code de retour dans la méthode onActivityResult pour savoir si
l'on revient ou pas de l'activité enfant.
⚫ protected void onActivityResult(int requestCode, int
resultCode, Intent data)
Retour d'une activité
⚫ L'appel d'un Intent devient donc dans l’activité parent:
public void onCreate(Bundle savedInstanceState) {
Intent login = new Intent(getApplicationContext(),
[Link]);
startActivityForResult(login,48);
...
}
⚫ Le filtrage dans la classe parent permet de savoir qui avait appelé
cette activité enfant:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 48)
[Link](this,
"Code de requête récupéré (je sais d'ou je viens)",
Toast.LENGTH_LONG).show();
}
}
Résultat d’une activité
⚫ Il est aussi possible de définir un résultat d'activité, avant d'appeler
explicitement la fin d'une activité avec la méthode finish(). Dans ce
cas, la méthode setResult permet d'enregistrer un code de retour
qu'il sera aussi possible de filtrer dans l'activité parente.
⚫ Dans l'activité enfant, on met donc:
Button terminer = (Button)findViewById([Link]);
[Link](new OnClickListener() {
@Override
public void onClick(View v) {
setResult(RESULT_OK, getIntent());
finish();
}
});
Résultat d’une activité
⚫ Et la classe parente peut filtrer ainsi:
protected void onActivityResult(int requestCode, int resultCode, Intent data){
if (requestCode == 48)
[Link](this, "Code de requête récupéré (je sais d'ou je viens)",
Toast.LENGTH_LONG).show();
if (requestCode == 50)
[Link](this, "Code de retour ok (on m'a renvoyé le bon code)",
Toast.LENGTH_LONG).show();
}
Ajout d'informations
⚫ Les Intent permettent de transporter des
informations à destination de l'activité cible.
On appelle ces informations des Extra: les
méthodes permettant de les manipuler sont
getExtra et putExtra.
⚫ Lorsqu'on prépare un Intent et que l'on
souhaite ajouter une information de type
"clef -> valeur" on procède ainsi:
Ajout d'informations
Intent callactivity2 = new Intent(getApplicationContext(),
[Link]);
[Link]("login", "Lamane");
startActivity(callactivity2);

⚫ Du côté de l'activité recevant l'Intent, on


récupère l'information de la manière suivante:
Bundle extras = getIntent().getExtras();
String s = new String([Link]("login"));
Exemple Activite
Appeler
Activite
Pricipale
Pour l’activité principale
<Button
<?xml version="1.0" encoding="utf-8"?> android:id="@+id/btnAppeler"
<RelativeLayout android:layout_width="285dp"
xmlns:android="[Link] android:layout_height="wrap_content"
xmlns:app="[Link]
xmlns:tools="[Link] android:layout_alignParentLeft="true"
android:layout_width="match_parent" android:layout_alignParentTop="true"
android:layout_height="match_parent" android:layout_marginLeft="71dp"
tools:context=".MainActivity"> android:layout_marginTop="300dp"
android:text="Appeler un numero de
<Button telephone" />
android:id="@+id/btnNumeTel" <Button
android:layout_width="285dp" android:id="@+id/btnQuitter"
android:layout_height="wrap_content" android:layout_width="285dp"
android:layout_alignParentLeft="true" android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_marginLeft="72dp" android:layout_alignParentLeft="true"
android:layout_marginTop="203dp" android:layout_alignParentTop="true"
android:text="Saisir un numero de telephone" /> android:layout_marginLeft="73dp"
android:layout_marginTop="387dp"
android:text="Quitter" />
</RelativeLayout>
Pour l’activité Appeler
<Button
<EditText android:id="@+id/btnAppeler"
android:id="@+id/editText" android:layout_width="285dp"
android:layout_width="285dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_alignParentLeft="true" android:layout_alignParentLeft="true"
android:layout_alignParentTop="true" android:layout_alignParentTop="true"
android:layout_marginLeft="62dp"
android:layout_marginTop="226dp"
android:layout_marginLeft="74dp"
android:ems="10" android:layout_marginTop="315dp"
android:inputType="textPersonName" /> android:text="Appeler ce numero" />
<TextView
android:id="@+id/textView" <Button
android:layout_width="285dp" android:id="@+id/btnQuitter"
android:layout_height="wrap_content" android:layout_width="285dp"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_height="wrap_content"
android:layout_marginLeft="56dp" android:layout_alignParentLeft="true"
android:layout_marginTop="155dp" android:layout_alignParentTop="true"
android:text="Saisir un numero de android:layout_marginLeft="72dp"
telephone" />
android:layout_marginTop="395dp"
android:text="Retourner ce numero" />
Pour l’activité principale
package [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];

public class MainActivity extends Activity {


Button applerBouton, numeroBouton, quitterBouton;
EditText txtMsg;
String msg;
@Override
protected void onCreate( Bundle saveInstanceState) {

[Link](saveInstanceState);
setContentView([Link].activity_main);
applerBouton = (Button)findViewById([Link]);
[Link](new [Link]() {
@Override
public void onClick(View v) {
Intent appelerIntent = new Intent(getApplicationContext(),
[Link]);
startActivity(appelerIntent);
}
});
numeroBouton = (Button)findViewById([Link]);
[Link](new [Link]() {
@Override
public void onClick(View v) {
Intent saisirIntent = new Intent(getApplicationContext(), [Link]);
startActivityForResult(saisirIntent, 1);
}
});
quitterBouton = (Button)findViewById([Link]);
[Link](new [Link]() {
@Override
public void onClick(View v) {
finish();
}
});
/* txtMsg = (EditText)findViewById([Link]);
cliquerBouton = (Button)findViewById([Link]);
[Link](new [Link]() {
@Override
public void onClick(View v) {
AlertDialog diaBox = createDialogBox();
[Link]();
[Link]("Je suis la!!");
}
});*/
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data){
if(requestCode == 1){
if(resultCode == RESULT_OK){
String filiere = [Link]("NumTel");
[Link](getApplicationContext(),"VOtre numero est "+filiere, Toast.LENGTH_LONG).show();

} else if (resultCode == RESULT_CANCELED){


[Link](getApplicationContext(),"Operation Annule ", Toast.LENGTH_LONG).show();
}
}
}
Pour Android Manifest

<?xml version="1.0" encoding="utf-8"?>


<manifest xmlns:android="[Link]
xmlns:tools="[Link]
package="[Link]">
<uses-permission
android:name="[Link].CALL_PHONE"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">

<activity android:name=".MainActivity">
<intent-filter>
<action android:name="[Link]" />

<category android:name="[Link]" />


</intent-filter>
</activity>
<activity android:name=".AppelActivity"/>
</application>

</manifest>
Pour la seconde activité
Pour la seconde Activité Appeler
Intentions prédéfinies
⚫ ACTION_MAIN: action principale
⚫ ACTION_VIEW: visualiser une donnée
⚫ ACTION_ATTACH_DATAT: attachement de donnée
⚫ ACTION_EDIT: Edition de donnée
⚫ ACTION_PICK: Choisir un répertoire de donnée
⚫ ACTION_CHOOSER: menu de choix pour l'utilisateur –
EXTRA_INTENT contient l'Intent original, EXTRA_TITLE
le titre du menu
⚫ ACTION_GET_CONTENT: obtenir un contenu suivant
un type MIME
⚫ ACTION_SEND: envoyé un message
(EXTRA_TEXT|EXTRA_STREAM) à un destinataire non
spécifié
Intentions prédéfinies
⚫ ACTION_SEND_TO: on spécifie le destinataire dans
l'URI
⚫ ACTION_INSERT: on ajoute un élément vierge dans le
répertoire spécifié par l'URI
⚫ ACTION_DELETE: on supprime l'élement désigné par
l'URI
⚫ ACTION_PICK_ACTIVITY: menu de sélection selon
l'EXTRA_INTENT mais ne lance pas l'activité
⚫ ACTION_SEARCH: effectue une recherche etc...
Fin de la
séquence 3

Vous aimerez peut-être aussi