Accueil Médias sociaux Code couramment utilisé dans Android Application Development - dummies

Code couramment utilisé dans Android Application Development - dummies

Table des matières:

Vidéo: Fun with ArrayMaps (Android Performance Patterns Season 3 ep1) 2025

Vidéo: Fun with ArrayMaps (Android Performance Patterns Season 3 ep1) 2025
Anonim

" Mon application nécessite un récepteur de diffusion. Quelqu'un peut-il me rappeler comment je peux coder un récepteur de radiodiffusion? Et pendant que vous y êtes, comment une activité retourne-t-elle un résultat? Oh, diable. Où puis-je trouver tout ça rapidement? "

Avoir des exemples de types de code utilisés dans le développement d'applications Android à portée de main peut être d'une grande aide. Vous trouverez beaucoup d'exemples ici.

Activités

Voici une activité qui commence une autre activité:

public class CheatSheetActivity extends Implémentation d'implements OnClickListener {Button button1; static final String MY_ACTION = "com.allmycode.action"; static final String MY_URI = "mon_schéma: mon_scheme_specific_part"; @Override public void onCreate (Bundle savedInstanceState) {super. onCreate (savedInstanceState); setContentView (R disposition.principale); button1 = (Bouton) findViewById (R, id, bouton1); button1. setOnClickListener (this);} public void onClick (Voir arg0) {Intention intention = new Intent (); intention. setAction (MY_ACTION); intention. setData (Uri, parse (MY_URI)); startActivity (intention);}}

Et n'oubliez pas: lorsque vous créez une nouvelle classe d'activité, vous devez ajouter un élément correspondant à votre AndroidManifest. fichier xml. Le filtre d'intention de l'élément OtherActivity ressemble à ceci:


Pour obtenir le résultat d'une activité, ajoutez le code suivant (ou quelque chose qui lui ressemble) à votre application:

