与本机其他应用交互的简单介绍

出于安全方面的考虑, 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();

其他的信息暂时是没法获得的

posted @ 2013-09-10 17:51  jeekun  阅读(505)  评论(0编辑  收藏  举报