Utilisation de base de l'intention


Introduction à cette section :

Après la fin de la section précédente, cela signifie que nous avons fini d'étudier les quatre composants majeurs d'Android~, et ce que nous voulons apprendre dans cette section est la relation entre les quatre composantes principales Hub - Intent (Intent), le pont de communication Android, par exemple, on peut passer :

  • startActivity(Intent)/startActivityForResult (Intent ) : pour démarrer une activité
  • startService(Intent)/bindService(Intent) : pour démarrer un service
  • sendBroadcast  : Envoyer la diffusion au BroadcastReceiver spécifié
  • N'oubliez pas non plus que nous avons écrit beaucoup de Intent-Filter lors de l'enregistrement des quatre composants principaux ~

Bon, sans plus tarder, commençons cette section ! De plus, nous avons déjà utilisé Intent auparavant, nous ne parlerons donc pas de choses conceptuelles~ Anciennes règles, API officielle : Intent


1. La différence entre l'intention explicite et l'intention implicite

  • Intention explicite : Spécifiez le composant cible à démarrer via le nom du composant, tel que startActivity(new Intent(A.this,B.class)); Il n'y a qu'un seul composant démarré à chaque fois ~
  • Intention explicite implicite : ne spécifiez pas le nom du composant, mais spécifiez l'action, les données ou la catégorie de l'intention lorsque nous démarrons le composant. , Il correspondra au filtre d'intention des composants pertinents dans AndroidManifest.xml et correspondra aux composants qui répondent aux attributs un par un. Lorsque plusieurs répondent aux exigences, Une boîte de dialogue apparaîtra pour que nous puissions choisir lequel démarrer ~

2. Les sept attributs de l'intention :


1) ComponentName (component). nom )

1.png


2) Action

2.png


3) Catégorie

3.png


4) Données (données), Type (type MIME)

4.png


5) Extras (Extra)

5.png


6) Indicateurs (marque)

6.png


3. Exemple d'utilisation d'intention explicite :

Ceci est beaucoup utilisé, alors passons directement à l'exemple :

Exemple 1 : Cliquez sur le bouton pour revenir à l'interface Accueil : En cours de rendu :

7.gif

Code de base :

Intent it = new Intent();
it.setAction(Intent.ACTION_MAIN);
it.addCategory(Intent.CATEGORY_HOME);
startActivity(it);

Exemple 2 : Cliquez sur le bouton pour ouvrir la page Baidu : Exécution du rendu :

8.gif

Code principal :

Intent it = new Intent();
it.setAction(Intent.ACTION_VIEW);
it.setData(Uri. parse( "http://www.baidu.com"));
startActivity(it);

4. Explication détaillée de l'intention implicite

9.png


1) Exemple d'intention implicite d'actions prédéfinies :

Exemple de code : Après avoir cliqué sur le bouton, toutes les activités dont l'action est VIEW sont filtrées et affiché par l'utilisateur Sélection supplémentaire :

Code principal :

Créer la mise en page de la deuxième activité, et de l'activité correspondante, ajouter le code dans l'événement clic sur le bouton de la première activité :

Intent it = new Intent();
it.setAction(Intent.ACTION_VIEW);
startActivity(it);

Enfin dans l'ajoutez le code suivant à l'intention des deux activités :

<activity android:name=".SecondActivity"
android:label="Second Activity">
< intent-filter> >                                                                     


2) Exemple d'intention implicite d'action personnalisée :
Exemple de code :

Utiliser une action et une catégorie personnalisées pour activer une autre activité

Core code :

Créer la mise en page de la deuxième activité, et l'activité correspondante, ajouter le code dans l'événement clic sur le bouton de la première activité : 10.gif Intent it = new Intent();

it.setAction("my_action");
it.addCategory("my_category");

startActivity(it);

Ajoutez enfin le code suivant à la deuxième activité :

& LT; Activity android : name = ". SecondActivity"
Android : label = "Second Activity" & GT ;
                                                                                                                                                                                       name="android.intent.category.DEFAULT"/>
                                                                                                Mais vous devez quand même ajouter cette valeur par défaut, sinon une erreur sera signalée :


<category android:name= "android.intent.category.DEFAULT"/>

5. Collection d'intentions système couramment utilisées

Veuillez publier une collection d'intentions système couramment utilisées. S'il y en a qui ne sont pas répertoriés ci-dessus, veuillez les suggérer ~

.
//========================================== == =====================
//1 Passer un appel
// Passer un appel au service client mobile 10086
Uri. uri = Uri.parse ("tel:10086");
Intent intent = new Intent(Intent.ACTION_DIAL, uri);
startActivity(intent);

//===== ===== ============================================== ===== ===

//2. Envoyer un message texte
// Envoyer un message texte avec le contenu "Bonjour" au 10086
Uri uri = Uri.parse(" smsto:10086");
Intent intent = new Intent(Intent.ACTION_SENDTO, uri);
intent.putExtra("sms_body", "Bonjour");
startActivity(intent);

