Présentation de cette rubrique :
Après la fin de la section précédente, cela signifie que nous avons fini d'apprendre les quatre composants principaux d'Android ~, et ce que nous voulons apprendre dans cette section est le hub entre les quatre composants principaux - Intent (intention), le pont d'Android communication, par exemple, on peut passer :
- startActivity (Intent)/ startActivityForResult (Intent) : pour démarrer une activité
- startService (Intent)/ bindService (Intent) : pour démarrer un Service
- sendBroadcast : Envoie une diffusion au BroadcastReceiver spécifié
- De plus, n'oubliez pas que lorsque nous avons enregistré les quatre composants majeurs, nous avons écrit beaucoup d' Intent-Filter ~
Eh bien, 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 par le nom du composant, tel que startActivity(new Intent(A.this,B.class)); Il n'y a qu'un seul composant à démarrer à chaque fois~
- Intention 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 correspond au filtre d'intention des composants liés à AndroidManifest.xml et correspond aux composants qui répondent les attributs un par un. Lorsque plus d'un Lorsque vous êtes satisfait, une boîte de dialogue apparaîtra nous permettant de choisir lequel commencer~
2. Sept attributs d'intention :
1) ComponentName (nom du composant)
2) Action (action)
3) Catégorie (catégorie)
4) Données (données), Type (type MIME)
5) Suppléments (extra)
6) Drapeaux (drapeau)
3. Exemples d'utilisation d'intention explicite :
C'est très utilisé, voici donc un exemple :
Exemple 1 : Cliquez sur le bouton pour revenir à l'interface d'accueil : diagramme d'effet courant :
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 : diagramme d'effet courant :
Code de base :
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
1) Exemples d'Intents implicites pour des actions prédéfinies :
Exemple de code : après avoir cliqué sur le bouton, toutes les activités dont l'action est AFFICHER sont masquées et ensuite sélectionnées par l'utilisateur :
Code de base :
Créez la mise en page de la deuxième activité et l'activité correspondante, ajoutez le code suivant dans l'événement de clic de bouton de la première activité :
Intent it = new Intent(); it.setAction(Intent.ACTION_VIEW); startActivity(it);
Enfin, ajoutez le code suivant à l'intention de la deuxième activité :
<activity android:name=".SecondActivity" android:label="第二个Activity"> <intent-filter> <action android:name="android.intent.action.VIEW"/> <category android:name=" android.intent.category.DEFAULT"/> </intent-filter> </activity>
Diagramme d'effet de course :
2) Exemples d'intentions implicites pour les actions personnalisées :
Exemple de code : utilisez une action et une catégorie personnalisées pour activer une autre activité
Code principal : créez la mise en page de la deuxième activité et l'activité correspondante, ajoutez le code suivant dans l'événement de clic de bouton de la première activité :
Intent it = new Intent(); it.setAction("mon_action"); it.addCategory("my_category"); startActivity(it);
Enfin, ajoutez le code suivant à l'intention de la deuxième activité :
<activity android:name=".SecondActivity" android:label="第二个Activity"> <intent-filter> <action android:name="my_action"/> <category android:name="my_category"/> <category android:name="android.intent.category.DEFAULT"/> </intent-filter> </activity>
Notez que bien que nous ayons personnalisé une catégorie, nous devons encore ajouter cette valeur par défaut, sinon une erreur sera signalée :
<category android:name="android.intent.category.DEFAULT"/>
5. Collecte d'intentions système couramment utilisée
Publions une collection d'intentions système couramment utilisées. S'il n'y en a pas ci-dessus, n'hésitez pas à 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 SMS // Envoyer un SMS message avec "Hello" à 10086 Uri uri = Uri.parse ("smsto:10086"); Intent intent = new Intent(Intent.ACTION_SENDTO, uri); intent.putExtra("sms_body", "Hello"); startActivity(intent ); //3. Envoyer un MMS (équivalent à envoyer avec un SMS joint) 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 . Ouvrez le navigateur : // Ouvrir la page d'accueil de Baidu Uri uri = Uri.parse("http://www.baidu.com"); Intent intent = new Intent(Intent.ACTION_VIEW, uri); startActivity(intent); // ===== ============================================ ======= ======== //5. Envoyer un e-mail : (le service Google est castré !!!!) // Envoyer un e-mail à quelqu'[email protected] Uri uri = Uri.parse("mailto : quelqu'[email protected] ); Intent intent = new Intent(Intent.ACTION_SENDTO, uri); startActivity(intent); // Envoyer un e-mail à quelqu'[email protected] avec le contenu de "Bonjour" Intent intent = new Intent(Intent.ACTION_SEND); intention. intent.putExtra(Intent.EXTRA_EMAIL, "quelqu'[email protected]"); intent.putExtra(Intent.EXTRA_SUBJECT, "Sujet"); intent.putExtra(Intent.EXTRA_TEXT, "Bonjour"); intention.setType("text/plain"); startActivity (intention); // 给多人发邮件 Intent intent=new Intent(Intent.ACTION_SEND); Chaîne[] tos = {"[email protected]", "[email protected]"} ; // 收件人 String[] ccs = {"[email protected]", "[email protected]"} ; // 抄送 String[] bccs = {"[email protected]", "[email protected]"} ; // 密送 intent.putExtra(Intent.EXTRA_EMAIL, tos); intention.putExtra(Intent.EXTRA_CC, ccs); intention.putExtra(Intent.EXTRA_BCC, bccs); intent.putExtra(Intent.EXTRA_TEXT, "Bonjour"); intention.setType("message/rfc822"); startActivity (intention); //=================================== ==== ============================== //6. Afficher la carte : // Ouvrir Google Maps Chine Pékin emplacement (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. Planification du chemin // Planification du chemin : d'un lieu à Pékin (39,9 de latitude nord, 116,3 de longitude est) à un lieu de 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ère tous les fichiers audio de la carte SD, puis joue la première chanson =-= Uri uri = Uri.withAppendedPath(MediaStore.Audio.Media.INTERNAL_CONTENT_URI, "1"); Intent intent = new Intent(Intent.ACTION_VIEW , uri) ; startActivity(intention); //======================================= ====== ======================= //9. Ouvrez l'appareil photo pour prendre des photos : // Ouvrez le programme de l'appareil photo Intention intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(intent, 0 ); // Obtenir les données de la photo Bundle extras = intent.getExtras(); Bitmap bitmap = (Bitmap) extras.get("data"); //Another : //Appelez l'application de l'appareil photo 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. Récupérer et couper l'image // Récupérer et couper l'image Intent intent = new Intent(Intent.ACTION_GET_CONTENT); intent.setType("image/*"); intent.putExtra("crop", "true") ; // Activer l'intention de coupe.putExtra ("aspectX", 1); // Le rapport d'aspect de la coupe est de 1:2 intent.putExtra("aspectY",2);putExtra("aspectY", 40); intention.putExtra("scale", true); intent.putExtra("noFaceDetection", true); intent.putExtra("output", Uri.parse("file:///mnt/sdcard/temp")); startActivityForResult(intent, 0); //=============================== === ==================================== //11. Ouvrir Google Market // Ouvrir Google Market pour accéder directement à la page de détail du programme Uri uri = Uri.parse("market://details?id=" + "com.demo.app"); Intent intent = new Intent(Intent.ACTION_VIEW, uri); startActivity (intention); //= =========================================== ========= ============ //12. Entrez dans l'interface de réglage du téléphone mobile : // Entrez dans l'interface de réglage du réseau sans fil (d'autres peuvent être utilisés par analogie) Intention intention = new Intent(android.provider.Settings.ACTION_WIRELESS_SETTINGS); startActivityForResult(intent, 0); //============================ ================== ======================= //13. Installer apk : Uri installUri = Uri.fromParts("package", "xxx", null); returnIt = new Intent(Intent.ACTION_PACKAGE_ADDED, installUri); //================================================ =============== //14.apk: Uri uri = Uri.fromParts("package", strPackageName, null); Intent it = new Intent(Intent.ACTION_DELETE, uri); startActivity(it); //================================================ =============== //15.发送附件: Intent it = new Intent(Intent.ACTION_SEND); it.putExtra(Intent.EXTRA_SUBJECT, "Le texte de l'objet de l'e-mail"); it.putExtra(Intent.EXTRA_STREAM, "file:///sdcard/eoe.mp3"); sendIntent.setType("audio/mp3"); startActivity(Intent.createChooser(it, "Choose Email Client")); //================================================ =============== //16. Entrez la page de contact : Intent intent = new Intent(); intent.setAction(Intent.ACTION_VIEW); intent.setData(People.CONTENT_URI); startActivity(intent); //======== ================================================= == ===== //17. Afficher le contact spécifié : 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. Appelez l'éditeur système pour ajouter des contacts (valable pour la version supérieure du SDK) : //it.setType(Contacts.CONTENT_ITEM_TYPE); Intent it = newIntent(Intent.ACTION_INSERT_OR_EDIT); it.setType("vnd.android.cursor.item/contact"); it.putExtra("nom","monNom"); it.putExtra(android.provider.Contacts.Intents.Insert.COMPANY, "organisation"); it.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.provider.Contacts.Intents.Insert.JOB_TITLE,"title"); startActivity(it); //================================================ =============== Intent intent = newIntent(Intent. ACTION_INSERT_OR_EDIT ); intention.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.PHONE_TYPE,Contacts.PhonesColumns.TYPE_MOBILE); intent.putExtra(Contacts.Intents.Insert.EMAIL, "[email protected]"); intent.putExtra(Contacts.Intents.Insert.EMAIL_TYPE, Contacts.ContactMethodsColumns.TYPE_WORK); startActivity (intention); //================================================ =============== //20.打开另一程序 Intent i = new Intent(); ComponentName cn = new ComponentName("com.example.jay.test", "com.example.jay.test. i.setComponent(cn); i.setAction("android.intent.action.MAIN"); startActivityForResult(i, RESULT_OK); //================================== ==== =============================== //21. Ouvrez l'enregistreur Intent mi = new Intent(Media .RECORD_SOUND_ACTION); startActivity(mi) ; //======================================= ========== ================ //22. Rechercher du contenu sur Google Intent intent = new Intent(); intent.setAction(Intent.ACTION_WEB_SEARCH) ; intent.putExtra(SearchManager.QUERY," searchString") startActivity(intent); //============================== ============== =========================
6. Où puis-je trouver l'Action ?
A l'origine, je voulais poster l'action d'intention collectée avant, mais après réflexion, il vaut mieux lui apprendre à pêcher que lui apprendre à pêcher. Si vous avez téléchargé le document Android, vous pouvez le trouver dans le chemin suivant :
sdk-->docs-->référence-->android--->contenu--->Intent.html
Trouvez cette chose et commencez avec ces constantes :
Lorsque vous rencontrez des étrangers, vous pouvez vérifier ici ~