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
我正在尝试使用蓝牙连接编写应用程序。当我收到关于打开蓝牙的请求时,我必须选择是或否,当我这样做时,它应该显示像吐司这样的小消息,但它没有显示。我尝试在没有 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