Xamarin : Recevoir du texte depuis une autre app Android
La possibilité de recevoir du texte et des images depuis une autre application est un comportement qui est devenu la norme sur les applications mobiles.
Dans cet article, nous verrons comment activer la réception de données texte via Xamarin Android.
La première étape consiste à modifier la déclaration de l’activité qui va recevoir les données.
Dans notre exemple, nous allons modifier la MainActivity mais si vous en avez le besoin vous pouvez créer une activité dédiée.
Dans le fichier MainActivity.cs il faut ajouter le using suivant :
1
|
using Android.Content; |
Cela permet d’avoir accès à la classe Intent.
Sur la classe MainActivity, nous ajoutons l’attribut IntentFilter et nous déclarons que nous acceptons les actions Send et SendMultiple :
1
2
3
4
|
[IntentFilter( new [] { Intent.ActionSend, Intent.ActionSendMultiple }, Categories = new [] { Intent.CategoryBrowsable, Intent.CategoryDefault }, DataMimeType = "text/plain" )] |
Puis, pour récupérer le texte envoyé à votre app c’est très simple :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); // votre code ici // récupération du type var type = Intent.Type; // récupération de l'action var action = Intent.Action; if (Intent.ActionSend == action && Intent.Type != null) { if ("text/plain" == type) { string sharedText = Intent.GetStringExtra(Intent.ExtraText); } } else if (Intent.ActionSendMultiple == action && type != null) { if ("text/plain" == type) { string sharedText = Intent.GetStringArrayExtra(Intent.ExtraText); } } } |
Maintenant, quand vous partagez un texte, votre application est disponible dans la liste des apps acceptant le texte :
Happy coding 🙂
Pour aller plus loin :
- La documentation officielle Android
- Si vous voulez creuser d'autres sujets Android, allez jeter un coup d’œil à cette très belle série d'articles sur le Recyclerview.
- Lien vers le code source de l'article
Commentaires