OnActivityResult 不适用于 xamarin

OnActivityResult dont works in xamarin

我正在尝试使用蓝牙连接编写应用程序。当我收到关于打开蓝牙的请求时,我必须选择是或否,当我这样做时,它应该显示像吐司这样的小消息,但它没有显示。我尝试在没有 if 的情况下在函数内部做 toast 仍然不起作用,请帮助

        BluetoothAdapter bluetoothAdapter = BluetoothAdapter.DefaultAdapter;
        
        if (bluetoothAdapter == null)
        {
            Toast.MakeText(Application.Context, "xxx ", ToastLength.Short).Show();
        }
      
        if (!bluetoothAdapter.IsEnabled)
        {
            Intent wlaczbt = new Intent(BluetoothAdapter.ActionRequestEnable);
            StartActivityForResult(wlaczbt, REQUEST_ENABLE_BT);
            //OnActivityResult(REQUEST_ENABLE_BT, Result.Ok, wlaczbt);
        }
        else
        {
            Toast.MakeText(Application.Context, "xxx ", ToastLength.Short).Show();
        }

OnActivity:

public void OnActivityResult(int requestCode,int resultCode,Intent data)
{
    base.OnActivityResult(requestCode, Result.Ok , data);
    Toast.MakeText(Application.Context, "xx ", ToastLength.Short).Show();
    if (requestCode == REQUEST_ENABLE_BT)
    {
        if(resultCode.Equals(Result.Ok))
        {
            Toast.MakeText(Application.Context, "xx ",ToastLength.Short).Show();
        }
        else
        {
            Toast.MakeText(Application.Context, "xx ", ToastLength.Short).Show();
        }
    }
}

我写了一个关于它正常工作的演示。这是 运行 GIF。

这是我的代码。

      [Activity(Label = "@string/app_name", Theme = "@style/AppTheme", MainLauncher = true)]
    public class MainActivity : AppCompatActivity
    {
        Button button1;
        int DISCOVERABLE_DURATION = 300;
        int DISCOVERABLE_BT_REQUEST_CODE = 1001;
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            Xamarin.Essentials.Platform.Init(this, savedInstanceState);
            // Set our view from the "main" layout resource
            SetContentView(Resource.Layout.activity_main);
             button1 = FindViewById<Button>(Resource.Id.button1);
            button1.Click += Button1_Click;
        }

        private void Button1_Click(object sender, System.EventArgs e)
        {
            Intent discoverableIntent = new Intent(BluetoothAdapter.ActionRequestDiscoverable);
            discoverableIntent.PutExtra(BluetoothAdapter.ExtraDiscoverableDuration, DISCOVERABLE_DURATION);
            StartActivityForResult(discoverableIntent, DISCOVERABLE_BT_REQUEST_CODE);
        }

        protected override void OnActivityResult(int requestCode, [GeneratedEnum] Result resultCode, Intent data)
        {
            Toast.MakeText(Application.Context, "xx ", ToastLength.Short).Show();
            if (requestCode == DISCOVERABLE_BT_REQUEST_CODE)
            {
                if (resultCode.Equals(Result.Ok))
                {
                    Toast.MakeText(Application.Context, "xx ", ToastLength.Short).Show();
                }
                else
                {
                    Toast.MakeText(Application.Context, "xx ", ToastLength.Short).Show();
                }
            }
            //base.OnActivityResult(requestCode, resultCode, data);
        }
        public override void OnRequestPermissionsResult(int requestCode, string[] permissions, [GeneratedEnum] Android.Content.PM.Permission[] grantResults)
        {
            Xamarin.Essentials.Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults);

            base.OnRequestPermissionsResult(requestCode, permissions, grantResults);
        }
    }
}

我在AndroidManifest.xml.

中添加了两个权限
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />

这是我的演示,你可以下载。

https://github.com/851265601/XAndroidBlueTooth

这是一篇关于它的有用文章,您可以参考一下。 https://www.codeproject.com/Articles/814814/Android-Connectivity