获取 MAUI android (net6-android) 库中当前的 Android 活动

Gab*_*Gab 3 android-activity maui net6.0-android nfcadapter

我有一个 Xamarin.Forms (Android) 库,允许使用 NFC,代码如下:

public class MediaAccessReader : Java.Lang.Object, NfcAdapter.IReaderCallback
{
    public const string TypeName = "Nfc";
    private static NfcAdapter NfcAdapter { get; } = NfcAdapter.GetDefaultAdapter(Android.App.Application.Context);
    public string Name { get; set; }

    public void Initialize(MediaAddedEventHandler mediaAdded, MediaRemovedEventHandler mediaRemoved)
    {                        
        Name = "Nfc";
#if XAMARINANDROID
         var activity = Forms.Context as Activity;
         NfcAdapter?.EnableReaderMode(activity, this, NfcReaderFlags.NfcA | NfcReaderFlags.NfcB | NfcReaderFlags.NfcF | NfcReaderFlags.NfcV | NfcReaderFlags.SkipNdefCheck, Bundle.Empty);
#else
         var activity = ?????????????????;
         NfcAdapter?.EnableReaderMode(activity , this, NfcReaderFlags.NfcA | NfcReaderFlags.NfcB | NfcReaderFlags.NfcF | NfcReaderFlags.NfcV | NfcReaderFlags.SkipNdefCheck, Bundle.Empty);
#endif

        MediaAdded += mediaAdded;
        MediaRemoved += mediaRemoved;
    }
}
Run Code Online (Sandbox Code Playgroud)

如何替换该var activity = Forms.Context as Activity行以获取当前活动并能够在没有 Xamarin Forms 的情况下调用 NfcAdapter?.EnableReaderMode ?

否则,还有其他解决方案吗?

G C*_*ovs 6

它包含在Xamarin.Essentials中

Xamarin.Essentials.Platform.CurrentActivity
Run Code Online (Sandbox Code Playgroud)

Essentials 已移植到 .Net Maui

Platform.CurrentActivity
Run Code Online (Sandbox Code Playgroud)