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:
- Xamarin.Essentials Odeberte balíček NuGet z aplikace .NET pro Android nebo .NET pro iOS.
$(UseMauiEssentials)
Nastavte vlastnost sestavení dotrue
souboru projektu. Další informace naleznete v tématu Úprava souboru projektu.- Inicializace funkce "essentials" voláním
Platform.Init
metody. Další informace najdete v tématu Inicializace platformy. - V případě potřeby proveďte další nastavení. Další informace naleznete v tématu Další nastavení.
- 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 OnRequestPermissionsResult
Platform.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.