Eseguire la migrazione del Xamarin.Essentials codice in .NET per Android e .NET per le app iOS
Xamarin.Essentials è una libreria fondamentale per quasi ogni app Xamarin e la relativa funzionalità fa ora parte dell'interfaccia utente dell'app multipiattaforma .NET (.NET MAUI).
I passaggi seguenti illustrano il processo per usare .NET MAUIla funzionalità nativa del dispositivo, in precedenza nota come Xamarin.Essentials, in un'app .NET per Android o .NET per iOS:
- Rimuovere il Xamarin.Essentials pacchetto NuGet dall'app .NET per Android o .NET per iOS.
- Impostare la proprietà di
$(UseMauiEssentials)
compilazione sutrue
nel file di progetto. Per altre informazioni, vedere Modificare il file di progetto. - Inizializzare la funzionalità "essentials" chiamando il
Platform.Init
metodo . Per altre informazioni, vedere Inizializzare la piattaforma. - Eseguire un'installazione aggiuntiva, se necessario. Per altre informazioni, vedere Eseguire un'installazione aggiuntiva.
- Aggiungere direttive using per la funzionalità richiesta. Per altre informazioni, vedere Aggiungere direttive using.
Importante
Non è necessaria alcuna azione da usare Xamarin.Essentials in un'app .NET MAUI , ad eccezione della rimozione dei riferimenti allo spazio dei Xamarin.Essentials
nomi, perché .NET MAUI include già la funzionalità di Xamarin.Essentials.
Modificare il file di progetto
Per usare .NET MAUIla funzionalità del dispositivo nativo in un'app .NET per Android o .NET per iOS, modificare il file di progetto e impostare la proprietà di $(UseMauiEssentials)
compilazione su true
.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0-android</TargetFramework>
...
<UseMauiEssentials>true</UseMauiEssentials>
</PropertyGroup>
</Project>
Inizializzare la piattaforma
In qualsiasi Activity elemento avviato, è necessario chiamare il Platform.Init
metodo , che si trova nello spazio dei Microsoft.Maui.ApplicationModel nomi , dal OnCreate
metodo :
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);
// ...
}
}
Il Platform.Init
metodo richiede un Application argomento o un Activity argomento e un Bundle argomento.
Eseguire un'installazione aggiuntiva
La classe statica Platform
contiene helper specifici della piattaforma.
Membro | Scopo |
---|---|
ActivityStateChanged |
Evento generato quando lo stato di un'attività cambia. |
AppContext |
Proprietà che ottiene l'oggetto Context che rappresenta il contesto dell'app corrente. |
CurrentActivity |
Proprietà che ottiene l'oggetto corrente Activity che rappresenta l'attività corrente. |
Intent |
Classe statica che contiene la ActionAppAction stringa, ovvero l'identificatore per l'oggetto Intent usato dalle azioni dell'app. |
OnNewIntent |
Passare un oggetto Intent dal metodo sottoposto a override di un'attività quando si richiama un'azione dell'app. |
OnResume |
Passare un oggetto Activity dal metodo sottoposto a override di un'attività, quando un oggetto Activity viene ripreso come parte della chiamata di un'azione dell'app. |
OnRequestPermissionsResult |
Passare i risultati della richiesta di autorizzazione dal metodo sottoposto a override di un'attività per la gestione delle richieste di autorizzazione interne. |
WaitForActivityAsync |
Attendere la creazione di un oggetto Activity o diventare attivo. |
Per accedere all'app corrente Context
o Activity
per l'app in esecuzione:
var context = Platform.AppContext;
// Current Activity or null if not initialized or not started.
var activity = Platform.CurrentActivity;
Se si verifica una situazione in cui Activity è necessario , ma l'app non è stata avviata completamente, chiamare il WaitForActivityAsync
metodo :
var activity = await Platform.WaitForActivityAsync();
Per gestire le richieste di autorizzazione di runtime, eseguire l'override del OnRequestPermissionsResult
metodo in ogni Activity e chiamare il Platform.OnRequestPermissionsResult
metodo da esso:
public override void OnRequestPermissionsResult(int requestCode, string[] permissions, Permission[] grantResults)
{
Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults);
base.OnRequestPermissionsResult(requestCode, permissions, grantResults);
}
Oltre a ottenere l'oggetto corrente Activity, è anche possibile registrarsi per gli eventi del ciclo di vita:
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();
Gli stati dell'attività sono:
- Data di creazione
- Resumed
- In pausa
- Eliminata
- SaveInstanceState
- Avviato
- Arrestato
Aggiungere le direttive using
Le direttive implicite global using
per .NET per iOS e .NET per Android non includono gli spazi dei nomi per .NET MAUIla funzionalità del dispositivo nativo. Pertanto, using
le direttive per lo Xamarin.Essentials
spazio dei nomi devono essere sostituite con using
direttive per lo spazio dei nomi che contiene le funzionalità necessarie:
Spazio dei nomi | Scopo |
---|---|
Microsoft.Maui.ApplicationModel | Funzionalità del modello di applicazione, incluse azioni, autorizzazioni e rilevamento delle versioni dell'app. |
Microsoft.Maui.ApplicationModel.Communication | Funzionalità di comunicazione, inclusi contatti, posta elettronica e rete. |
Microsoft.Maui.Devices | Funzionalità del dispositivo, tra cui batteria, sensori, torcia e feedback aptico. |
Microsoft.Maui.Media | Funzionalità multimediali, tra cui la selezione multimediale e la sintesi vocale. |
Microsoft.Maui.ApplicationModel.DataTransfer | Funzionalità di condivisione, inclusi gli Appunti e la condivisione di file. |
Microsoft.Maui.Storage | Archiviazione funzionalità, tra cui la selezione dei file e l'archiviazione sicura. |
Per altre informazioni sulle funzionalità in ogni spazio dei nomi, vedere Integrazione della piattaforma.