Migrowanie Xamarin.Essentials kodu na platformie .NET dla systemów Android i .NET dla aplikacji systemu iOS
Xamarin.Essentials jest podstawową biblioteką prawie każdej aplikacji platformy Xamarin, a jej funkcjonalność jest teraz częścią interfejsu użytkownika aplikacji wieloplatformowej platformy .NET (.NET MAUI).
W poniższych krokach opisano proces używania .NET MAUIfunkcji urządzenia natywnego, dawniej znanej jako Xamarin.Essentials, w aplikacji .NET dla systemu Android lub .NET dla systemu iOS:
- Xamarin.Essentials Usuń pakiet NuGet z platformy .NET dla systemu Android lub .NET dla aplikacji systemu iOS.
$(UseMauiEssentials)
Ustaw właściwość build natrue
wartość w pliku projektu. Aby uzyskać więcej informacji, zobacz Modyfikowanie pliku projektu.- Zainicjuj funkcję "essentials", wywołując metodę
Platform.Init
. Aby uzyskać więcej informacji, zobacz Inicjowanie platformy. - W razie potrzeby wykonaj dodatkową konfigurację. Aby uzyskać więcej informacji, zobacz Wykonywanie dodatkowej konfiguracji.
- Dodaj dyrektywy using dla wymaganej funkcjonalności. Aby uzyskać więcej informacji, zobacz Dodawanie dyrektyw using.
Ważne
Nie jest wymagana żadna akcja do użycia Xamarin.Essentials w .NET MAUI aplikacji, inna niż usuwanie odwołań do Xamarin.Essentials
przestrzeni nazw, ponieważ .NET MAUI zawiera już funkcje z Xamarin.Essentialsprogramu .
Modyfikowanie pliku projektu
Aby użyć .NET MAUIfunkcji urządzenia natywnego na platformie .NET dla systemu Android lub .NET dla systemu iOS, zmodyfikuj plik projektu i ustaw $(UseMauiEssentials)
właściwość kompilacji na true
.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0-android</TargetFramework>
...
<UseMauiEssentials>true</UseMauiEssentials>
</PropertyGroup>
</Project>
Inicjowanie platformy
W każdym Activity uruchomionym pliku należy wywołać metodę Platform.Init
, która znajduje się w Microsoft.Maui.ApplicationModel przestrzeni nazw, 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
wymaga argumentu Application lub argumentu Activity i argumentu Bundle .
Wykonywanie dodatkowej konfiguracji
Klasa statyczna Platform
zawiera pomocników specyficznych dla platformy.
Element członkowski | Purpose |
---|---|
ActivityStateChanged |
Zdarzenie, które jest zgłaszane, gdy zmienia się stan działania. |
AppContext |
Właściwość, która pobiera Context obiekt reprezentujący bieżący kontekst aplikacji. |
CurrentActivity |
Właściwość, która pobiera bieżący Activity obiekt reprezentujący bieżące działanie. |
Intent |
Klasa statyczna zawierająca ActionAppAction ciąg, który jest identyfikatorem używanym Intent przez akcje aplikacji. |
OnNewIntent |
Przekaż metodę Intent przesłoniętą przez działanie podczas wywoływania akcji aplikacji. |
OnResume |
Przekaż metodę Activity przesłoniętą działania, gdy Activity element zostanie wznowiony w ramach wywoływania akcji aplikacji. |
OnRequestPermissionsResult |
Przekaż wyniki żądania uprawnień z metody zastąpienia działania w celu obsługi wewnętrznych żądań uprawnień. |
WaitForActivityAsync |
Poczekaj na Activity utworzenie lub stanie się aktywny. |
Aby uzyskać dostęp do bieżącej Context
aplikacji lub Activity
dla uruchomionej aplikacji:
var context = Platform.AppContext;
// Current Activity or null if not initialized or not started.
var activity = Platform.CurrentActivity;
Jeśli jest taka sytuacja, w której Activity jest wymagana, ale aplikacja nie została w pełni uruchomiona, wywołaj metodę WaitForActivityAsync
:
var activity = await Platform.WaitForActivityAsync();
Aby obsłużyć żądania uprawnień środowiska uruchomieniowego, zastąpij metodę OnRequestPermissionsResult
w każdej Activity metodzie i wywołaj Platform.OnRequestPermissionsResult
ją z niej:
public override void OnRequestPermissionsResult(int requestCode, string[] permissions, Permission[] grantResults)
{
Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults);
base.OnRequestPermissionsResult(requestCode, permissions, grantResults);
}
Oprócz pobrania bieżącego Activityelementu można również zarejestrować się w celu uzyskania zdarzeń cyklu życia:
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();
Stany aktywności to:
- Utworzone
- Wznowione
- Wstrzymana
- Zniszczone
- SaveInstanceState
- Rozpoczęto
- Zatrzymana
Dodawanie dyrektyw using
Niejawne global using
dyrektywy dla platformy .NET dla systemów iOS i .NET dla systemu Android nie zawierają przestrzeni nazw dla .NET MAUIfunkcji urządzeń natywnych. using
W związku z tym dyrektywy dla Xamarin.Essentials
przestrzeni nazw powinny zostać zastąpione dyrektywami using
dla przestrzeni nazw, która zawiera wymagane funkcje:
Przestrzeń nazw | Purpose |
---|---|
Microsoft.Maui.ApplicationModel | Funkcje modelu aplikacji, w tym akcje aplikacji, uprawnienia i śledzenie wersji. |
Microsoft.Maui.ApplicationModel.Communication | Funkcje komunikacji, w tym kontakty, poczta e-mail i sieć. |
Microsoft.Maui.Devices | Funkcjonalność urządzenia, w tym baterii, czujników, latarki i haptycznych opinii. |
Microsoft.Maui.Media | Funkcje multimediów, w tym wybieranie multimediów i zamiana tekstu na mowę. |
Microsoft.Maui.ApplicationModel.DataTransfer | Udostępnianie funkcji, w tym schowka i udostępniania plików. |
Microsoft.Maui.Storage | Funkcje magazynu, w tym pobieranie plików i bezpieczny magazyn. |
Aby uzyskać więcej informacji na temat funkcji w każdej przestrzeni nazw, zobacz Integracja platformy.