Как получить текст (HTML)
[ Эта статья адресована разработчикам приложений среды выполнения Windows для Windows 8.x и Windows Phone 8.x. При разработке приложений для Windows 10 см. раздел последняя документация]
Возможно, текст является наиболее распространенным из всех форматов данных, совместно используемых пользователем. Кроме того, что этот формат в первую очередь используется для такого содержимого, как обновления статусов, он является рекомендуемым выбором для совместного использования ссылок, HTML и другой информации.
При написании приложения-получателя как правило следует поддерживать возможность совместного использования текста. Это гарантирует выбор пользователем вашего приложения в большинстве ситуаций. Конечно, если вы считаете, что поддержка текстового формата может запутать пользователей, не используйте его. Например, если ваше приложение работает в основном с файлами, текстовое представление этих файлов вряд ли будет соответствовать ожиданиям пользователя.
Что необходимо знать
Технологии
Необходимые условия
- Вы должны уметь работать с программой Visual Studio и связанными с ней шаблонами.
- Вы должны знать JavaScript.
Инструкции
Этап 1: Поддержка контракта отправки данных
Чтобы ваше приложение могло получать общее содержимое, вам нужно объявить, что оно поддерживает контракт отправки данных. Этот контракт, по сути, позволяет системе узнать о доступности вашего приложения для получения содержимого. Если для создания приложения вы используете шаблон Microsoft Visual Studio, обеспечить поддержку контракта отправки данных можно следующим образом:
- Откройте файл манифеста (package.appxmanifest).
- Откройте вкладку Объявления.
- Выберите Конечное приложение в списке Доступные объявления.
- Щелкните Добавить, чтобы добавить поддержку контракта получателя данных в ваше приложение.
Этап 2: Указание поддержки текстового формата приложением
При написании целевого приложения вы можете указать как типы файлов, так и форматы. Чтобы указать типы поддерживаемых файлов, выполните следующие действия.
- Откройте файл манифеста.
- В разделе Поддерживаемые типы файлов щелкните Добавить.
- Введите .txt. Введите точку (.) только перед "txt".
Чтобы определить, поддерживает ли приложение текстовый формат, выполните следующие действия:
- Откройте файл манифеста.
- В разделе Форматы данных щелкните Добавить.
- Введите "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" });
}
};
Связанные разделы
Пример конечного приложения при общем доступе к содержимому
Краткое руководство: получение общего содержимого
Windows.ApplicationModel.DataTransfer