Опубликован: 02.08.2013 | Доступ: свободный | Студентов: 468 / 15 | Длительность: 18:38:00
Специальности: Программист
Самостоятельная работа 22:

Работа с SD-картой, сопоставление типов файлов

Аннотация: Данная работа посвящена работе с SD-картой и сопоставлению типов файлов в приложениях для Windows Phone 8.

Цель работы: научиться работать с SD-картой и настраивать сопоставления типов файлов

Работа с SD-картой и сопоставление типов файлов

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

При назначении файлов приложению нужно учесть, что часть типов файлов зарезервирована либо для системных приложений (например, это .txt-файлы), либо для системы (например, .js). Список зарезервированных типов файлов можно найти в материале "Reserved file and URI associations for Windows Phone 8" ("Зарезервированные файлы и сопоставления с URI для Windows Phone 8"), http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj207065%28v=vs.105%29.aspx. При попытке назначить приложение в качестве обработчика зарезервированного файла мы просто не сможем работать с такими файлами, например, не сможем получить их список.

Наш пример основан на примере "Route mapper sample" ("Пример работы с файлами маршрутов"), http://code.msdn.microsoft.com/Route-mapper-sample-dd194bc3.

В нашем приложении, рис. 59.1, используются файлы собственного типа, они имеют расширение .myapp и содержат обычный текст в кодировке UTF-8.

Проект приложения P22_1

увеличить изображение
Рис. 59.1. Проект приложения P22_1

Для правильной работы нашего приложения нужна соответствующая настройка файла-манифеста. В Листинге 59.1 приведен код файла-манифеста.

<?xml version="1.0" encoding="utf-8"?>
<Deployment xmlns="http://schemas.microsoft.com/windowsphone/2012/deployment" AppPlatformVersion="8.0">
  <DefaultLanguage xmlns="" code="ru-RU" />
  <App xmlns="" ProductID="{67d65966-f92f-4aa5-9919-b8f52d0d97fa}" Title="P22_1" 
RuntimeType="Silverlight" Version="1.0.0.0" Genre="apps.normal" 
Author="P22_1 author" Description="Sample description" 
Publisher="P22_1" PublisherID="{70c8f17b-61d4-485b-8502-a169f7413666}">
    <IconPath IsRelative="true" 
IsResource="false">Assets\ApplicationIcon.png</IconPath>
    <Capabilities>
      <Capability Name="ID_CAP_NETWORKING" />
      <Capability Name="ID_CAP_REMOVABLE_STORAGE" />
    </Capabilities>
    <Tasks>
      <DefaultTask Name="_default" NavigationPage="MainPage.xaml" />
    </Tasks>
    <Tokens>
      <PrimaryToken TokenID="P22_1Token" TaskName="_default">
        <TemplateFlip>
          <SmallImageURI IsRelative="true" IsResource="false">Assets\Tiles\FlipCycleTileSmall.png</SmallImageURI>
          <Count>0</Count>
          <BackgroundImageURI IsRelative="true" IsResource="false">Assets\Tiles\FlipCycleTileMedium.png</BackgroundImageURI>
          <Title>P22_1</Title>
          <BackContent>
          </BackContent>
          <BackBackgroundImageURI>
          </BackBackgroundImageURI>
          <BackTitle>
          </BackTitle>
          <DeviceLockImageURI>
          </DeviceLockImageURI>
          <HasLarge>
          </HasLarge>
        </TemplateFlip>
      </PrimaryToken>
    </Tokens>

    <Extensions>
      <FileTypeAssociation TaskID="_default" Name="myapp" 
NavUriFragment="fileToken=%s">
        <SupportedFileTypes>
          <FileType ContentType="application/sdk">.myapp</FileType>
        </SupportedFileTypes>
      </FileTypeAssociation>
    </Extensions>
    <ScreenResolutions>
      <ScreenResolution Name="ID_RESOLUTION_WVGA" />
      <ScreenResolution Name="ID_RESOLUTION_WXGA" />
      <ScreenResolution Name="ID_RESOLUTION_HD720P" />
    </ScreenResolutions>
  </App>
</Deployment>
Листинг 59.1. Код файла WMAppManifest.xml

Обратите внимание на то, что для работы с SD-картой нам требуется объявить возможность ID_CAP_REMOVABLE_STORAGE.

Настройка типов файлов, к которым может обращаться приложение, работая с SD-картой, так же производится в манифесте, в режиме редактирования кода. Мы указали, что собираемся обрабатывать файлы .myapp. Благодаря этому объявлению наше приложение можно использовать для открытия внешних файлов этого типа, но для того, чтобы это выполнить, нужны некоторые приготовления. Дополнительные сведения о сопоставлении типов файлов можно найти в материале "Auto-launching apps using file and URI associations for Windows Phone 8" ("Автоматический запуск приложения с использованием сопоставления типов файлов и URI для Windows Phone 8"), http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj206987%28v=vs.105%29.aspx. В частности, настраивая сопоставление типа файла можно задать набор значков для представления таких файлов.