访问已安装应用的列表

时间:2012-01-09 12:14:08

标签: c# windows-phone-7.1 windows-phone-7

我需要安装Windows Phone的已安装应用程序。你知道这是否可以从SDK获得?

4 个答案:

答案 0 :(得分:6)

我认为以法律方式这是不可能的。

每个应用程序都位于其沙箱中,无法访问父文件夹或其他应用程序。

答案 1 :(得分:3)

可以列出手机上安装的第三方应用程序,但仅限于您的桌面计算机(即不是来自设备上运行的应用程序),因此可能不是您所追求的。

首先,您需要添加对此程序集的引用:

  

c:\ Program Files(x86)\ Common Files \ microsoft shared \ Phone Tools \ CoreCon \ 10.0 \ Bin \ Microsoft.Smartdevice.Connectivity.dll

然后,以下代码将连接到模拟器(设备的useEmulator = false),并将安装的所有应用程序的产品ID写入控制台。

int locale = CultureInfo.CurrentCulture.LCID;
bool useEmulator = true;

var datastoreManager = new DatastoreManager(locale);

var phonePlatform = datastoreManager.GetPlatforms()
    .Single(p => p.Name == "Windows Phone 7");

var phoneDevice = phonePlatform.GetDevices()
    .First(d => d.IsEmulator() == useEmulator);

phoneDevice.Connect();

var apps = phoneDevice.GetInstalledApplications();

foreach(RemoteApplication app in apps)
{
    Console.WriteLine(app.ProductID.ToString());
}

phoneDevice.Disconnect();

一些警告:

  • 如前所述,此代码在桌面上的.NET上运行,而不是在手机本身上运行
  • 您只能使用ProductID,访问GenreTitle会引发NotImplementedException
  • 我没有包含任何错误处理
  • 据我所知,这不是官方支持的API,可能会发生变化。

答案 2 :(得分:0)

也许您可以解释为什么要获取此信息。在某些情况下可能会找到解决方案,例如,如果您想知道设备上是否安装了其他应用程序。 (这不太可能是设备上的,可能依赖于Web服务来跟踪您的安装基础。)

当然,掌握这些知识并不一定能帮到你。您无法启动其他应用程序,也无法直接与其进行交互,因此可能只是浪费时间尝试。

答案 3 :(得分:0)

此时,没有此类API来获取已安装应用程序的列表。 限制更多事情以维护用户数据的安全性。 :)