我的应用需要包含指向同一部手机中第二个应用的链接。 如果未安装该应用程序,则链接应指向Windows应用商店进行安装(该部分工作正常)。 但是如果已经安装了应用程序,则链接应该直接进入应用程序并打开它。我怎样才能做到这一点? 该应用程序有两个版本,一个是WP7,另一个是WP8。如果解决方案不同,请指出差异。
感谢您的帮助...
答案 0 :(得分: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;
}
希望这有帮助!
答案 1 :(得分: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架构。该应用需要开发人员添加此功能,您不能只启动任何应用。