Freigeben über


Migrieren von Xamarin.Essentials-Code in .NET for Android- und .NET for iOS-Apps

Xamarin.Essentials ist eine grundlegende Bibliothek für fast jede Xamarin-App, und ihre Funktionalität ist jetzt Teil der .NET Multi-Platform App UI (.NET MAUI).

Die folgenden Schritte skizzieren den Prozess zur Verwendung der nativen Gerätefunktionalität von .NET MAUI, früher bekannt als Xamarin.Essentials, in einer .NET for Android- oder .NET for iOS-App:

  1. Entfernen Sie das NuGet-Paket Xamarin.Essentials aus Ihrer .NET for Android- oder .NET for iOS-App.
  2. Setzen Sie die $(UseMauiEssentials)-Build-Eigenschaft in Ihrer Projektdatei auf true. Weitere Informationen finden Sie unter Ändern Ihrer Projektdatei.
  3. Initialisieren Sie die Funktionalität „Essentials“, indem Sie die Platform.Init-Methode aufrufen. Für weitere Informationen siehe Initialisierung der Plattform.
  4. Führen Sie bei Bedarf zusätzliche Einrichtung aus. Weitere Informationen finden Sie unter Durchführen zusätzlicher Einstellungen.
  5. Fügen Sie using-Anweisungen für die gewünschte Funktionalität hinzu. Weitere Informationen finden Sie unter Hinzufügen einer using-Anweisung.

Wichtig

Es ist keine Aktion erforderlich, um Xamarin.Essentials in einer .NET MAUI-App zu verwenden, außer Verweise auf den Xamarin.Essentials-Namespace zu entfernen, da in .NET MAUI die Funktionalität Xamarin.Essentials bereits enthalten ist.

Ändern Ihrer Projektdatei

Um die systemeigene Gerätefunktionen von .NET MAUI in einer .NET for Android- oder .NET for iOS-App zu verwenden, ändern Sie Ihre Projektdatei, und legen Sie die Buildeigenschaft $(UseMauiEssentials) auf true fest.

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>net8.0-android</TargetFramework>
    ...
    <UseMauiEssentials>true</UseMauiEssentials>
  </PropertyGroup>
</Project>

Initialisierung der Plattform

Bei jeder gestarteten Activity müssen Sie die Platform.Init -Methode aufrufen, die sich im Microsoft.Maui.ApplicationModel-Namespace aus der OnCreate-Methode befindet:

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);
        // ...
    }
}

Die Platform.Init-Methode erfordert ein Application-Argument oder ein Activity-Argument und ein Bundle-Argument.

Ausführen zusätzlicher Setups

Die statische Klasse Platform enthält plattformspezifische Hilfsprogramme.

Member Zweck
ActivityStateChanged Ein Ereignis, das ausgelöst wird, wenn sich der Status einer Aktivität ändert.
AppContext Eine Eigenschaft, die das Context-Objekt abruft, das den aktuellen App-Kontext darstellt.
CurrentActivity Eine Eigenschaft, die das aktuelle Activity-Objekt abruft, das die aktuelle Aktivität darstellt.
Intent Eine statische Klasse, die die ActionAppAction-Zeichenfolge enthält, welche als Bezeichner für die von App-Aktionen verwendeten Intent dient.
OnNewIntent Übergeben Sie ein Intent von einer überschriebenen Methode einer Aktivität beim Aufruf einer Aktion der App.
OnResume Übergeben Sie ein Activity aus der überschriebenen Methode einer Aktivität, wenn ein Activity als Teil des Aufrufs einer App-Aktion wieder aufgenommen wird.
OnRequestPermissionsResult Übergeben Sie die Ergebnisse der Genehmigungsanfragen aus der überschriebenen Methode einer Aktivität, um interne Genehmigungsanfragen zu bearbeiten.
WaitForActivityAsync Warten Sie, bis ein Activity erstellt wird oder aktiv wird.

Um auf die aktuelle Context oder Activity für die laufende App zuzugreifen:

var context = Platform.AppContext;

// Current Activity or null if not initialized or not started.
var activity = Platform.CurrentActivity;

Falls Activity erforderlich ist, aber die App noch nicht vollständig gestartet ist, rufen Sie die WaitForActivityAsync-Methode auf:

var activity = await Platform.WaitForActivityAsync();

Um Laufzeitberechtigungsanfragen zu verarbeiten, überschreiben Sie die OnRequestPermissionsResult-Methode in jedem Activity und rufen die Platform.OnRequestPermissionsResult-Methode von ihr aus auf:

public override void OnRequestPermissionsResult(int requestCode, string[] permissions, Permission[] grantResults)
{
    Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults);
    base.OnRequestPermissionsResult(requestCode, permissions, grantResults);
}

Sie können nicht nur den aktuellen Activity abrufen, sondern sich sich auch für Lebenszyklusereignisse registrieren:

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();

Aktivitätszustände sind:

  • Erstellt
  • Resumed
  • Paused
  • Wird zerstört
  • SaveInstanceState
  • Started
  • Beendet

Hinzufügen von using-Anweisungen

Die impliziten global using-Direktiven für .NET for iOS und .NET for Android enthalten nicht die Namespaces für die systemeigene Gerätefunktionalität von .NET MAUI. Daher sollten using-Anweisungen für den Xamarin.Essentials-Namespace durch using-Anweisungen für den Namespace ersetzt werden, der die erforderliche Funktionalität enthält:

Namespace Zweck
Microsoft.Maui.ApplicationModel Anwendungsmodellfunktionen, einschließlich App-Aktionen, Berechtigungen und Versionsnachverfolgung.
Microsoft.Maui.ApplicationModel.Communication Kommunikationsfunktionen, einschließlich Kontakte, E-Mail und Netzwerk.
Microsoft.Maui.Devices Gerätefunktionen, einschließlich Akku, Sensoren, Taschenlampe und haptisches Feedback.
Microsoft.Maui.Media Medienfunktionen, einschließlich Medienauswahl und Text-zu-Sprache.
Microsoft.Maui.ApplicationModel.DataTransfer Freigabefunktionen, einschließlich Zwischenablage und Dateifreigabe.
Microsoft.Maui.Storage Speicherfunktionalität, einschließlich Dateiauswahl und sicherer Speicher.

Weitere Informationen zur Funktionalität in den einzelnen Namespaces finden Sie unter Plattformintegration.