//3. Envoyer un MMS (équivalent à l'envoi d'un message texte avec pièces jointes)
Intent intent = new Intent(Intent.ACTION_SEND);
intent.putExtra("sms_body", "Hello");
Uri uri = Uri.parse("content ://media/external/images/media/23");
intent.putExtra(Intent.EXTRA_STREAM, uri);
intent.setType("image/png ");
startActivity(intent) ;

//================================ ============= ======================

//4. 🎜>//Ouvrir la page d'accueil de Baidu
Uri uri = Uri.parse("http://www.baidu.com");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity (intention);

//= ===================================== ============= ============

//5. Envoyer un email : (Cela ne sert à rien de neutraliser les services Google !!!)
// Envoyer à quelqu'un@domain.com Mail
Uri uri = Uri.parse("mailto:someone@domain.com");
Intent intent = new Intent(Intent.ACTION_SENDTO, uri);
startActivity(intent);
/ / Envoyer un e-mail à quelqu'un@domain.com Envoyer un e-mail avec le contenu "Bonjour"
Intent intent = new Intent(Intent.ACTION_SEND);
intent. putExtra(Intent.EXTRA_EMAIL, "someone@domain.com") ;
intent.putExtra(Intent.EXTRA_SUBJECT, "Subject");
intent.putExtra(Intent.EXTRA_TEXT, "Bonjour");
intent.setType("text/plain");
startActivity(intent);
//Envoyer des e-mails à plusieurs personnes
Intent intent=new Intent(Intent.ACTION_SEND);
String[] tos = {"1@abc.com", "2@abc .com"}; // Destinataire
String[] ccs = {"3@abc.com", "4@abc.com"}; Cc
String[] bccs = {" 5@abc.com", "6@abc.com"}; // Bcc
intent.putExtra(Intent.EXTRA_EMAIL, tos);
intent.putExtra (Intent.EXTRA_CC, ccs);
intent.putExtra(Intent.EXTRA_BCC, bccs);
intent.putExtra(Intent.EXTRA_SUBJECT, "Sujet");
intent.putExtra(Intent.EXTRA_TEXT, " Bonjour");
intent.setType("message/rfc822");
startActivity(intent);

//======================= = ========================================

//6 . Afficher la carte :
//Ouvrir Google Maps à Pékin, emplacement en Chine (39,9 de latitude nord, 116,3 de longitude est)
Uri uri = Uri.parse("geo:39.9,116.3");
Intent intent = new Intent(Intent .ACTION_VIEW, uri);
startActivity(intent);

//========================= ==== ===================================

//7. planning
// Planification du chemin : depuis quelque part à Pékin (39,9 de latitude nord, 116,3 de longitude est) jusqu'à un endroit à Shanghai (31,2 de latitude nord, 121,4 de longitude est)
Uri uri = Uri.parse("http:/ /maps.google.com/maps? f=d&saddr=39.9 116.3&daddr=31.2 121.4");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);

//===== ========================================= ========= ========

//8. Lecture multimédia :
Intent intent = new Intent(Intent.ACTION_VIEW);
Uri uri = Uri.parse("file:// /sdcard/foo.mp3");
intent.setDataAndType(uri, "audio/mp3");
startActivity(intent);

// Récupérez tous les fichiers audio de la carte SD, puis jouez la première chanson =-=
Uri uri = Uri.withAppendedPath(MediaStore.Audio.Media.INTERNAL_CONTENT_URI, "1");
Intent intent = new Intent (Intent.ACTION_VIEW, uri);
startActivity (intent);

//========================== ============== =========================

//9. l'appareil photo pour prendre des photos :
// Ouvrez le programme de prise de photos
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, 0);
//Obtenir les données photo
Bundle extras = intent.getExtras();
Bitmap bitmap = (Bitmap) extras.get("data");

//Un autre :
//Appelez l'application de la caméra système et stockez les photos prises
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE );
time = Calendar.getInstance().getTimeInMillis();
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File( Environnement
.getExternalStorageDirectory().getAbsolutePath()+"/ tucue", time + ".jpg")));
startActivityForResult(intent, ACTIVITY_GET_CAMERA_IMAGE);

//==== ================ =================================== ==========

//10. Obtenir et couper des images
// Obtenir et couper des images
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
intent.putExtra("crop", "true"); // Activer le recadrage
intent.putExtra("aspectX", 1); le rapport de recadrage est de 1:2
intent.putExtra ("aspectY", 2);
intent.putExtra("outputX", 20); // Enregistre la largeur et la hauteur de l'image
intent.putExtra("outputY", 40);
intent.putExtra("output", Uri.fromFile( new File ("/mnt/sdcard/temp"))); // Enregistrer le chemin
intent.putExtra("outputFormat", "JPEG"); // Format de retour
startActivityForResult(intent, 0);
// Couper des images spécifiques
Intent intent = new Intent("com.android.camera.action.CROP"
intent.setClassName("com.android.camera", "com.android.camera) . CropImage");
intent.setData(Uri.fromFile(new File("/mnt/sdcard/temp")));
intent.putExtra("outputX", 1); // Largeur de recadrage La le rapport de hauteur est de 1:2
intent.putExtra("outputY", 2);
intent.putExtra("aspectX", 20); // Enregistre la largeur et la hauteur de l'image
intent.putExtra (" aspectY", 40);
intent.putExtra("scale", true);
intent.putExtra("noFaceDetection", true
intent.putExtra("output", Uri.parse); (" fichier:///mnt/sdcard/temp"));
startActivityForResult(intent, 0);

//================ == ==============================================

//11. Ouvrez Google Market
// Ouvrez Google Market et accédez directement à la page détaillée du programme
Uri uri = Uri.parse("market://details?id=" + "com. demo.app ");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);

