出于安全方面的考虑, WP的API中对于获取其他应用信息的方法并不多,我们甚至于连启动其他应用都会觉得棘手.
所以如果是要做成XX应用集合,想要下载完成直接启动,就要费一番功夫了. 这里简单做了一下概括.
如果是企业应用的话,会稍微好一些, 具体参见 这里 , 这篇文章不讲企业应用,只说一般应用 ,根据API 的限制, 我把获取信息分为两类,分别是 同账号下其他应用 和 不同账号下其他应用
同账号下其他应用
1、获取当前已经安装的应用
IEnumerable<Package> apps = Windows.Phone.Management.Deployment.InstallationManager.FindPackagesForCurrentPublisher();
2、获取某一个应用的信息
Package pkg = apps.FirstOrDefault();
// Package pkg = (from p in apps
// where p.Id.ProductId == "b1f30166-881d-4eb3-9e63-394f90bdc4a5"
// select p).FirstOrDefault();
string name = pkg.Id.Name; string author = pkg.Id.Author;
3、获取应用的图像
string token = pkg.GetThumbnailToken(); var icon = SharedStorageAccessManager.GetSharedFileName(token); await SharedStorageAccessManager.CopySharedFileAsync(ApplicationData.Current.LocalFolder, icon, NameCollisionOption.ReplaceExisting, token); var file = await ApplicationData.Current.LocalFolder.GetFileAsync(name); var stream = await file.OpenReadAsync();
4、启动应用
pkg.Launch(string.Empty);
不同账号下的其他应用
1、启动应用
对于不同账号下的其他应用, 我们无法获取它的具体信息, 但是可以通过uri关联来启动,前提是要启动的应用必须支持uri协议,而且是唯一的,不然就会让你选择具体是那个,
就不会自动去打开某个应用了. 现在商店里的 炫桌面, 软件盒子 都是通过这个方式来做的.
Launcher.LaunchUriAsync(Uri)
//一些设置的启动
Windows.System.Launcher.LaunchUriAsync(new Uri(“ms-settings-wifi:”));
2、获取已经安装的应用
这个没有什么好的办法,只能是一开始给一个应用列表, 然后用户点击,我们让它跳转到商店的详细信息页面,引导用户安装, 这时候无论安装是否成功,我们都认为已经安装成功了,然后添加
到数据库里,下一次再点击, 通过该应用的uri 来启动应用,如果没有安装的话,系统会自动提示是否要搜索,就不会我们去操心了。
虽然体验差了一些,但是基本也够用了.
MarketplaceDetailTask marketplaceDetailTask = new MarketplaceDetailTask(); marketplaceDetailTask.ContentIdentifier = app.id; marketplaceDetailTask.ContentType = MarketplaceContentType.Applications; marketplaceDetailTask.Show();
其他的信息暂时是没法获得的