Programme Android pour changer de mode. Basculer entre les applications sous Android. Utilisez adb pour sauvegarder le logiciel sur votre ordinateur

L'onglet Lanceur, qui s'ouvre depuis l'écran d'accueil, contient des icônes pour toutes les applications installées sur votre téléphone, y compris les applications téléchargées et installées depuis Marché Android ou d'autres sources.

Lorsque vous ouvrez une application, les autres applications que vous utilisez ne s'arrêtent pas : elles continuent de s'exécuter, de jouer de la musique, d'afficher des pages Web, etc. Vous pouvez rapidement basculer entre les applications pour travailler avec plusieurs applications à la fois. salle d'opération Système Android et les applications qui s'exécutent dessus communiquent afin que les applications inutilisées ne consomment pas de ressources. Les applications sont arrêtées et redémarrées si nécessaire. Par conséquent, il n’y a aucune raison d’arrêter les applications sauf si vous êtes sûr que l’application téléchargée ne fonctionne pas correctement. Pour plus de détails sur la manière dont les applications utilisent la mémoire et sur la façon de gérer ces applications, voir .

Découvrez comment rechercher et installer des applications supplémentaires pour votre téléphone (y compris des outils de performances, utilitaires, jeux, documents de référence et autres types logiciel) voir section.

Ouverture et fermeture du Launchpad

Si vous avez plus d'applications ouvertes que ne peut en contenir le lanceur, vous pouvez faire défiler le lanceur vers le haut ou vers le bas pour voir toutes les applications.

Vous pouvez ajouter une icône d'application à votre écran d'accueil en appuyant longuement sur l'icône du lanceur jusqu'à ce qu'elle vibre, puis en faisant glisser l'icône vers l'emplacement souhaité sur l'écran d'accueil.

Le Launchpad se ferme automatiquement lorsque vous appuyez sur une icône pour ouvrir une application ou déplacez une icône du Launchpad vers l'écran d'accueil.

Ouverture d'une application

  • Cliquez sur l'icône de l'application dans le panneau Lanceur.
  • Appuyez sur l'icône de l'application sur l'écran d'accueil.

Passer à une application récemment utilisée

Une petite fenêtre s'ouvrira contenant les icônes de toutes les applications récemment utilisées.

  • Appuyez sur une icône pour ouvrir son application associée.

Ou cliquez sur le bouton Dos pour revenir à l'application actuelle.

Je crée une application qui doit pouvoir basculer entre les applications ouvertes par l'utilisateur (par exemple, les applications dans le menu multitâche), j'ai le nom de composant de 10 nouvelles applications et je peux les démarrer (c'est-à-dire basculer vers elles). ) comme ça:

Intention = nouvelle intention (); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intention.setComponent(info); startActivity (intention);

Cependant, lorsque j'essaie de modifier sur Facebook (et probablement certaines applications similaires), une autorisation spécifique est demandée :

java.lang.SecurityException : refus d'autorisation : intention de démarrage ( flg=0x10000000 cmp=com.facebook.katana/.activity.FbFragmentChromeActivity ) à partir de ProcessRecord(42310bc0 8578:com.javanut13.multitaskheads/u0a10095) (pid=8578, uid=10095 ) a besoin com.facebook.permission.prod.FB_APP_COMMUNICATION

Existe-t-il un moyen de contourner ce problème en passant à l'application au lieu de la démarrer ? Puis-je simplement envoyer le focus vers une autre application ?

0

1 réponses

Si vous n'avez pas l'autorisation, je pense que vous ne pouvez démarrer l'activité d'une autre application que lorsque son attribut "export" est défini sur true. Une application de type Facebook peut définir ce paramètre sur false et ne pas autoriser l'autre application à accéder à son activité.

Je n'ai pas testé cela seul, mais vous pouvez essayer les codes suivants :

Intention extApp= getPackageManager().getLaunchIntentForPackage(facebook-package-name); this.startActivity(extApp);

J'espère que cela t'aides.

Une application ne comprend pas toujours un seul écran. Par exemple, nous avons créé très programme utile et l'utilisateur veut savoir qui est son auteur. Il clique sur le bouton « À propos » et est redirigé vers nouvel écran, où se trouvent des informations utiles sur la version du programme, l'auteur, l'adresse du site Web, le nombre de chats que possède l'auteur, etc. Considérez l'écran d'activité comme une page Web avec un lien vers une autre page. Si vous regardez le code dans le fichier MainActivity.java des leçons précédentes, vous verrez que notre classe Activité principale s'applique également à Activité(ou ses héritiers) ou, plus précisément, hérité de lui.

La classe publique MainActivity étend AppCompatActivity

Comme vous pouvez le deviner, nous devrions créer une nouvelle classe qui pourrait être similaire à Activité principale puis y passer d'une manière ou d'une autre lorsque le bouton est enfoncé.

Pour l'expérimentation, nous reprendrons le programme de la première leçon et utiliserons un bouton pour expérimenter (ou créer nouveau projet avec un seul bouton sur l'écran). Créons ensuite un nouveau formulaire pour afficher des informations utiles. Par exemple, montrons à l'utilisateur ce que fait un chat lorsqu'il va à gauche et à droite. D'accord, il s'agit d'informations très importantes qui fournissent la clé pour démêler l'Univers.

