Windows8アプリの共有チャームのつくりかた - blog.jgs.me
にもありますが、まずは 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型の引数を与えてやると共有が可能なアプリ一覧が表示されて共有することができるようになります。
まとめ
とりあえずメソッド名とか長い。あと、型ある振る舞いするのに、実行時じゃないと型が違うことがわからないの、型の意味なさすぎる。
December 26th, 2012 11:37am