Как заставить Windows Phone OS поверить в то, что ваше приложение это YouTube

Posted on Июнь 26, 2011

7


Вы когда-нибудь задумывались над тем, может ли быть заменено стандартное приложение YouTube? С текущим расположением дел, разработчики ничего не могут поделать с этим. Чего не знают разработчики — так это того, что это все возможно сделать пока ваше приложение будет «прикидываться» ютубом.

Очевидно, что Windows Phone OS определяет приложения по их уникальным идентификаторам. Мне уже известен некоторый набор таких идентификаторов (конечно же с  форума XDA). YouTube не входит в пакет предустановленных приложений, так что это полностью отдельное приложение, но идея все равно остается прежней.

Все что вам необходимо знать — идентификатор приложения YouTube:

dcbb1ac6-a89a-df11-a490-00237de2db9e

Теперь, когда он у нас есть, можно сделать «поддельный» WMAppManifest.xml с таким же идентификатором. Вот на что он похож:

<?xml version="1.0" encoding="utf-16"?>
<Deployment xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" AppPlatformVersion="7.0" xmlns="http://schemas.microsoft.com/windowsphone/2009/deployment">
  <App Author="Dennis" Description="Do whatever you want here!" Genre="apps.normal" HubType="1" ProductID="{dcbb1ac6-a89a-df11-a490-00237de2db9e}" Publisher="Dennis" RuntimeType="Silverlight" Title="SomeRandomApp" Version="1.0.1013.1" xmlns="">
    <IconPath IsRelative="true" IsResource="false">ApplicationIcon.png</IconPath>
    <Capabilities>
      <Capability Name="ID_CAP_NETWORKING" />
      <Capability Name="ID_CAP_IDENTITY_DEVICE" />
      <Capability Name="ID_CAP_MEDIALIB" />
    </Capabilities>
    <Tasks>
      <DefaultTask Name="_default" NavigationPage="MainPage.xaml" />
    </Tasks>
    <Tokens>
      <PrimaryToken TokenID="YouTubeToken" TaskName="_default">
        <TemplateType5>
          <BackgroundImageURI IsRelative="true" IsResource="false">Background.png</BackgroundImageURI>
          <Count>0</Count>
          <Title>
          </Title>
        </TemplateType5>
      </PrimaryToken>
    </Tokens>
  </App>
</Deployment>

Прекрасно, теперь приложение скажет OS что оно разработанное компание Microsoft приложение для YouTube. Помните, в приложении можно делать что угодно, не обязательно показывать YouTube.

Итак, что можно сделать? В основном приложение запускается по нажатию на видео на странице. Как на счет определения идентификаторов видео?

Что бы сделать это, необходимо в App.xaml.cs добавить еще одно статическое поле, которое называется appUri:

image

Теперь в метод CompleteInitializePhoneApplication добавляем строку кода:

image

Теперь после загрузки страницы можно просмотреть эту ссылку:

image

ах да, я могу использовать это приложение и на эмуляторе 🙂 Хотя есть еще способ установки приложений на эмулятор, об этом позже.

Теперь переходим на сайт ТыТрубки и жмем на видео.

image

После нажатия Watch Video, Меня перебросит в мое приложение (какой сюрприз!) и я смогу увидеть параметры, которые передаются в приложение:

image

Теперь все что необходимо — это парсить эту строку и ковырять идентификатор видео.

Не забудьте, что приложения не должны иметь конфликтующих идентификаторов. Сомневаюсь что приложение с идентификатором аналогичным официальному приложению одобрят в Marketplace.

Реклама