Nous créerons une nouvelle activité manuellement, bien que le studio dispose de modèles prêts à l'emploi. Mais il n'y a rien de compliqué là-bas et pour une meilleure compréhension il est utile de tout faire à la main.

Créons un nouveau fichier de balisage XML activité_à propos.xml dans le dossier résolution/mise en page. Faites un clic droit sur le dossier mise en page et sélectionnez parmi menu contextuel Nouveau | Fichier de ressources de mise en page. Une boîte de dialogue apparaîtra. Dans le premier champ, entrez le nom du fichier activité_à propos. Dans le second, vous devez saisir l'élément racine. Par défaut c'est là ContrainteMise en page. Effacez le texte et entrez Vue de défilement. La saisie de quelques caractères suffit au studio pour proposer des options toutes faites, vous pouvez immédiatement appuyer sur Entrée sans attendre la saisie du mot complet :

Vous obtiendrez un espace correspondant dans lequel nous insérerons l'élément Affichage.

Les informations seront récupérées à partir des ressources, à savoir la ressource chaîne à propos_text. Désormais, il est surligné en rouge, signalant l’absence d’information. Il était possible d'appuyer sur Alt+Entrée et saisissez le texte dans la boîte de dialogue. Mais pour notre exemple, cette méthode ne fonctionnera pas, puisque notre texte sera multiligne, utilisant des caractères de contrôle. Alors faisons les choses différemment. Ouvrons le fichier res/values/strings.xml et saisissez manuellement le texte suivant :

Il y a un chêne vert près du Lukomorye ;\n Une chaîne dorée sur ce chêne :\n De jour comme de nuit chat scientifique\nTout tourne en rond en chaîne ;\nÇa va droite- la chanson commence,\n Gauche- il raconte un conte de fées.

Nous avons utilisé les balises de formatage de texte HTML les plus simples, comme , , . Pour notre exemple, il suffit de mettre en évidence en gras les mots qui se rapportent au chat et au sens du mouvement. Pour déplacer le texte vers une nouvelle ligne, utilisez des symboles \n. Ajoutons une autre ressource de chaîne pour le titre du nouvel écran :

À propos du programme

Nous avons compris les marquages. Ensuite, vous devez créer une classe pour la fenêtre À propos deActivity.java. Sélectionnez dans le menu Fichier | Nouveau | Classe Java et remplissez les champs obligatoires. Dans un premier temps, il suffit d'indiquer uniquement le nom. Ensuite, vous vous occuperez d'autres domaines.

Récupérons le blanc.

Désormais, la classe est presque vide. Ajoutons le code manuellement. La classe doit hériter d'une classe abstraite Activité ou ses proches comme FragmentActivité, AppCompatActivité etc. Ajoutons étend l'activité. La classe d'activité doit avoir une méthode onCréer(). Placez le curseur de la souris à l'intérieur de la classe et sélectionnez dans le menu Codes | Remplacer les méthodes(Ctrl+O). Dans la boîte de dialogue, nous recherchons la classe souhaitée ; vous pouvez taper les premiers caractères sur le clavier pour une recherche rapide. Dans la méthode créée, vous devez appeler la méthode setContentView(), qui chargera le balisage préparé sur l'écran. Nous aurons cette option.

Paquet ru.alexanderklimov.helloworld ; importer android.app.Activity ; importer android.os.Bundle ; /** * Créé par Alexander Klimov le 01/12/2014. */ classe publique AboutActivity extends Activity ( @Override protected void onCreate(Bundle savingInstanceState) ( super.onCreate(savedInstanceState); setContentView(R.layout.activity_about); ) )

Vient maintenant la partie la plus importante. Notre tâche est d'accéder à un nouvel écran lorsque nous cliquons sur un bouton du premier écran. Retournons en classe Activité principale. Écrivons un gestionnaire de clic de bouton :

Public void onClick(View view) ( Intent intent = new Intent(MainActivity.this, AboutActivity.class); startActivity(intent); )

Ici, j'ai utilisé la méthode de traitement des clics de bouton décrite dans la leçon.

