Condividi tramite


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:

  1. Rimuovere il Xamarin.Essentials pacchetto NuGet dall'app .NET per Android o .NET per iOS.
  2. Impostare la proprietà di $(UseMauiEssentials) compilazione su true nel file di progetto. Per altre informazioni, vedere Modificare il file di progetto.
  3. Inizializzare la funzionalità "essentials" chiamando il Platform.Init metodo . Per altre informazioni, vedere Inizializzare la piattaforma.
  4. Eseguire un'installazione aggiuntiva, se necessario. Per altre informazioni, vedere Eseguire un'installazione aggiuntiva.
  5. 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.