Windows8アプリの共有チャームのつくりかた - blog.jgs.me

Windows8/Windows8 Store Appで共有チャームを実装しようとしたら、意外と苦労したので書き残しておきます。
クイックスタート: コンテンツの共有 (JavaScript と HTML を使った Windows ストア アプリ) (Windows)
にもありますが、まずは Windows.ApplicationModel.DataTransfer.DataTransferManager.getForCurrentView() にEventlistenerをaddするところからです。場合にもよりますが、だいたいは WinJS.Application.onactivate() の中でいいとおもいます。このとき、忘れてはいけないのがEventlistenerをremoveする部分を書き忘れないことです。これも、だいたいは WinJS.Application.oncheckpoint() の中でいいとおもいます。removeしないと、一度は共有チャームが発動できてもsuspendなどした後は使えなくなります。removeしてなかったことに気付かなくて何時間か無駄にしました。
これで共有チャームが押されたことをキャッチできるようになるので、次にどのデータを共有するかを書きます。ハンドラの引数がrequestというメソッドを持っているので、これにデータを投入します。 request.data.properties.title には、共有チャームに出てくる画面のタイトルが指定できます。また、 request.data.properties.description には同じく、その説明を指定できます。
その後は、共有するデータを request に指定します。 request.data.setText(text) のような感じです。画像を指定するときは、画像のファイルを指定しなくてはいけないので request.data.setBitmap(image) を使います。このとき、引数には Windows.Storage.Streams.RandomAccessStreamReference を使わないといけない上に、URLから画像を参照するときは、 Windows.Storage.Streams.RandomAccessStreamReference.createFromUri() を使うのですが、この引数もURI型の引数を指定しないと型が違うよ、とエラーが出ます。StringをURIにキャストするには、 Windows.Foundation.Uri() を使います。同様に、URLを共有するときは、 request.data.setUri() をってURI型の引数を与えてやると共有が可能なアプリ一覧が表示されて共有することができるようになります。

まとめ
とりあえずメソッド名とか長い。あと、型ある振る舞いするのに、実行時じゃないと型が違うことがわからないの、型の意味なさすぎる。
共有チャームの使い方で苦戦した甲斐あって、 Reblog Monster 次期リリースは共有ができるようになります。

December 26th, 2012 11:37am
original: http://blog.jgs.me/post/38830709200
#20121226 #1226

関連ページとランダムに選ばれたページ

筆者について

jigsaw(ジグソウ、1991年6月12日-)は日本のプログラマ、会社代表。本名は小林貴也(こばやし たかや)。主にウェブ、フロントエンド領域で活動している。カミング・スーン合同会社の代表社員。
さらに詳しく

寄附について

面白かったらBTCETHでの寄附をお待ちしております。
寄附のきろく