final int CODE_NUMBER = 42; final String CLASSNAME = "CheatSheetActivity"; public void onClick (Voir arg0) {Intention intention = new Intent (); intention. setAction (MY_ACTION); intention. setData (Uri, parse (MY_URI)); startActivityForResult (intention, CODE_NUMBER);} void protégé onActivityResult (int codeNuméro, int resultCode, intention d'intention) {if (resultCode == RESULT_OK) {if (codeNumber == CODE_NUMBER) {Log. i (CLASSNAME, intention. getData (). getSchemeSpecificPart ());}}}

Et dans l'activité qui crée le résultat, ajoutez le code du type suivant:

Intention intention = new Intention (); intention. setData (Uri.parse ("résultat: bonjour")); setResult (RESULT_OK, intention); terminer();

Services

Un service effectue généralement son travail sans déranger (ni même informer) l'utilisateur. Par exemple, un service de cours boursier peut atteindre le Web et obtenir les derniers prix des choix favoris de l'utilisateur. L'activité d'une autre application peut obtenir des données du service et afficher les données sur l'écran de l'appareil.

Le code suivant est un service météo complet (mais pas très précis):

public class MyWeatherService extends Service {Messenger messengerToClient = null; MyIncomingHandler myIncomingHandler = new MyIncomingHandler (); Messenger messengerToService = nouveau Messenger (myIncomingHandler); @Override public IBinder onBind (intention intentionnelle) {return messengerToService.getBinder ();} classe MyIncomingHandler extends Gestionnaire {@Override public void handleMessage (message incomingMessage) {messengerToClient = incomingMessage. répondre à; Bundle réponse = new Bundle (); répondre. putString ("météo", "Il fait noir la nuit."); Message replyMessage = Message. obtenir(); message de réponse. setData (réponse); essayez {messengerToClient. send (replyMessage);} catch (RemoteException e) {e. printStackTrace ();}}}}

Dans un autre paquet, vous mettez le code pour appeler le service météo. Voici un exemple de code:

public class ServiceConsumerActivity extends Implémentation implémente OnClickListener {Messenger messengerToService = null; MyIncomingHandler myIncomingHandler = new MyIncomingHandler (); Messenger messengerFromService = nouveau Messenger (myIncomingHandler); Connexion ServiceConnection = new MyServiceConnection (); SharedPreferences prefs; boolean isBound = faux; void bind () {Intention intention = new Intent (); intention. setAction ("com.allmycode.Météo"); isBound = bindService (intention, connexion, contexte BIND_AUTO_CREATE);} void public queryService () {if (isBound) {Bundle bundle = nouvel ensemble (); paquet. putString ("emplacement", "Philadelphia"); Message message = Message. obtenir(); message. replyTo = messengerFromService; message. setData (bundle); essayez {messengerToService. send (message);} catch (RemoteException e) {e. printStackTrace ();}} else {textView1. setText (R chaîne.numéro_service);}} class MyIncomingHandler extends Handler {@Overide public void handleMessage (message msg) {Bundle bundle = msg. getData (); textView1. setText (bundle.getString ("météo"));}} void unbind () {if (isBound) {unbindService (connexion); isBound = false;}} classe MyServiceConnection implémente ServiceConnection {public void onServiceConnected (nomClassName className, classeur IBinder) {messengerToService = nouveau Messenger (classeur);} public void onServiceDisconnected (nom_composant n) {messengerToService = null;}} // I don ' t incluez la méthode onCreate ou la méthode // onClick dans cet exemple.}

Bien sûr, aucune application ne survit sans certains éléments dans le fichier manifeste. Pour enregistrer le service de cette section, vous avez besoin d'un élément du type suivant:



Récepteurs de diffusion

Lorsque vous diffusez une émission, vous lancez une intention dans la nature. Les récepteurs de diffusion avec des filtres d'intention compatibles se réveillent et font quelque chose d'utile avec les informations diffusées. (Après avoir fait quelque chose avec les informations de diffusion, le récepteur se rendormit Dans ma prochaine incarnation, je veux être un récepteur de diffusion.)

Pour créer votre propre récepteur de diffusion, vous étendez la classe BroadcastReceiver d'Android et vous déclarez un onReceive méthode. Par exemple, le code suivant répond aux diffusions correspondantes:

Une autre application crée une diffusion avec du code du type suivant:

Intention intention = new Intention (); intention. setAction ("com.allmycode.Action"); sendBroadcast (intention);

Vous pouvez enregistrer un récepteur de diffusion dans votre AndroidManifest.Fichier xml:

Pour plus de flexibilité, vous pouvez enregistrer un récepteur dans votre code Java. Le code Java suivant fait essentiellement ce que l'élément dans un AndroidManifest. Le fichier xml fait:


Filtre IntentFilter = new IntentFilter (); filtre. addAction ("com.allmycode.Action"); registerReceiver (nouveau MyReceiver (), filtre);

Fournisseurs de contenu

Le fournisseur de contenu d'une application met les données à la disposition d'autres applications exécutées sur le même appareil. L'interface du fournisseur ressemble à l'interface d'une base de données, avec des tables, des lignes, des curseurs et tout ce qu'il y a de mieux. Par exemple, le code pour interroger un fournisseur de contenu ressemble à ceci:

public Cursor query (Uri uri, Chaînes [] colonnes, String whereClause, Chaîne [] whereArgs, Chaîne sortOrder) {Curseur cursor = null; code int = uriMatcher. match (uri); if (code == 1) {curseur = db. query (SIMPLETABLE, colonnes, whereClause, whereArgs, null, null, sortOrder);} else if (code == 2) {String [] columnNames = {"_id", "nom", "montant"}; String [] rowValues ​​= {"Table", "4", "2"}; MatrixCursor matrixCursor = nouveau MatrixCursor (columnNames); matrixCursor. addRow (rowValues); cursor = matrixCursor;} return cursor;}

Fragments

Un fragment

est comme une vue - une chose visible que vous pouvez afficher dans une activité. Mais contrairement à une vue, un fragment a ses propres méthodes de cycle de vie. Ainsi, Android peut créer une petite pile de fragments à l'intérieur d'une activité. Lorsque l'utilisateur appuie sur le bouton Retour, Android supprime un fragment de la pile. (S'il n'y a aucun fragment à faire apparaître, Android supprime toute l'activité de la pile des tâches.) Vous pouvez placer un fragment dans la disposition de trame suivante: Pour mettre un fragment dans la mise en page,. Voici à quoi ressemble une transaction de fragment:

DocsFragment docsFragment = DocsFragment. newInstance (index); FragmentManager fragmentManager = getFragmentManager (); FragmentTransaction fragmentTransaction = fragmentManager. beginTransaction (); fragmentTransaction. remplacer (D. id docs, docsFragment); fragmentTransaction. addToBackStack (null); fragmentTransaction. commettre();


Intentions et filtres d'intention

Lorsqu'une intention correspond au bon filtre d'intention, le résultat est une correspondance au ciel. Mais les règles pour faire correspondre les intentions avec les filtres sont compliquées. Les règles se lisent comme les clauses légales d'un contrat prénuptial.

Vous pouvez utiliser des méthodes Java pour décrire une intention. Voici quelques méthodes souvent utilisées:

setAction:

Définit l'action de l'intention. (Une intention peut avoir une seule action.)

  • addCategory: Ajoute une catégorie à l'intention. (Une intention peut avoir plusieurs catégories.)

  • setData: Définit l'URI de l'intention et supprime le type MIME de l'intention (si l'intention a un type MIME).

  • setType: Définit le type MIME de l'intention et supprime l'URI de l'intention (si l'intention a un URI).

  • setDataAndType: Définit à la fois l'URI de l'intention et le type MIME de l'intention. Selon les docs, "cette méthode devrait très rarement être utilisée. "

  • Vous pouvez également utiliser un code XML pour décrire une intention. Dans l'URI // www.allmycode. com: 80 / Android, le régime est http, l'hôte est www. allmycode. com, le port est de 80, et le chemin est Android. L'autorité (qui n'est pas l'un des attributs d'un élément, mais qui est utile à connaître) est www. allmycode. com: 80.

