我正在尝试使用依赖服务来启动在我的xamarin表单应用程序中启用BT的意图。但我发现难以将结果恢复为xamarin形式。是否有任何机制可以将activityresult通知返回到表单应用程序。 在表格中,
DependencyService.Get<IBluetoothHandler>().EnableBluetooth();
在android中,
Activity activity = Forms.Context as Activity;
Intent intent = new Intent(BluetoothAdapter.ActionRequestEnable);
activity.StartActivityForResult(intent, 1);
如何将此活动结果提供给表单?
由于
答案 0 :(得分:2)
您可以覆盖Android项目中OnActivityResult
中的MainActivity
方法。 Xamarin.Forms只为整个应用程序(幕后)使用一个活动。所以只需使用这个。
要通知您的页面(或PCL / Forms项目中的其他类),请使用Xamarin.Forms提供的messagingcenter。
以下是一个例子:
你的MainActicity中的方法(android项目):
protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
{
// Send trough the messaging sender (maybe someone subscribes to it)
MessagingCenter.Send(
new ActivityResultMessage {RequestCode = requestCode, ResultCode = resultCode, Data = data}, ActivityResultMessage.Key);
}
然后是您的消息传递类:
public class ActivityResultMessage
{
public static string Key = "arm";
public int RequestCode { get; set; }
public object ResultCode { get; set; }
public object Data { get; set; }
}
然后在类中使用以下代码来处理结果:
// Subscribe to the onactivityresult-message
MessagingCenter.Subscribe<ActivityResultMessage>(this, ActivityResultMessage.Key, (sender) =>
{
// do some magic =)
});
请阅读有关messagincenter(上面提供的链接)的内容,以了解背后的事情。
答案 1 :(得分:1)
添加此
String[]
并在OnCreate方法中添加:
public static MainActivity Instance;