.NET for Android および .NET for iOS アプリで Xamarin.Essentials コードを移行する
Xamarin.Essentials はほぼすべての Xamarin アプリの基本的なライブラリであり、その機能は .NET マルチプラットフォーム アプリ UI (.NET MAUI) の一部になりました。
次の手順では、.NET for Android または .NET for iOS アプリで、.NET MAUI のネイティブ デバイス機能 (旧称 Xamarin.Essentials) を使用するプロセスの概略を示します。
- .NET for Android または .NET for iOS アプリから Xamarin.Essentials NuGet パッケージを削除します。
- プロジェクト ファイルで
$(UseMauiEssentials)
ビルド プロパティをtrue
に設定します。 詳細については、「プロジェクト ファイルを変更する」をご覧ください。 Platform.Init
メソッドを呼び出して、「Essentials」機能を初期化します。 詳しくは、「プラットフォームを初期化する」をご覧ください。- 必要に応じて、追加のセットアップを実行します。 詳細については、「追加のセットアップを実行する」をご覧ください。
- 必要な機能に using ディレクティブを追加します。 詳細については、「using ディレクティブを追加する」をご覧ください。
重要
Xamarin.Essentials
名前空間への参照を削除する以外に、.NET MAUI アプリで Xamarin.Essentials を使用するための操作は必要ありません。.NET MAUI には既に Xamarin.Essentials の機能が含まれているためです。
プロジェクト ファイルを変更する
.NET for Android または .NET for iOS アプリで .NET MAUI のネイティブ デバイス機能を使用するには、プロジェクト ファイルを変更し、$(UseMauiEssentials)
ビルド プロパティを true
に設定します。
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0-android</TargetFramework>
...
<UseMauiEssentials>true</UseMauiEssentials>
</PropertyGroup>
</Project>
プラットフォームを初期化する
起動された Activity では、Microsoft.Maui.ApplicationModel 名前空間にある Platform.Init
メソッドを 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);
// ...
}
}
Platform.Init
メソッドには、Application 引数、または Activity 引数と Bundle 引数が必要です。
追加のセットアップを実行する
静的 Platform
クラスには、プラットフォーム固有のヘルパーが含まれています。
メンバー | 目的 |
---|---|
ActivityStateChanged |
アクティビティの状態が変化したときに発生するイベント。 |
AppContext |
現在のアプリ コンテキストを表す Context オブジェクトを取得するプロパティ。 |
CurrentActivity |
現在のアクティビティを表す現在の Activity オブジェクトを取得するプロパティ。 |
Intent |
ActionAppAction 文字列を含む静的クラス。これは、アプリ アクションで使用される Intent の識別子です。 |
OnNewIntent |
アプリ アクションを呼び出すときに、アクティビティのオーバーライドされたメソッドから Intent を渡します。 |
OnResume |
アプリ アクションの呼び出しの一環として Activity が再開されたときに、アクティビティのオーバーライドされたメソッドから Activity を渡します。 |
OnRequestPermissionsResult |
内部アクセス許可要求を処理するために、アクティビティのオーバーライドされたメソッドからアクセス許可要求の結果を渡します。 |
WaitForActivityAsync |
Activity が作成されるかアクティブになるのを待ちます。 |
実行中のアプリの現在の Context
または Activity
にアクセスするには、以下を実行します。
var context = Platform.AppContext;
// Current Activity or null if not initialized or not started.
var activity = Platform.CurrentActivity;
Activity が必要であるものの、アプリがまだ完全に起動していない状況では、WaitForActivityAsync
メソッドを呼び出します。
var activity = await Platform.WaitForActivityAsync();
ランタイム アクセス許可要求を処理するには、すべての Activity で OnRequestPermissionsResult
メソッドをオーバーライドし、そこから Platform.OnRequestPermissionsResult
メソッドを呼び出します。
public override void OnRequestPermissionsResult(int requestCode, string[] permissions, Permission[] grantResults)
{
Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults);
base.OnRequestPermissionsResult(requestCode, permissions, grantResults);
}
現在の Activity を取得するだけでなく、ライフサイクル イベントに登録することもできます。
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();
アクティビティの状態は次のとおりです。
- 作成
- Resumed
- Paused
- Destroyed
- SaveInstanceState
- Started
- Stopped
using ディレクティブを追加する
.NET for iOS および .NET for Android の暗黙的な global using
ディレクティブには、.NET MAUI のネイティブ デバイス機能の名前空間は含まれていません。 したがって、Xamarin.Essentials
名前空間の using
ディレクティブは、必要な機能を含む名前空間の using
ディレクティブに置き換える必要があります。
名前空間 | 目的 |
---|---|
Microsoft.Maui.ApplicationModel | アプリのアクション、アクセス許可、バージョン追跡などのアプリケーション モデル機能。 |
Microsoft.Maui.ApplicationModel.Communication | 連絡先、メール、ネットワークなどの通信機能。 |
Microsoft.Maui.Devices | バッテリ、センサー、フラッシュライト、触覚フィードバックなどのデバイス機能。 |
Microsoft.Maui.Media | メディアの選択、テキスト読み上げなどのメディア機能。 |
Microsoft.Maui.ApplicationModel.DataTransfer | クリップボードやファイル共有などの共有機能。 |
Microsoft.Maui.Storage | ファイルの選択、セキュリティで保護されたストレージなどのストレージ機能。 |
各名前空間の機能の詳細については、「プラットフォーム統合」をご覧ください。
.NET MAUI