如何从Xamarin表单页面启动Android活动?

Ale*_*lew 2 xamarin.android xamarin xamarin.forms

我知道我可以从本机Android活动启动Xamarin表单页面,但是我如何从Xamarin Forms ContentPage启动本机Android活动。我尝试了DependencyService,但没有成功。

Ale*_*lew 6

我想到了。

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

public interface IRecordVideoPage
{
    void StartNativeIntentOrActivity();
}
Run Code Online (Sandbox Code Playgroud)

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

DependencyService.Register<IRecordVideoPage>();
DependencyService.Get<IRecordVideoPage>().StartNativeIntentOrActivity();
Run Code Online (Sandbox Code Playgroud)

接下来,我在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);
        }
    }
Run Code Online (Sandbox Code Playgroud)

最后,我在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);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)