2012-01-09 5 views

ответ

3

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

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

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 или Title выбросит a NotImplementedException
  • Я не занимаюсь обработкой ошибок
  • Это не официально поддерживаемый API, насколько мне известно, d может измениться.
+0

Прохладный! С помощью этого решения мне просто нужно найти способ передачи результатов (приложений, установленных на телефоне) на телефон (когда он все еще подключен к рабочему столу). Есть идеи? :) Спасибо много! – Panos

+0

Вы можете использовать [Изолированное хранилище] (http://msdn.microsoft.com/en-us/library/hh286408 (v = VS.92) .aspx), чтобы перенести файл непосредственно в хранилище приложения или вы можете разместить веб-сервер на главном ПК и подключиться к нему с помощью [ResourceIntensiveTask] (http://msdn.microsoft.com/en-us/library/microsoft.phone.scheduler.resourceintensivetask (v = VS.92) .aspx) (работает после включения питания + wifi в течение 10 минут) по телефону. –

6

Я думаю, что это невозможно в законном порядке.

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

+0

Правильно, невозможно получить список установленных приложений. –

0

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

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

0

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

Смежные вопросы