Sdílet prostřednictvím


Migrace Xamarin.Essentials kódu v .NET pro Android a .NET pro aplikace pro iOS

Xamarin.Essentials je základní knihovna pro téměř každou aplikaci Xamarin a její funkce jsou nyní součástí víceplatformního uživatelského rozhraní aplikace .NET (.NET MAUI).

Následující kroky popisují proces použití .NET MAUInativní funkce zařízení, dříve označované jako Xamarin.Essentials, v aplikaci .NET pro Android nebo .NET pro iOS:

  1. Xamarin.Essentials Odeberte balíček NuGet z aplikace .NET pro Android nebo .NET pro iOS.
  2. $(UseMauiEssentials) Nastavte vlastnost sestavení do true souboru projektu. Další informace naleznete v tématu Úprava souboru projektu.
  3. Inicializace funkce "essentials" voláním Platform.Init metody. Další informace najdete v tématu Inicializace platformy.
  4. V případě potřeby proveďte další nastavení. Další informace naleznete v tématu Další nastavení.
  5. Přidejte direktivy using pro požadované funkce. Další informace naleznete v tématu Přidání direktiv using.

Důležité

K použití Xamarin.Essentials v aplikaci není nutná žádná akce, kromě odebrání odkazů na Xamarin.Essentials obor názvů, protože .NET MAUI již obsahuje funkce z Xamarin.Essentials.NET MAUI .

Úprava souboru projektu

Pokud chcete používat .NET MAUInativní funkce zařízení v aplikaci .NET pro Android nebo .NET pro iOS, upravte soubor projektu a nastavte $(UseMauiEssentials) vlastnost sestavení na true.

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

Inicializace platformy

V jakékoli spuštěné metodě Activity musíte volat metodu Platform.Init , která je v Microsoft.Maui.ApplicationModel oboru názvů, z OnCreate metody:

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

Metoda Platform.Init vyžaduje Application argument, nebo Activity argument a Bundle argument.

Provedení dalšího nastavení

Statická Platform třída obsahuje pomocné rutiny specifické pro platformu.

Člen Účel
ActivityStateChanged Událost, která se vyvolá, když se změní stav jakékoli aktivity.
AppContext Vlastnost, která získá Context objekt, který představuje aktuální kontext aplikace.
CurrentActivity Vlastnost, která získá aktuální Activity objekt, který představuje aktuální aktivitu.
Intent Statická třída, která obsahuje ActionAppAction řetězec, což je identifikátor Intent pro akce aplikace.
OnNewIntent Intent Při vyvolání akce aplikace předejte metodu přepsání aktivity.
OnResume Předejte metodu Activity přepsání aktivity, když Activity se obnoví jako součást vyvolání akce aplikace.
OnRequestPermissionsResult Výsledky žádosti o oprávnění předejte z přepisované metody aktivity pro zpracování interních žádostí o oprávnění.
WaitForActivityAsync Počkejte, až se vytvoří Activity nebo se aktivuje.

Přístup k aktuální Context nebo Activity spuštěné aplikaci:

var context = Platform.AppContext;

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

Pokud je situace, kdy Activity je potřeba, ale aplikace se úplně nezačala, zavolejte metodu WaitForActivityAsync :

var activity = await Platform.WaitForActivityAsync();

Pokud chcete zpracovávat žádosti o oprávnění modulu runtime, přepište metodu OnRequestPermissionsResultPlatform.OnRequestPermissionsResult v každé Activity metodě a volejte ji z ní:

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

Kromě získání aktuálního Activitystavu můžete také zaregistrovat události životního cyklu:

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

Stavy aktivit jsou:

  • Vytvořeno
  • Obnovení
  • Pozastaveno
  • Zničeny
  • SaveInstanceState
  • Zahájeno
  • Zastaveno

Přidání direktiv using

Implicitní global using direktivy pro .NET pro iOS a .NET pro Android nezahrnují obory názvů pro .NET MAUInativní funkce zařízení. using Proto by se direktivy pro Xamarin.Essentials obor názvů měly nahradit direktivami using pro obor názvů, které obsahují požadované funkce:

Obor názvů Účel
Microsoft.Maui.ApplicationModel Funkce aplikačního modelu, včetně akcí aplikací, oprávnění a sledování verzí
Microsoft.Maui.ApplicationModel.Communication Komunikační funkce, včetně kontaktů, e-mailů a sítí.
Microsoft.Maui.Devices Funkce zařízení, včetně baterie, senzorů, baterky a haptické zpětné vazby
Microsoft.Maui.Media Funkce médií, včetně výběru médií a převodu textu na řeč
Microsoft.Maui.ApplicationModel.DataTransfer Funkce sdílení, včetně schránky a sdílení souborů
Microsoft.Maui.Storage Funkce úložiště, včetně výběru souborů a zabezpečeného úložiště

Další informace o funkcích v jednotlivých oborech názvů najdete v tématu Integrace platformy.