如何获得意图活动导致xamarin形式

时间:2016-09-23 03:29:25

标签: xamarin.forms

我正在尝试使用依赖服务来启动在我的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);

如何将此活动结果提供给表单?

由于

2 个答案:

答案 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)

在MainActivity中

添加此

String[]

并在OnCreate方法中添加:

public static MainActivity Instance;