如何从Xamarin Forms页面启动Android Activity?

时间:2017-06-08 10:15:27

标签: xamarin xamarin.android xamarin.forms

我知道我可以从Native Android Activity启动Xamarin Forms页面,但是如何从Xamarin Forms ContentPage启动Native Android Activity。我尝试使用DependencyService但没有成功。

2 个答案:

答案 0 :(得分:4)

我明白了。

首先,我需要在Xamarin项目中创建这样的接口

public interface IRecordVideoPage
{
    void StartNativeIntentOrActivity();
}

然后我使用依赖服务从我的Xamarin表单内容页面启动了原生Android活动,如下所示:

DependencyService.Register<IRecordVideoPage>();
DependencyService.Get<IRecordVideoPage>().StartNativeIntentOrActivity();

接下来,我在Android项目中创建了一个RecordActivity类,用于加载测试活动

[assembly: Xamarin.Forms.Dependency(typeof(RecordActivity))]
namespace StreamTest.Droid
{
    [Activity(Label = "RecordActivity")]
    public class RecordActivity : IRecordVideoPage
    {
        public void StartNativeIntentOrActivity()
        {
            var intent = new Intent(Forms.Context, typeof(Test));
            Forms.Context.StartActivity(intent);
        }
    }

最后我在Test类中设置了内容视图:

public class Test : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
    {
        public Test() { }

        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            SetContentView(Resource.Layout.Record);
        }
    }
}

答案 1 :(得分:1)

DependencyService是您的最佳选择。 PCL(便携式类库)背后的概念正是平台独立的。 如果您通过依赖服务显示错误,我们可以提供帮助