2013/05/23

[android]AAR (2)

意外なことに、AARの続きだ。

packages/apps/Nfc/src/com/android/nfc/NfcDispatcher.javaのtryNdef()。
ここでAARの処理を行っている。

  1. NDEFメッセージの先頭から順にActivityを起動していく。
    起動できるものがあれば、そこでおしまい
  2. 起動できるActivityがなかった場合、NDEFメッセージの先頭に入っている要素を取ってきて、PackageManager.getLaunchIntentForPackage()でIntentを取得して、それを起動させようとする。
    起動できたら、そこでおしまい。
  3. "market://details?id=パッケージ名"のインテントをIntent.ACTION_VIEWで作って、起動させようとする。
    起動できたら、そこでおしまい。
  4. NfcRootActivityを起動

こんな感じみたいだ。

複数のAARを含んだNDEFメッセージの場合には、注意が必要だ。
どれか1つでもアクティビティ起動できたら、そこでマーケットまで行かずに終わってしまうからだ。
どういう用途があるかわからないけど、そういう動きになるようだ。


さて、ここからは私がよく知らないところだ。

インテントだから、指定できるものはなんでもいいんじゃないのか?と思ったのだ。
でも、Intent.setPackage(String)だから、やっぱりパッケージ名しかだめなのか。

PackageManager.queryIntentActivitiesAsUser(intent)でアクティビティが見つかるならばいいようだ。
試してみねばならぬのぅ。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。