Vous définissez généralement les valeurs d'un filtre d'intention dans AndroidManifest. fichier xml. Mais dans le code Java, l'android. contenu. La classe IntentFilter a beaucoup de méthodes utiles. Voici quelques-uns d'entre eux:


addAction:

Ajoute une action au filtre.

  • addCategory: Ajoute une catégorie au filtre.

  • addDataScheme: Ajoute un schéma au filtre.

  • addDataAuthority: Ajoute une autorité au filtre.

  • addDataPath: Ajoute un chemin au filtre.

  • addDataType: Ajoute un type MIME au filtre.

  • Un filtre d'intention peut comporter plusieurs actions, plusieurs catégories, etc. Voici une brève liste d'exigences pour une correspondance entre un filtre d'intention et un filtre d'intention. Cette liste n'est pas complète, donc, si vous voulez une liste complète, vous devriez acheter

Développement d'applications Android All-in-One For Dummies

par Barry Burd. Si une intention a une action, afin de correspondre à l'intention, un filtre d'intention doit avoir une action identique. Le filtre d'intention peut avoir des actions supplémentaires. Aucune de ces actions supplémentaires n'a aucun effet sur la correspondance. Si une intention a des catégories, afin de correspondre à l'intention, un filtre d'intention doit avoir ces catégories (et peut-être plus).

  • Si une intention a un type MIME, afin de correspondre à l'intention, un filtre d'intention doit avoir un type MIME correspondant. Le filtre d'intention peut avoir des types MIME supplémentaires. Aucun de ces types MIME supplémentaires n'a aucun effet sur la correspondance.

  • Si un filtre d'intention a des types MIME, afin de correspondre au filtre d'intention, une intention doit avoir un type MIME et le type MIME de l'intention doit correspondre à l'un des types MIME du filtre.

  • Dans une certaine mesure, la correspondance des types MIME peut impliquer des caractères génériques et des expressions régulières.

  • Si une intention a un schéma d'URI, afin de correspondre à l'intention, un filtre d'intention doit avoir un schéma d'URI correspondant.

  • Si un filtre d'intention a des schémas d'URI, afin de correspondre au filtre d'intention, une intention doit avoir un schéma d'URI et le schéma d'URI de l'intention doit correspondre à l'un des schémas d'URI du filtre.

  • Pour terminer cette liste, copiez les deux dernières règles, en changeant un ou deux mots dans chacune des copies:

  • Si une intention a un URI

host

  • , pour correspondre à intention, un filtre d'intention doit avoir un URI hôte correspondant. Si un filtre d'intention a URI hosts

  • , pour correspondre au filtre d'intention, une intention doit avoir un URI host et l'URI de l'intention < doit correspondre à l'un des URI host s du filtre. Si une intention a un URI port ,

  • pour correspondre à l'intention, un filtre d'intention doit avoir un URI port correspondant. Si un filtre d'intention a URI ports ,

  • pour correspondre au filtre d'intention, une intention doit avoir un port URI et le port URI de l'intention < doit correspondre à l'un des URI du filtre t s du filtre. Si une intention a un

  • correspondant . Si un filtre d'intention possède des chemins URI , pour correspondre au filtre d'intention, une intention doit avoir un chemin URI

  • et le chemin URI de l'intention

Code couramment utilisé dans Android Application Development - dummies

Le choix des éditeurs

Comment travailler avec Photoshop CS6 Images brutes - mannequins

Comment travailler avec Photoshop CS6 Images brutes - mannequins

