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:
- Xamarin.Essentials Android için .NET veya iOS için .NET uygulamanızdan NuGet paketini kaldırın.
$(UseMauiEssentials)
Proje dosyanızda derleme özelliğini olaraktrue
ayarlayın. Daha fazla bilgi için bkz . Proje dosyanızı değiştirme.- yöntemini çağırarak
Platform.Init
"essentials" işlevini başlatın. Daha fazla bilgi için bkz . Platformu başlatma. - Gerekirse ek kurulum gerçekleştirin. Daha fazla bilgi için bkz . Ek kurulum gerçekleştirme.
- 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 true
ayarlayı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.