Доступ к списку установленных приложений - PullRequest
2 голосов
/ 09 января 2012

Мне нужно получить установленные приложения Windows Phone. Вы знаете, доступно ли это из SDK?

Ответы [ 4 ]

6 голосов
/ 09 января 2012

Я думаю, что это невозможно легально.

Каждое приложение находится в своей изолированной программной среде и не имеет доступа к родительским папкам или другим приложениям.

3 голосов
/ 09 января 2012

Можно перечислить сторонние приложения, установленные на телефоне, но только с настольного компьютера (т. Е. Не из приложения, работающего на устройстве) и, следовательно, может не соответствовать тому, что вам нужно.

Во-первых, вам нужно добавить ссылку на эту сборку:

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

Затем следующий код подключится к эмулятору (useEmulator = false для устройства) и запишет идентификаторы продуктов всех приложений, установленных на консоли.

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, доступ к Genre или * 1019.* выдаст NotImplementedException
  • Я не включил обработку ошибок
  • Насколько мне известно, это официально не поддерживаемый API, и он может измениться.
0 голосов
/ 09 января 2012

На данный момент такого API нет, чтобы получить список установленных приложений.Больше вещей ограничено для обеспечения безопасности пользовательских данных.:)

0 голосов
/ 09 января 2012

Возможно, вы могли бы объяснить, почему вы хотите получить эту информацию.В некоторых случаях может оказаться возможным выработать решение, например, если вы хотите узнать, установлено ли на устройстве другое ваше приложение.(Вряд ли это будет на устройстве, и он может полагаться на веб-службу для отслеживания вашей базы установки).

Конечно, наличие этих знаний не обязательно поможет вам.Вы не сможете запускать другое приложение или взаимодействовать с ним напрямую, так что это может оказаться пустой тратой времени на попытки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...