Compartilhar via


Migrar o código do Xamarin.Essentials em aplicativos .NET para Android e .NET para iOS

Xamarin.Essentials é uma biblioteca básica para quase todos os aplicativos Xamarin e a funcionalidade dela já faz parte do .NET MAUI (.NET Multi-Platform App UI).

As seguintes etapas descrevem o processo para usar a funcionalidade de dispositivo nativo do .NET MAUI, anteriormente conhecido como Xamarin.Essentials, em um aplicativo. NET para Android ou .NET para iOS:

  1. Remova o pacote NuGet Xamarin.Essentials do aplicativo .NET para Android ou .NET para iOS.
  2. Defina a propriedade de build $(UseMauiEssentials) como true no arquivo de projeto. Para obter mais informações, confira Modificar o arquivo de projeto.
  3. Inicialize a funcionalidade do “Essentials” chamando o método Platform.Init. Para obter mais informações, confira Inicializar a plataforma.
  4. Faça uma configuração adicional, se necessário. Para obter mais informações, confira Fazer uma configuração adicional.
  5. Adicione diretivas using à funcionalidade necessária. Para obter mais informações, confira Adicionar diretivas using.

Importante

Nenhuma ação é necessária para usar o Xamarin.Essentials em um aplicativo .NET MAUI, além de remover as referências ao namespace Xamarin.Essentials, pois o .NET MAUI já inclui a funcionalidade do Xamarin.Essentials.

Modificar o arquivo de projeto

Para usar a funcionalidade de dispositivo nativo do .NET MAUI em um aplicativo .NET para Android ou .NET para iOS, modifique o arquivo de projeto e defina a propriedade de build $(UseMauiEssentials) como true.

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

Inicializar a plataforma

Em qualquer Activity que seja iniciada, você precisa chamar o método Platform.Init, que está no namespace Microsoft.Maui.ApplicationModel do método OnCreate:

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

O método Platform.Init exige um argumento Application ou um argumento Activity e um argumento Bundle.

Fazer uma configuração adicional

A classe estática Platform contém auxiliares específicos da plataforma.

Membro Finalidade
ActivityStateChanged Um evento gerado quando o estado de qualquer atividade é alterado.
AppContext Uma propriedade que obtém o objeto Context que representa o contexto atual do aplicativo.
CurrentActivity Uma propriedade que obtém o objeto Activity atual que representa a atividade atual.
Intent Uma classe estática que contém a cadeia de caracteres ActionAppAction, que é o identificador para a Intent usada pelas ações do aplicativo.
OnNewIntent Transmita um método Intent substituído de uma atividade ao invocar uma ação de aplicativo.
OnResume Transmita um método Activity substituído de uma atividade quando uma Activity é retomada como parte da invocação de uma ação de aplicativo.
OnRequestPermissionsResult Transmita os resultados da solicitação de permissão do método substituído de uma atividade para lidar com as solicitações de permissão internas.
WaitForActivityAsync Aguarde até que uma Activity seja criada ou fique ativa.

Para acessar o Context ou a Activity atual do aplicativo em execução:

var context = Platform.AppContext;

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

Se houver uma situação em que o aplicativo Activity seja necessário, mas o aplicativo ainda não tenha sido totalmente iniciado, chame o método WaitForActivityAsync:

var activity = await Platform.WaitForActivityAsync();

Para lidar com solicitações de permissão de runtime, substitua o método OnRequestPermissionsResult em todas as Activity e chame o método Platform.OnRequestPermissionsResult nele:

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

Além de obter a Activity atual, você também pode se registrar para ver os eventos de ciclo de vida:

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

Os estados de atividade são:

  • Criado em
  • Retomada
  • Pausada
  • Destruído
  • SaveInstanceState
  • Iniciado
  • Interrompido

Adicionar diretivas using

As diretivas global using implícitas para o .NET para iOS e o .NET para Android não incluem os namespaces para a funcionalidade de dispositivo nativo do .NET MAUI. Portanto, as diretivas using para o namespace Xamarin.Essentials devem ser substituídas por diretivas using para o namespace que contém a funcionalidade necessária:

Namespace Finalidade
Microsoft.Maui.ApplicationModel Funcionalidade do modelo de aplicativo, incluindo ações de aplicativo, permissões e acompanhamento de versão.
Microsoft.Maui.ApplicationModel.Communication Funcionalidade de comunicação, incluindo contatos, email e rede.
Microsoft.Maui.Devices Funcionalidade do dispositivo, incluindo bateria, sensores, lanterna e comentários hápticos.
Microsoft.Maui.Media Funcionalidade de mídia, incluindo a seleção de mídia e a conversão de texto em fala.
Microsoft.Maui.ApplicationModel.DataTransfer Funcionalidade de compartilhamento, incluindo a área de transferência e o compartilhamento de arquivos.
Microsoft.Maui.Storage Funcionalidade de armazenamento, incluindo a seleção de arquivos e o armazenamento seguro.

Para obter mais informações sobre a funcionalidade de cada namespace, confira Integração de plataforma.