2014-01-09 20 views
1

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

感谢您的帮助......

回答

1

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

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

还要注意:

如果你有兴趣只在推出自己的应用程序,可以考虑使用 的API从Windows.Phone.Management.Deployment命名空间。您可以使用此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; 
} 

希望这有助于!

+0

是的,这是正确的方向。但是我的最后一个问题是:为了获得与应用程序关联的正确URI,我必须从应用程序的构建者处获得它,还是可以在应用程序中自行找到它(存储文档,某些API调用)?该应用程序不是我们的。 –

+0

我不完全确定。这本身可能是另一个问题。你是否已经知道你试图获取URI的应用程序支持URI关联?他们还必须设置该映射器以便“收听”您的呼叫。 – lhan

+1

我已经与应用程序所有者交谈过,他们拥有URI关联。他们寄给我他们。现在我可以前进。 –

0

是您创建的第二个应用程序吗?如果是这样,做这样的事情:

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架构。该应用程序需要开发人员添加此功能,您不能只启动任何应用程序。

+0

不幸的不是。第二个应用程序不是我们的,也不在解决方案中。是可以安装(或不安装)在同一部手机中的标准Windows应用商店应用程序。 –

+0

除非应用程序开发人员明确添加了自定义URI,否则无法启动该应用程序。 –

相关问题