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

Windows8/Windows8 Store App共有チャームを実装しようとしたら、意外と苦労したので書き残しておきます。
にもありますが、まずは 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