Certaines caméras capturent des images dans des formats bruts. Photoshop CS6 peut traiter ces images dans des images formatées. Il vous permet également de travailler avec eux de différentes manières que les images déjà traitées. Voici quelques détails sur le traitement des images brutes par Photoshop. Préférences Camera Raw: Voici les détails de ces préférences: Quand une Camera Raw ...

Comment utiliser Photoshop CC Fusionner vers HDR Pro - mannequins

Comment utiliser Photoshop CC Fusionner vers HDR Pro - mannequins

Lorsque vous avez les expositions de que vous voulez créer votre chef-d'œuvre HDR, vous devez les assembler en utilisant la fonction Fusionner vers HDR Pro dans Photoshop CC. Vous pouvez ouvrir Merge to HDR Pro soit dans le menu Fichier → Automatiser de Photoshop, soit vous pouvez sélectionner les images à utiliser dans Bridge et utiliser Bridge ...

Comment utiliser les masques rapides dans Photoshop CS6 - les mannequins

Comment utiliser les masques rapides dans Photoshop CS6 - les mannequins

Comme vous pouvez probablement le deviner d'après le nom , Les masques rapides de Photoshop CS6 vous permettent de créer et de modifier des sélections rapidement. Bien que vous ne créiez pas vraiment un masque de produit final en soi, la façon dont vous allez obtenir votre sélection est "semblable à un masque. "Ils sont également conviviaux, car ils vous permettent de voir votre image pendant que vous travaillez. ...

Le choix des éditeurs

Bitmap et images vectorielles dans Adobe Photoshop CS5 - mannequins

Bitmap et images vectorielles dans Adobe Photoshop CS5 - mannequins

Capacité de photoshop Creative Suite 5 à utiliser à la fois l'image bitmap et Les images vectorielles vous offrent, en tant que concepteur, des opportunités incroyables en combinant les deux technologies. Vous avez peut-être déjà découvert que Photoshop fonctionne un peu différemment de la plupart des autres applications. Pour créer ces gradations douces d'une couleur à l'autre, Photoshop tire parti des pixels. ...

Capturer des images à fusionner vers HDR Pro - mannequins

Capturer des images à fusionner vers HDR Pro - mannequins

Pour fusionner plusieurs expositions en une image HDR en utilisant Photoshop CC, vous devez avoir plusieurs expositions avec lesquelles travailler. Il y a deux façons de relever le défi: Vous pouvez prendre une série d'expositions, ou photographier une image brute et faire plusieurs copies avec différentes valeurs d'exposition. Si vous voulez absolument le meilleur ...

Modifiez le pinceau dans le panneau Outils Photoshop CS5 - les nuls

Modifiez le pinceau dans le panneau Outils Photoshop CS5 - les nuls

Regroupés dans le panneau Outils de Photoshop Creative Suite 5 sont les outils utilisés pour peindre et retoucher des images. Lorsque vous cliquez pour sélectionner différents outils de peinture, notez le menu Pinceau (deuxième à partir de la gauche) dans la barre des options. Cliquez sur la flèche pour ouvrir le sélecteur Pinceaux prédéfinis. Utilisez le curseur Diamètre principal pour ...

Le choix des éditeurs

Comment utiliser plusieurs styles avec CSS3 - mannequins

Comment utiliser plusieurs styles avec CSS3 - mannequins

Comprendre les règles d'héritage dans CSS3 vous aide à créer des sites intéressants nécessitant un minimum de maintenance. En suivant ces règles, lorsque la maintenance est requise, vous devez normalement effectuer un seul changement, plutôt que de modifier individuellement des centaines d'éléments. Cela vaut la peine d'expérimenter, pour que vous puissiez comprendre tous les effets de l'héritage ...

Comment utiliser l'éditeur HTML CoffeeCup - les nuls

Comment utiliser l'éditeur HTML CoffeeCup - les nuls

Comme outil principal des pages Web WYSIWYG, CoffeeCup HTML Editor possède toutes les fonctionnalités de base importantes dont vous avez besoin pour créer des pages Web de base. En utilisant ces fonctionnalités, vous pouvez créer et éditer des pages Web sans voir les balises HTML, glisser et déposer des liens vers d'autres sites Web sans taper l'URL ou le chemin, couper et coller ...

Comment utiliser l'espace blanc dans votre conception de site Web - les nuls

Comment utiliser l'espace blanc dans votre conception de site Web - les nuls

Pages Web qui ont des tonnes des choses emballées dans tous les coins et recoins rendent la page difficile à lire et ne donnent pas l'occasion à l'œil de se reposer. Lors de la création d'une mise en page Web, prévoyez toujours un espace libre autour de vos éléments de conception. Les espaces ouverts créent non seulement une atmosphère plus invitante ...