//============ === ================================================ =

//12. Entrez dans l'interface de configuration du téléphone mobile :
// Entrez dans l'interface de configuration du réseau sans fil (d'autres peuvent être copiées à partir d'un exemple)
Intent intent = new Intent(android.provider .Settings.ACTION_WIRELESS_SETTINGS);
startActivityForResult (intent, 0);

//========================= ========== ===========================

//13.
Uri installUri = Uri.fromParts( "package", "xxx", null);
returnIt = new Intent(Intent.ACTION_PACKAGE_ADDED, installUri);

//====== ========== ========================================= =======

//14. Désinstaller apk :
Uri uri = Uri.fromParts("package", strPackageName, null); ACTION_DELETE, uri);
startActivity( it);//============================ ============= ========================

//15.
Intent it = new Intent(Intent.ACTION_SEND) ;     
it.putExtra(Intent.EXTRA_SUBJECT, "Le texte du sujet de l'e-mail");
it.putExtra(Intent.EXTRA_STREAM, "file:///sdcard/eoe.mp3"
sendIntent.setType("audio) /mp3"); 
startActivity(Intent.createChooser(it, "Choisir le client de messagerie"));

//================== =============================================

//16. Accédez à la page de contact :
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setData(People.CONTENT_URI);
startActivity( intention);

//======================================= === =======================


//17 Afficher la personne de contact désignée :
Uri. personUri = ContentUris.withAppendedId(People.CONTENT_URI, info.id);//info.id ID de contact
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent. setData(personUri);
startActivity(intent);

//============================== === ===============================

//18. contacts (SDK version supérieure valide) :
Intent it = newIntent(Intent.ACTION_INSERT_OR_EDIT);
it.setType("vnd.android.cursor.item/contact"); Contacts.CONTENT_ITEM_TYPE) ;
it.putExtra("name","myName");
it.putExtra(android.provider.Contacts.Intents.Insert.COMPANY, "organisation"); putExtra(android.provider.Contacts.Intents.Insert.EMAIL,"email"); 
it.putExtra(android.provider.Contacts.Intents.Insert.PHONE,"homePhone"); 
it.putExtra( android.provider. Contacts.Intents.Insert.SECONDARY_PHONE,"mobilePhone"); 
it.putExtra(android.provider.Contacts.Intents.Insert.TERTIARY_PHONE,"workPhone"); 
it.putExtra(android. fournisseur.Contacts.Intents.Insert.JOB_TITLE,"title");
startActivity(it);

//================== ==== =========================================

//19. Appelez l'éditeur système pour ajouter des contacts (tous valides) :
Intent intent = newIntent(Intent.ACTION_INSERT_OR_EDIT);
intent.setType(People.CONTENT_ITEM_TYPE);
intent.putExtra(Contacts. Intents.Insert.NAME , "Mon nom");
intent.putExtra(Contacts.Intents.Insert.PHONE, "+1234567890");intent.putExtra(Contacts.Intents.Insert.EMAIL, "com@com.com");    
intent.putExtra(Contacts.Intents.Insert.EMAIL_TYPE, Contacts.ContactMethodsColumns.TYPE_WORK);    
startActivity(intent);

//=================================== =============================

//20.打开另一程序 
Intention i = nouveau Intention();     
ComponentName cn = new ComponentName("com.example.jay.test",     
"com.example.jay.test.MainActivity");     
i.setComponent(cn);     
i.setAction("android.intent.action.MAIN");     
startActivityForResult(i, RESULT_OK);

//================================= ===============================

//21.打开录音机
Intent mi = nouveau Intention (Media.RECORD_SOUND_ACTION);     
startActivity(mi);

//=================================== =============================

//22.从google搜索内容 
Intent intent = nouveau Intention();     
intent.setAction(Intent.ACTION_WEB_SEARCH);     
intent.putExtra(SearchManager.QUERY,"searchString")     
startActivity(intent);

//=================== =============================================

6.Action在哪里查?

本来想直接贴以前收集到的Intent Action的,后来想想还是算了,授之以鱼,还不如授之以渔, 如果你下载了Android的文档的话,可以在下述路径:

sdk-->docs-->référence-->android--->content--->Intent.html

找到这个玩意,然后从这个Constantes开始就是了:

11.png

遇到陌生的自己来这里查即可~


本节小结:

好的,关于Intent的基本使用就到这里,下一节我们会来继续学习在日常开发中使用Intent可能会遇到 的一些问题或者说需求吧,敬请期待,谢谢~