Pour lancer un nouvel écran, vous devez créer une instance de la classe Intention et indiquer la classe actuelle dans le premier paramètre, et la classe vers laquelle aller dans le second, on a ceci À propos de l'activité. Après cela, la méthode est appelée startActivity(), qui lance un nouvel écran.

Si vous essayez maintenant de tester l'application dans l'émulateur, vous recevrez un message d'erreur. Qu'avons-nous fait de mal ? Nous avons raté une étape importante. Vous devez en enregistrer un nouveau Activité dans le manifeste AndroidManifest.xml. Recherchez ce fichier dans votre projet et double-cliquez dessus. La fenêtre d'édition du fichier s'ouvrira. Ajouter une nouvelle balise après la balise de fermeture pour la première activité. Tapez vous-même et utilisez activement les invites. Vous obtiendrez ce qui suit :

C'est là que la ressource chaîne s'avère utile about_title. On lance l'application, on clique sur le bouton et on obtient une fenêtre À propos du programme. Ainsi, nous avons appris à créer une nouvelle fenêtre et à l'appeler en cliquant sur un bouton. Et nous disposons d'un programme très pratique - désormais, nous aurons toujours à portée de main une idée de ce que fait le chat lorsqu'il part vers la gauche.

Encore une fois, notez que la deuxième classe d'activité créée doit hériter de la classe Activité ou similaires ( ListeActivité etc.), avoir un fichier de balisage XML (si nécessaire) et être spécifié dans le manifeste.

Après avoir appelé la méthode startActivity() une nouvelle activité sera lancée (dans ce cas À propos de l'activité), il deviendra visible et se déplacera vers le haut de la pile contenant les composants en cours d'exécution. Lors de l'appel d'une méthode finition()à partir d'une nouvelle activité (ou lorsque la touche retour matérielle est enfoncée), elle sera fermée et supprimée de la pile. Le développeur peut également accéder à l'activité précédente (ou à toute autre) en utilisant la même méthode. startActivity().

Créer un troisième écran - une méthode pour les paresseux

Les programmeurs, comme les chats, sont des créatures paresseuses. N'oubliez jamais que pour une activité, vous devez créer un balisage et une classe qui hérite de Activité, et n'oubliez pas d'enregistrer la classe dans le manifeste - eh bien.

Dans ce cas, sélectionnez dans le menu Fichier | Nouveau | Activité | Activité de base(ou autre modèle). Ensuite, la fenêtre familière pour créer une nouvelle activité apparaîtra. Remplissez les champs obligatoires.

Cliquez sur le bouton Finition et l'activité sera prête. Pour vérifier cela, ouvrez le fichier manifeste et recherchez une nouvelle entrée. Je ne parle même pas des fichiers de classe et de balisage, ils apparaîtront d'eux-mêmes devant vous.

Ajoutez vous-même un nouveau bouton à l'écran d'activité principal et écrivez le code pour passer à l'activité créée.

Dans un premier temps, je vous conseillerais de créer manuellement tous les composants nécessaires à la nouvelle activité afin que vous compreniez la relation entre la classe, le balisage et le manifeste. Et lorsque vous aurez compris, vous pourrez utiliser l'assistant de création d'activité pour accélérer votre travail.

Transmission de données entre activités

Nous avons utilisé un exemple simple pour appeler un autre écran d'activité. Parfois, vous devez non seulement appeler un nouvel écran, mais également y transférer des données. Par exemple, nom d'utilisateur. Dans ce cas, vous devez utiliser une zone spéciale données supplémentaires, que la classe a Intention.

Région données supplémentaires est une liste de paires valeur clé, qui est transmis avec l'intention. Les chaînes sont utilisées comme clés et tous les types de données primitifs, tableaux de primitives et objets de classe peuvent être utilisés pour les valeurs. Paquet et etc.

Pour transférer des données vers une autre activité, utilisez la méthode putExtra():

Intent.putExtra("Clé", "Valeur");

L'activité de réception doit appeler une méthode appropriée : getIntExtra(), getStringExtra() etc.:

Int count = getIntent().getIntExtra("nom", 0);

Reprenons l'exemple précédent. Nous avons déjà trois activités. La première activité aura deux champs de texte et un bouton. Apparence pourrait être le suivant :

Lors de la deuxième activité Deuxième activité définir l'élément Affichage, dans lequel nous afficherons le texte reçu de la première activité. Écrivons le code suivant pour la méthode onCréer()à la deuxième activité.

@Override protected void onCreate(Bundle savingInstanceState) ( super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); String user = "Animal"; String gift = "beignet trou"; TextView infoTextView = (TextView)findViewById( R .id.textViewInfo); infoTextView.setText(user + " , on vous a donné " + cadeau); )

