【问题标题】:Windows Phone: Navigate between appsWindows Phone:在应用程序之间导航
【发布时间】:2014-01-09 15:33:22
【问题描述】:

我有一个应用需要在同一部手机中包含指向第二个应用的链接。 如果未安装该应用程序,则该链接应指向 Windows 商店以进行安装(该部分工作正常)。 但如果该应用程序已安装,则链接应直接转到该应用程序并打开它。我怎样才能做到这一点? 该应用程序有两个版本,一个来自 WP7,另一个来自 WP8。如果他们的解决方案不同,请指出不同之处。

感谢您的帮助...

【问题讨论】:

    标签: windows-phone-7 windows-phone-8 windows-store-apps


    【解决方案1】:

    我相信URI Association 是您想要的。您应该能够在 WP7 应用和 WP8 应用中创建不同的关联,并相应地处理它们。

    URI 关联允许您的应用在另一个应用启动特殊 URI 时自动启动。

    另请注意:

    如果您只对启动自己的应用感兴趣,请考虑使用 来自 Windows.Phone.Management.Deployment 命名空间的 API。你可以 使用此 API 检查您已发布的其他应用程序,然后 如果已安装,请启动它们。

    您基本上只需要更新 WMAppManifest.xml 文件以包含 URI 关联,然后侦听该 URI。示例:

    <Extensions>
      <Protocol Name="contoso" NavUriFragment="encodedLaunchUri=%s" TaskID="_default" />
    </Extensions>
    

    然后您可以使用自定义 URI 映射器来处理您的关联(上面顶部链接中的完整示例):

    public override Uri MapUri(Uri uri)
    {
       tempUri = System.Net.HttpUtility.UrlDecode(uri.ToString());
    
       // URI association launch for contoso.
       if (tempUri.Contains("contoso:ShowProducts?CategoryID="))
       {
          // Get the category ID (after "CategoryID=").
          int categoryIdIndex = tempUri.IndexOf("CategoryID=") + 11;
          string categoryId = tempUri.Substring(categoryIdIndex);
    
          // Map the show products request to ShowProducts.xaml
          return new Uri("/ShowProducts.xaml?CategoryID=" + categoryId, UriKind.Relative);
        }
    
        // Otherwise perform normal launch.
        return uri;
    }
    

    希望这会有所帮助!

    【讨论】:

    • 是的,这是正确的方向。但我的最后一个问题是:要获得与应用程序关联的正确 URI,我是否必须向应用程序的构建者请求它,或者它可以在应用程序本身的某个地方找到(存储文档,一些 API 调用)?该应用不是我们的。
    • 我不太确定。这本身可能是另一个问题。您是否已经知道您尝试获取 URI 的应用程序支持 URI 关联的事实?他们还必须设置映射器才能“监听”您的呼叫。
    • 我已经和应用所有者谈过了,他们有 URI 关联。他们已经寄给我了。现在我可以继续前进了。
    【解决方案2】:

    辅助应用是您创建的吗?如果是这样,请执行以下操作:

    IEnumerable<Package> packages = InstallationManager.FindPackagesForCurrentPublisher();
    
    foreach (Package package in packages)
    {
        if (package.Id.ProductId.ToString().ToLower() == "product id of secondary app")
        {
             //Launch the app
             package.Launch();
        }
    }
    

    确保您的发布者 ID 在两个应用的 WMAppManifest 中匹配。

    如果此辅助应用由其他人发布,您将需要使用自定义 Uri 架构。该应用需要开发者添加此功能,您不能随便启动任何应用。

    【讨论】:

    • 很遗憾没有。第二个应用程序不是我们的,也不在解决方案中。是可以安装(或不安装)在同一部手机中的标准 Windows 应用商店应用程序。
    • 除非应用开发者明确添加了自定义 URI,否则您无法启动应用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-29
    • 1970-01-01
    • 1970-01-01
    • 2016-01-08
    • 1970-01-01
    • 1970-01-01
    • 2015-08-08
    相关资源
    最近更新 更多