Android için .NET ve iOS uygulamaları için .NET'te kodu geçirme Xamarin.Essentials

Xamarin.Essentials neredeyse tüm Xamarin uygulamaları için temel bir kitaplıktır ve işlevselliği artık .NET Çok Platformlu Uygulama Kullanıcı Arabiriminin (.NET MAUI ) bir parçasıdır.

Aşağıdaki adımlarda, Android için .NET'te veya iOS için .NET uygulamasında eski adıyla Xamarin.Essentials'nin yerel cihaz işlevselliğini kullanma .NET MAUIişlemi özetlenmiştir:

  1. Xamarin.Essentials Android için .NET veya iOS için .NET uygulamanızdan NuGet paketini kaldırın.
  2. $(UseMauiEssentials) Proje dosyanızda derleme özelliğini olarak true ayarlayın. Daha fazla bilgi için bkz . Proje dosyanızı değiştirme.
  3. yöntemini çağırarak Platform.Init "essentials" işlevini başlatın. Daha fazla bilgi için bkz . Platformu başlatma.
  4. Gerekirse ek kurulum gerçekleştirin. Daha fazla bilgi için bkz . Ek kurulum gerçekleştirme.
  5. Gerekli işlevler için using yönergelerini ekleyin. Daha fazla bilgi için bkz . Using yönergeleri ekleme.

Önemli

bir uygulamada kullanmak Xamarin.Essentials için ad alanına yapılan başvuruları Xamarin.Essentials kaldırmak dışında hiçbir .NET MAUI eylem gerekmez çünkü .NET MAUI zaten işlevini içerirXamarin.Essentials.

Proje dosyanızı değiştirme

Android için .NET veya iOS için .NET uygulamasında yerel cihaz işlevselliğini kullanmak .NET MAUIiçin proje dosyanızı değiştirin ve derleme özelliğini olarak trueayarlayın$(UseMauiEssentials).

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

Platformu başlatma

Başlatılan herhangi Activity bir yöntemde, yönteminden OnCreate ad alanında Microsoft.Maui.ApplicationModel olan yöntemini çağırmanız Platform.Init gerekir:

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

Platform.Init yöntemi bir Application bağımsız değişken veya bağımsız Activity değişken ve bağımsız Bundle değişken gerektirir.

Ek kurulum gerçekleştirme

Statik Platform sınıf, platforma özgü yardımcıları içerir.

Üye Purpose
ActivityStateChanged Herhangi bir Etkinliğin durumu değiştiğinde tetiklenen bir olay.
AppContext Geçerli uygulama bağlamını Context temsil eden nesneyi alan özellik.
CurrentActivity Geçerli etkinliği temsil eden geçerli Activity nesneyi alan özellik.
Intent Uygulama eylemleri tarafından kullanılan öğesinin ActionAppAction tanımlayıcısı olan dizesini Intent içeren statik bir sınıf.
OnNewIntent Intent Bir uygulama eylemini çağırırken etkinliğin geçersiz kılınan yönteminden bir geçirin.
OnResume Bir Activity uygulama eylemini çağırmanın bir parçası olarak devam ettirildiğinde Activity etkinliğin geçersiz kılınan yönteminden bir geçirin.
OnRequestPermissionsResult İç izin isteklerini işlemek için bir etkinliğin geçersiz kılınan yönteminden izin isteği sonuçlarını geçirin.
WaitForActivityAsync Bir Activity öğesinin oluşturulmasını veya etkin olmasını bekleyin.

Geçerli Context veya Activity çalışan uygulamaya erişmek için:

var context = Platform.AppContext;

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

uygulamasının gerekli olduğu ancak uygulamanın tam olarak başlatılmadığı bir durum Activity varsa yöntemini çağırın WaitForActivityAsync :

var activity = await Platform.WaitForActivityAsync();

Çalışma zamanı izin isteklerini işlemek için her içindeki Activity yöntemini geçersiz kılın OnRequestPermissionsResult ve yöntemini çağırınPlatform.OnRequestPermissionsResult:

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

Geçerli Activitydeğerini almaya ek olarak yaşam döngüsü olaylarına da kaydolabilirsiniz:

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

Etkinlik durumları şunlardır:

  • Oluşturulan
  • Sürdürülüyor
  • Duraklatıldı
  • Yok
  • SaveInstanceState
  • Başlarken
  • Durduruldu

Using yönergeleri ekleme

iOS için .NET ve Android için .NET örtük global using yönergeleri, yerel cihaz işlevselliği için .NET MAUIad alanlarını içermez. Bu nedenle, using ad alanının yönergeleri Xamarin.Essentials , gerekli işlevleri içeren ad alanının yönergeleriyle using değiştirilmelidir:

Ad Alanı Purpose
Microsoft.Maui.ApplicationModel Uygulama eylemleri, izinler ve sürüm izleme dahil olmak üzere uygulama modeli işlevselliği.
Microsoft.Maui.ApplicationModel.Communication Kişiler, e-posta ve ağ gibi iletişim işlevleri.
Microsoft.Maui.Devices Pil, algılayıcılar, el feneri ve dokunsal geri bildirim de dahil olmak üzere cihaz işlevselliği.
Microsoft.Maui.Media Medya seçme ve metin okuma dahil olmak üzere medya işlevselliği.
Microsoft.Maui.ApplicationModel.DataTransfer Pano ve dosya paylaşımı dahil olmak üzere paylaşım işlevselliği.
Microsoft.Maui.Storage Dosya çekme ve güvenli depolama gibi işlevleri Depolama.

Her ad alanında işlevsellik hakkında daha fazla bilgi için bkz . Platform tümleştirmesi.