Search code examples
androidxamarinonactivityresultstartactivityforresult

Handling Result.Canceled in OnActivityResult


I want to create a function which asks for turning on bluetooth till user does it. I have the code which asks user to enable the bluetooth:

 var enableBluetooth = new Intent(BluetoothAdapter.ActionRequestEnable);
                    StartActivityForResult(enableBluetooth,1);

And I want to see the results using OnActivityResult:

protected override void OnActivityResult(int requestCode, [GeneratedEnum] Result resultCode, Intent data)
        {
            base.OnActivityResult(requestCode, resultCode, data);
            if (requestCode  == 1)
            {
                if (resultCode == Result.Ok)
                {
                    Console.WriteLine(" Ok");
                }
                else if (resultCode == Result.Canceled)
                {
                    Console.WriteLine("Canceled");
                }
                else Console.WriteLine("Other Error");
            }else Console.WriteLine("Wrong request code");
        }

And if I click Ok i can see in output window Ok, but when I press cancel any of comments are not being displayed.


Solution

  • Refering android developper :

    https://developer.android.com/training/basics/intents/result and bluetoothChat :https://github.com/googlesamples/android-BluetoothChat

    Try this as an Activity result :

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
            if (requestCode == 1) {
                if (resultCode == RESULT_OK)
                    Toast.makeText(getActivity(), "OK",Toast.LENGTH_SHORT).show();
                else 
                    Toast.makeText(getActivity(), "NOK", Toast.LENGTH_SHORT).show();
            }
    }
    

    On Xamarin following chatexample : https://github.com/googlesamples/android-BluetoothChat

    onActivityResult should looklike this :

    public override void OnActivityResult(int requestCode, Result resultCode, Intent data)
    {
         switch (requestCode)
         {
              case 1:
                  if (Result.Ok == resultCode)
                  {
                       Toast.makeText(getActivity(), "OK",Toast.LENGTH_SHORT).show();
                  }
                  else
                  {
                       Toast.makeText(getActivity(), "NOK",Toast.LENGTH_SHORT).show();
                  }
                  break;
           }
    }