Как получить текст (HTML)

[ Эта статья адресована разработчикам приложений среды выполнения Windows для Windows 8.x и Windows Phone 8.x. При разработке приложений для Windows 10 см. раздел последняя документация]

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

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

Что необходимо знать

Технологии

Необходимые условия

  • Вы должны уметь работать с программой Visual Studio и связанными с ней шаблонами.
  • Вы должны знать JavaScript.

Инструкции

Этап 1: Поддержка контракта отправки данных

Чтобы ваше приложение могло получать общее содержимое, вам нужно объявить, что оно поддерживает контракт отправки данных. Этот контракт, по сути, позволяет системе узнать о доступности вашего приложения для получения содержимого. Если для создания приложения вы используете шаблон Microsoft Visual Studio, обеспечить поддержку контракта отправки данных можно следующим образом:

  1. Откройте файл манифеста (package.appxmanifest).
  2. Откройте вкладку Объявления.
  3. Выберите Конечное приложение в списке Доступные объявления.
  4. Щелкните Добавить, чтобы добавить поддержку контракта получателя данных в ваше приложение.

Этап 2: Указание поддержки текстового формата приложением

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

  1. Откройте файл манифеста.
  2. В разделе Поддерживаемые типы файлов щелкните Добавить.
  3. Введите .txt. Введите точку (.) только перед "txt".

Чтобы определить, поддерживает ли приложение текстовый формат, выполните следующие действия:

  1. Откройте файл манифеста.
  2. В разделе Форматы данных щелкните Добавить.
  3. Введите "text" (без кавычек).

Ранее описанные действия добавляют следующий раздел в манифест:

<Extensions>
  <Extension Category="windows.shareTarget">
    <ShareTarget>
      <DataFormat>text</DataFormat>
    </ShareTarget>
  </Extension>
</Extensions>

Примечание  Вы можете указать другую точку входа, когда ваше приложение активируется для контракта получателя данных. Для этого измените запись на Начальной странице в разделе параметров Приложения в разделе объявления Получатель данных в манифесте пакета. Мы настоятельно рекомендуем использовать отдельный файл JavaScript, который управляет активацией этой страницы. Например, просмотрите образец Общий доступ к содержимому приложения-получателя данных.

 

Этап 3: Добавить обработчик событий, определяющий активацию приложения.

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

app.onactivated = function (args) {
    if (args.detail.kind === activation.ActivationKind.launch) {
        // The application has been launched. Initialize as appropriate.
    } else if (args.detail.kind === Windows.ApplicationModel.Activation.ActivationKind.shareTarget) {
        ...
    }
};

Этап 4: Получить объект "ShareOperation".

Объект ShareOperation содержит все данные, необходимые приложению для получения содержимого, которое пользователь хочет совместно использовать.

shareOperation = args.detail.shareOperation;

Этап 5: Быстро вернитесь из обработчика активированного события.

Обработчик событий activated должен быстро возвращаться. Поставьте в очередь асинхронное событие из обработчика событий activated, чтобы обработка общих данных происходила после возврата активированного события.

WinJS.Application.addEventListener("shareready", shareReady, false);
WinJS.Application.queueEvent({ type: "shareready" });

Остальные шаги выполняются для реализации функции shareReady.

Этап 6: Проверьте, содержат ли данные общего доступа текст.

Свойство shareOperation.data содержит объект DataPackageView. По существу, этот объект является нередактируемой версией объекта DataPackage, который используется приложением-источником данных для создания данных. Используйте этот объект, чтобы определить, доступен ли текстовый формат для совместного использования.

if (shareOperation.data.contains(Windows.ApplicationModel.DataTransfer.StandardDataFormats.text)) {
    // Code to process text goes here.      
}

Рекомендуем проверить, содержит ли DataPackage формат данных, который вас интересует, даже если ваше приложение поддерживает только один формат. Это упростит поддержку других форматов данных в будущем.

Этап 7: Обработать текст.

Чтобы получить текст, вызовите метод DataPackageView.getText.

shareOperation.data.getTextAsync().done(function (text) {
    // To output the text using this example, 
    // you need a div tag with an id of "output" in your HTML file.
    document.getElementById("output").innerText = text;
});

Действия, выполняемые с текстом, зависят от приложения.

Этап 8: Вызвать "reportCompleted".

После того как ваше приложение успешно завершит предоставление общего доступа к содержимому, вызовите reportCompleted. После того как вы вызовете этот метод, система закроет ваше приложение.

shareOperation.reportCompleted();

Замечания

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

var shareOperation = null;

function shareReady(args) {
    if (shareOperation.data.contains(Windows.ApplicationModel.DataTransfer.StandardDataFormats.text)) {
        shareOperation.data.getTextAsync().done(function (textValue) {
            // To output the text using this example, you need a div tag with an 
            // id of "output" in your HTML file.
            document.getElementById("output").innerText = textValue;
        });
    }
}

app.onactivated = function (args) {
    if (args.detail.kind === activation.ActivationKind.launch) {
        // The application has been launched. Initialize as appropriate.
        args.setPromise(WinJS.UI.processAll());
    } else if (args.detail.kind === Windows.ApplicationModel.Activation.ActivationKind.shareTarget) {
        // This app has been activated share.
        args.setPromise(WinJS.UI.processAll());

        // We receive the ShareOperation object as part of the eventArgs.
        shareOperation = args.detail.shareOperation;

        // We queue an asychronous event so that working with the ShareOperation object 
        // does not block or delay the return of the activation handler.
        WinJS.Application.addEventListener("shareready", shareReady, false);
        WinJS.Application.queueEvent({ type: "shareready" });
    }
};

Связанные разделы

Пример конечного приложения при общем доступе к содержимому

Общий доступ и обмен данными

Получение файлов

Получение HTML

Получение ссылки

Краткое руководство: получение общего содержимого

DataPackage

Windows.ApplicationModel.DataTransfer

Windows.ApplicationModel.DataTransfer.Share

Руководство по отладке конечных приложений