Windowsストア アプリ開発 Tips集009 ~共有チャームで文字列を共有する~
マイクロソフトの田中達彦です。
本連載では、C#/XAML でWindowsストアアプリを開発するときにヒントを紹介します。
[他のアプリと文字列を共有する]
Windowsストアアプリは、共有コントラクトと呼ばれるさまざまなデータを他のアプリと共有する仕組みを使うことができます。
ユーザーがチャームの共有を使うことで、共有コントラクトの機能が呼ばれます。
共有コントラクトには、共有ソースと呼ばれるデータを提供する側と、共有ターゲットと呼ばれるデータを受け取る側があります。
ここでは、共有ソースとして文字列を共有する方法を紹介します。
まず、共有コントラクトの機能が入っている名前空間を、MainPage.xaml.csの最初のusing節を記述している箇所に、以下のように追加します。
using Windows.ApplicationModel.DataTransfer;
そして、DataTransferManagerのグローバル フィールドを定義します。
DataTransferManager dataTransferManager;
コンストラクタでは、以下の黄色くマーカーしたところのように実装します。
現在のウィンドウに関連付けられているDataTransferManagerオブジェクトをグローバル フィールドに代入し、DataRequestedイベントに対応したイベントハンドラーを定義しています。
DataRequestedイベントは、ユーザーがチャームの共有を選択したときに発生するイベントです。
public MainPage()
{
this.InitializeComponent();
try
{
dataTransferManager = DataTransferManager.GetForCurrentView();
dataTransferManager.DataRequested +=
new TypedEventHandler<DataTransferManager, DataRequestedEventArgs>(this.DataRequested);
}
catch
{
}
}
以下のようにDataRequestedイベントハンドラーを作成し、その中では共有する情報をパッケージ化します。
void DataRequested(DataTransferManager sender, DataRequestedEventArgs args)
{
DataRequest request = args.Request;
DataRequestDeferral deferral = args.Request.GetDeferral();
request.Data.Properties.Title = "この漢字 読めるかな vol.14";
request.Data.SetText(Message[CurrentScene]);
deferral.Complete();
}
ここではデータのTitleプロパティに「この漢字読めるかな vol.14」という文字列を入れ、Message[CurrentScene]に入っている文字列を共有する情報として共有ターゲットのアプリに渡します。
共有ターゲットが標準のメールアプリのときは、Titleプロパティに入れた情報がメールのタイトルになります。
以下は、「この漢字読めるかな? vol.14」というアプリを使って、共有したときの例です。
[関連記事]
コンテンツの共有と受信
https://msdn.microsoft.com/ja-jp/library/windows/apps/hh758314.aspx
[前後の記事]
008 ~特定のWebサイトを表示させる~
010 ~プロジェクト内のテキストファイルを使用する~
[Tips集まとめページ]
https://blogs.msdn.com/b/ttanaka/archive/2013/03/05/windows-tips.aspx
マイクロソフト
田中達彦