Xamarin.android 如何从MvvmCross中的现有项目启动应用程序

Xamarin.android 如何从MvvmCross中的现有项目启动应用程序,xamarin.android,mvvmcross,Xamarin.android,Mvvmcross,如何执行以下任务: 我的主应用程序将启动不同的应用程序 这项任务需要什么 如何向已启动的应用程序和主应用程序传递数据 如何对此进行调试 谢谢看看这是如何在网络浏览器、短信、电子邮件和电话插件中实现的。正如在评论中提到的@martjin00,您使用一种称为意图的东西来启动活动。无论是您自己的活动还是其他人的活动都无关紧要 Intent允许开发人员输入额外的参数。但是,当目标活动收到意图时,它们显然需要采用目标活动能够理解的格式。如果您知道这一点(如果您正在启动自己的应用程序,您显然应该知道),那么

如何执行以下任务:

我的主应用程序将启动不同的应用程序

  • 这项任务需要什么

  • 如何向已启动的应用程序和主应用程序传递数据

  • 如何对此进行调试


  • 谢谢

    看看这是如何在网络浏览器、短信、电子邮件和电话插件中实现的。正如在评论中提到的@martjin00,您使用一种称为
    意图的东西来启动
    活动
    。无论是您自己的活动还是其他人的
    活动
    都无关紧要

    Intent
    允许开发人员输入额外的参数。但是,当目标
    活动
    收到
    意图
    时,它们显然需要采用目标
    活动
    能够理解的格式。如果您知道这一点(如果您正在启动自己的应用程序,您显然应该知道),那么这样做就相当简单了

    上面提到的插件正是这样做的。他们使用一组已定义的参数调用默认应用程序,这些参数可以传递给
    Intent
    。插件只是公开了这一点,因此它可以从PCL触发,如果您为每个平台实现自己的东西,那么它可能在多个平台上工作

    假设我们有
    活动
    A,这是您想要启动的目标
    活动
    。它以一些数据作为参数:

    public class A : Activity
    {
        protected override OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);
            var animal = Intent.GetStringExtra ("animal");
        }
    }
    
    然后源
    活动
    B现在想要开始A给它一个动物,比如说马

    基本上就是这样。如果A不包含在您自己的应用程序中,而是包含在外部应用程序中,则
    的意图将有所不同:

    var intent = PackageManager.GetLaunchIntentForPackage ("some.other.App");
    intent.PutExtra ("animal", "horse");
    StartActivity (intent);
    

    这与MvvmCross中的任何其他Android/Xamarin代码没有什么不同。您应该启动一个
    Intent
    ,并使用可用的方法向其中添加一些数据。
    var intent = PackageManager.GetLaunchIntentForPackage ("some.other.App");
    intent.PutExtra ("animal", "horse");
    StartActivity (intent);