テキストを共有する方法 (HTML)
[ この記事は、Windows ランタイム アプリを作成する Windows 8.x および Windows Phone 8.x 開発者を対象としています。Windows 10 向けの開発を行っている場合は、「最新のドキュメント」をご覧ください]
テキストの共有は、コンテンツを共有する最も基本的ですが欠かせない方法の 1 つです。次のような場合に、アプリでテキストの共有をサポートすることをお勧めします。
- コンテンツを多数のターゲット アプリで利用できるようにする。
- リンクや HTML を共有するときに補助的なソースとして使う。
理解しておく必要があること
テクノロジ
必要条件
- Visual Studio と関連するテンプレートについて理解している必要があります。
- JavaScript について理解している必要があります。
手順
ステップ 1: 共有ソースとしてアプリをセットアップする
ユーザーが "共有" を起動するときに呼び出される DataRequested イベント ハンドラーを追加します。Windows ストア アプリでは、ユーザーが共有チャームを起動すると自動的にこのイベントが発生します。Windows Phone 用の開発を行っている場合は、組み込みの共有チャームがないため、ユーザーがタップするコントロールを追加してハンドラーをトリガーする必要があります。
var dataTransferManager = Windows.ApplicationModel.DataTransfer.DataTransferManager.getForCurrentView();
dataTransferManager.addEventListener("datarequested", shareTextHandler);
残りの手順では、shareTextHandler
関数を実装します。
ステップ 2: DataRequest オブジェクトを取得する
datarequested イベントが発生すると、アプリは DataRequest オブジェクトを受け取ります。このオブジェクトに含まれている DataPackage を使って、ユーザーが共有するコンテンツを提供することができます。
var request = e.request;
ステップ 3: タイトルと説明のプロパティを設定する
request.data.properties.title = "Share Text Example";
request.data.properties.description = "Demonstrates how to share.";
ステップ 4: DataPackage にテキストを追加する
テキストを追加するには、setText メソッドを使います。
request.data.setText("Hello World!");
完全な例
テキストをユーザーが共有できるように設定する関数の例を次に示します。完全なコード例については、コード ギャラリーのサンプルをご覧ください。
function shareTextHandler(e) {
var request = e.request;
request.data.properties.title = "Share Text Example";
request.data.properties.description = "Demonstrates how to share.";
request.data.setText("Hello World!");
}
app.onactivated = function (args) {
if (args.detail.kind === activation.ActivationKind.launch) {
if (args.detail.previousExecutionState !== activation.ApplicationExecutionState.terminated) {
// This app is newly launched. Register the app as share source.
var dataTransferManager = Windows.ApplicationModel.DataTransfer.DataTransferManager.getForCurrentView();
dataTransferManager.addEventListener("datarequested", shareTextHandler);
} else {
// TODO: This app was reactivated from suspension.
// Restore the app state here.
}
args.setPromise(WinJS.UI.processAll());
}
};