Migrer du code Xamarin.Essentials dans les applications .NET pour iOS et .NET pour Android
Xamarin.Essentials est une bibliothèque fondamentale pour presque toutes les applications Xamarin, et ses fonctionnalités font désormais partie de .NET Multi-platform App UI (.NET MAUI).
Les étapes suivantes décrivent le processus d’utilisation de la fonctionnalité d’appareil native de .NET MAUI, anciennement appelée Xamarin.Essentials, dans une application .NET pour Android ou .NET pour iOS :
- Supprimez le package NuGet Xamarin.Essentials de votre application .NET pour Android ou .NET pour iOS.
- Définissez la propriété de build
$(UseMauiEssentials)
surtrue
dans votre fichier projet. Pour plus d’informations, consultez Modifier votre fichier projet. - Initialisez la fonctionnalité « essentials » en appelant la méthode
Platform.Init
. Pour plus d’informations, consultez Initialiser la plateforme. - Effectuez une configuration supplémentaire, si nécessaire. Pour plus d’informations, consultez Effectuer une configuration supplémentaire.
- Ajoutez des directives Using pour les fonctionnalités requises. Pour plus d’informations, consultez Ajouter des directives Using.
Important
Aucune action n’est requise pour utiliser Xamarin.Essentials dans une application .NET MAUI, en dehors de la suppression de références à l’espace de noms Xamarin.Essentials
, car .NET MAUI inclut déjà les fonctionnalités de Xamarin.Essentials.
Modifier votre fichier projet
Pour utiliser la fonctionnalité d’appareil native de .NET MAUI dans un application .NET pour Android ou .NET pour iOS, modifiez votre fichier projet et définissez la propriété de build $(UseMauiEssentials)
sur true
.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0-android</TargetFramework>
...
<UseMauiEssentials>true</UseMauiEssentials>
</PropertyGroup>
</Project>
Initialiser la plateforme
Dans tout les Activity lancés, vous devez appeler la méthode Platform.Init
, qui se trouve dans l’espace de noms Microsoft.Maui.ApplicationModel, à partir de la méthode OnCreate
:
using Android.Content.PM;
using Android.Runtime;
using Microsoft.Maui.ApplicationModel;
namespace MyAndroidApp;
[Activity(Label = "@string/app_name", MainLauncher = true)]
public class MainActivity : Activity
{
protected override async void OnCreate(Bundle? savedInstanceState)
{
base.OnCreate(savedInstanceState);
Platform.Init(this, savedInstanceState);
// ...
}
}
La méthode Platform.Init
nécessite un argument Application ou un argument Activity et un argument Bundle.
Effectuer une configuration supplémentaire
La classe statique Platform
contient des programmes d’assistance spécifiques à la plateforme.
Membre | Objectif |
---|---|
ActivityStateChanged |
Un événement déclenché lorsque l’état d’une activité change. |
AppContext |
Une propriété qui obtient l’objet Context qui représente le contexte d’application actuel. |
CurrentActivity |
Une propriété qui obtient l’objet Activity actuel qui représente l’activité actuelle. |
Intent |
Une classe statique qui contient la chaîne ActionAppAction , qui est l’identificateur pour le Intent utilisé par les actions d’application. |
OnNewIntent |
Transmettez un Intent à partir de la méthode substituée d’une activité lors de l’appel d’une action d’application. |
OnResume |
Transmettez un Activity à partir de la méthode substituée d’une activité lorsqu’un Activity est repris dans le cadre de l’appel d’une action d’application. |
OnRequestPermissionsResult |
Transmettez les résultats de la demande d’autorisation à partir de la méthode substituée d’une activité pour gérer les demandes d’autorisation internes. |
WaitForActivityAsync |
Attendez qu’un Activity soit créé ou devienne actif. |
Pour accéder au Context
ou au Activity
actuel pour l’application en cours d’exécution :
var context = Platform.AppContext;
// Current Activity or null if not initialized or not started.
var activity = Platform.CurrentActivity;
Dans le cas où Activity est nécessaire, mais que l’application n’a pas entièrement démarré, appelez la méthode WaitForActivityAsync
:
var activity = await Platform.WaitForActivityAsync();
Pour gérer les demandes d’autorisation d’exécution, remplacez la méthode OnRequestPermissionsResult
dans chaque Activity et appelez la méthode Platform.OnRequestPermissionsResult
à partir de celle-ci :
public override void OnRequestPermissionsResult(int requestCode, string[] permissions, Permission[] grantResults)
{
Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults);
base.OnRequestPermissionsResult(requestCode, permissions, grantResults);
}
En plus d’obtenir le Activity actuel, vous pouvez également vous inscrire aux événements de cycle de vie :
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
Platform.Init(this, bundle);
Platform.ActivityStateChanged += Platform_ActivityStateChanged;
}
protected override void OnDestroy()
{
base.OnDestroy();
Platform.ActivityStateChanged -= Platform_ActivityStateChanged;
}
void Platform_ActivityStateChanged(object sender, ActivityStateChangedEventArgs e) =>
Toast.MakeText(this, e.State.ToString(), ToastLength.Short).Show();
Les états d’activité sont les suivants :
- Créé
- Repris
- Suspendu
- Détruit
- SaveInstanceState
- Démarré
- Arrêté
Ajouter des directives d’utilisation
Les directives global using
implicites pour .NET pour iOS et .NET pour Android n’incluent pas les espaces de noms pour les fonctionnalités d’appareils natives de .NET MAUI. Par conséquent, les directives using
pour l’espace de noms Xamarin.Essentials
doivent être remplacées par des directives using
pour l’espace de noms qui contient la fonctionnalité requise :
Espace de noms | Objectif |
---|---|
Microsoft.Maui.ApplicationModel | Fonctionnalités du modèle d’application, notamment les actions d’application, les autorisations et le suivi des versions. |
Microsoft.Maui.ApplicationModel.Communication | Fonctionnalité de communication, notamment les contacts, la messagerie et la mise en réseau. |
Microsoft.Maui.Devices | Fonctionnalité de l’appareil, notamment la batterie, les capteurs, la lampe de poche et les commentaires haptiques. |
Microsoft.Maui.Media | Fonctionnalité multimédia, notamment la sélection du média et la synthèse vocale. |
Microsoft.Maui.ApplicationModel.DataTransfer | Fonctionnalité de partage, notamment le Presse-papiers et le partage de fichiers. |
Microsoft.Maui.Storage | Fonctionnalité de stockage, y compris la sélection du fichier et le stockage sécurisé. |
Pour plus d’informations sur la fonctionnalité de chaque espace de noms, consultez Intégration de la plateforme.