Si nous exécutons maintenant le programme et appelons simplement la deuxième fenêtre, comme cela a été décrit dans la première partie de l'article, nous verrons alors l'inscription par défaut Animal, ils t'ont tendu un trou de beignet. D'accord, c'est assez ennuyeux de recevoir de tels messages.

Corrigeons la situation. Ajoutez le code à la première activité :

Public void onClick(View view) ( EditText userEditText = (EditText) findViewById(R.id.editTextUser); EditText giftEditText = (EditText) findViewById(R.id.editTextGift); Intent intent = new Intent(MainActivity.this, SecondActivity. class); // dans la clé du nom d'utilisateur, nous insérons le texte du premier champ de texte intent.putExtra("username", userEditText.getText().toString()); // dans la clé cadeau, nous insérons le texte du deuxième champ de texte intent.putExtra("gift ", giftEditText.getText().toString()); startActivity(intent); )

Nous avons placé l'objet dans un conteneur spécial Intention deux clés avec des valeurs extraites des champs de texte. Lorsque l'utilisateur saisit des données dans les champs de texte, elles entreront dans ce conteneur et seront transmises à la deuxième activité.

La deuxième activité doit être prête à recevoir chaleureusement les messages suivants (en gras).

// Valeurs par défaut String user = "Animal" ; Cadeau de ficelle = « trou de beignet » ; user = getIntent().getExtras().getString("nom d'utilisateur"); cadeau = getIntent().getExtras().getString("cadeau"); TextView infoTextView = (TextView)findViewById(R.id.textViewInfo); infoTextView.setText(user + " , on vous a offert " + cadeau);

Désormais, le message semble moins offensant, et même agréable pour certains. Dans les exemples complexes, il est conseillé d'ajouter une vérification lors du traitement des données. Il peut y avoir des situations où vous lancez une deuxième activité avec des données vides de type nul, ce qui peut provoquer le crash de l'application.

Dans notre cas, nous savons que nous attendons une valeur de chaîne, le code peut donc être réécrit comme ceci :

Intention intention = getIntent(); user = intent.getStringExtra("nom d'utilisateur");

User = getIntent().getStringExtra("nom d'utilisateur");

Le programme présente un inconvénient : on ne sait pas clairement de qui nous recevons les salutations. Tout singe bien élevé n'acceptera pas de cadeau d'une source anonyme. Alors, comme devoir, ajoutez un autre champ de texte pour saisir le nom de l'utilisateur qui envoie le message.

Google recommande d'utiliser le format suivant pour les clés : le nom de votre package comme préfixe, suivi de la clé elle-même. Dans ce cas, vous pouvez être sûr du caractère unique de la clé lorsque vous interagissez avec d'autres applications. Quelque chose comme ça:

Chaîne statique finale publique USER = "ru.alexanderklimov.myapp.USER";

Qui a piégé le chat Vaska - nous récupérons le résultat

Il ne suffit pas toujours de simplement transmettre des données à une autre activité. Parfois, vous avez besoin de récupérer des informations sur une autre activité lorsque celle-ci est fermée. Si plus tôt nous utilisions la méthode startActivity (intention d'intention), alors il existe une méthode connexe startActivityForResult (intention d'intention, int RequestCode). La différence entre les méthodes est paramètre supplémentaire Code requis. Il s’agit simplement d’un nombre entier que vous pouvez créer vous-même. Cela est nécessaire pour distinguer de qui provient le résultat. Disons que vous disposez de cinq écrans supplémentaires et que vous leur attribuez des valeurs de 1 à 5, et en utilisant ce code, vous pouvez déterminer le résultat que vous devez traiter. Vous pouvez utiliser la valeur -1, ce sera alors la même chose que d'appeler la méthode startActivity(), c'est à dire. nous n'obtiendrons aucun résultat.

Si vous utilisez la méthode startActivityForResult(), vous devez alors remplacer la méthode dans votre code pour recevoir le résultat onActivityResult() et traiter le résultat. Confus? Regardons un exemple.

Disons que vous êtes un détective. Des informations ont été reçues selon lesquelles deux morceaux de saucisses et d'autres produits auraient été volés sur la table d'une personne influente dans un restaurant. Les soupçons se sont portés sur trois suspects : un corbeau, un putain de chien et Vaska le chat.

L’un des visiteurs a fourni une série de photos prises avec son iPhone frimeur :


Il y a aussi le témoignage d'un autre témoin : Et Vaska écoute et mange.

Créer un nouveau projet Sherlock avec deux activités. Sur le premier écran, il y aura un bouton pour passer au deuxième écran et une étiquette de texte dans laquelle le nom du voleur sera affiché.


Haut