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

How to launch apps from existing project in MvvmCross

如何完成以下任务:

我有主应用程序可以启动不同的应用程序。

  1. 这个任务需要什么。

  2. 如何传递数据to/from启动的应用程序和主应用程序。

  3. 如何调试?

谢谢

看看这是如何在 WebBrowser、SMS、Email 和 Phone 插件中完成的。正如 @martjin00 在评论中提到的,您使用一种叫做 Intent 的东西来启动 Activity。是自己的还是别人的Activity都无所谓。

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

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

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

public class A : Activity
{
    protected override OnCreate(Bundle bundle)
    {
        base.OnCreate(bundle);
        var animal = Intent.GetStringExtra ("animal");
    }
}

然后来源 Activity B 现在想开始 A 给它一个动物,假设 .

var intent = new Intent (typeof(A));
intent.PutExtra ("animal", "horse");
StartActivity (intent);

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

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