.NET Android アプリと .NET iOS アプリでコードを移行 Xamarin.Essentials する

Xamarin.Essentials はほぼすべての Xamarin アプリの基本的なライブラリであり、その機能は .NET マルチプラットフォーム アプリ UI (.NET MAUI) の一部になりました。

次の手順では、.NET Android または .NET iOS アプリで"ネイティブ デバイス機能" (旧Xamarin.Essentials称: .NET iOS) を使用.NET MAUIするプロセスの概要を示します。

  1. Xamarin.Essentials.NET Android または .NET iOS アプリから NuGet パッケージを削除します。
  2. プロジェクト ファイルでビルド $(UseMauiEssentials) プロパティを true 設定します。 詳細については、「プロジェクト ファイルを変更する」を参照してください
  3. メソッドを呼び出して、"essentials" 機能を初期化します Platform.Init 。 詳細については、「プラットフォームの初期化」を参照してください
  4. 必要に応じて、追加のセットアップを実行します。 詳細については、「追加セットアップの実行」を参照してください
  5. 必要な機能に using ディレクティブを追加します。 詳細については、「using ディレクティブを追加する」を参照してください

重要

名前空間への参照を削除する以外に、アプリで使用Xamarin.Essentialsする操作は必要ありません。これは、既にXamarin.Essentials機能がXamarin.Essentials含まれているため.NET MAUI.NET MAUIです。

プロジェクト ファイルを変更する

.NET Android または .NET 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.InitApplication 引数、または Activity 引数と引数が必要です Bundle

追加のセットアップを実行する

静的 Platform クラスには、プラットフォーム固有のヘルパーが含まれています。

メンバー 目的
ActivityStateChanged アクティビティの状態が変化したときに発生するイベント。
AppContext 現在のアプリ コンテキストを Context 表すオブジェクトを取得するプロパティ。
CurrentActivity 現在のアクティビティを表す現在 Activity のオブジェクトを取得するプロパティ。
Intent 文字列を含む ActionAppAction 静的クラス。これは、アプリ アクションによって使用される Intent 識別子です。
OnNewIntent Intentアプリ アクションを呼び出すときに、アクティビティのオーバーライドされたメソッドから an を渡します。
OnResume Activityアプリ アクションの呼び出しの一環として再開されたときにActivity、アクティビティのオーバーライドされたメソッドから a を渡します。
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();

アクティビティの状態は次のとおりです。

  • Created
  • Resumed
  • Paused
  • Destroyed
  • SaveInstanceState
  • Started
  • Stopped

using ディレクティブを追加する

.NET iOS および .NET Android の暗黙的な global using ディレクティブには、ネイティブ デバイス機能の .NET MAUI名前空間は含まれません。 したがって、名前空間のディレクティブは、 using 必要な機能を Xamarin.Essentials 含む名前空間のディレクティブに置き換える using 必要があります。

名前空間 目的
Microsoft.Maui.ApplicationModel アプリ アクション、アクセス許可、バージョン追跡などのアプリケーション モデル機能。
Microsoft.Maui.ApplicationModel.Communication 連絡先、電子メール、ネットワークなどの通信機能。
Microsoft.Maui.Devices バッテリー、センサー、懐中電灯、触覚フィードバックなどのデバイス機能。
Microsoft.Maui.Media メディアの選択、テキスト読み上げなどのメディア機能。
Microsoft.Maui.ApplicationModel.DataTransfer クリップボードやファイル共有などの共有機能。
Microsoft.Maui.Storage ファイルの選択、セキュリティで保護されたストレージなどのストレージ機能。

各名前空間の機能の詳細については、「プラットフォーム統合」を参照してください