2011年5月9日月曜日

QuickSearchBoxからのIntentフラグ

ふと、アプリの動作確認をするためにAndroid1.6~2.3.3までのエミュレータを作成して検証していたところ、SearchManager部分の挙動が全てのバージョンでおかしくなっていることに気付きました。

アプリ起動中に呼び出すSearchManagerは問題ないのですが、QuickSearchBoxからのIntentで検索キーワードが取得されず、検索が実行されない現象が発生しました。

その部分はいじっていなかったのですが、原因を探るためにLOGCATを見ていたらどうもIntentのフラグが
FLAG_ACTIVITY_NEW_TASKだけではないということが分かってきました。




ACTION_VIEWのIntentで呼び出しが行われてその際のフラグが

0x10000000(FLAG_ACTIVITY_NEW_TASK)

だけだと思っていたら、

0x14000000(FLAG_ACTIVITY_NEW_TASK|FLAG_ACTIVITY_CLEAR_TOP)

で渡っていることが分かりました。

この2つのフラグはよく組み合わされて使われるっぽいことがAndroid Developersサイトのリファレンスにも書いてありました。

なるほど、これでは検索が実行されないのも当然・・・か。
最初はきちんと動いていたのが謎。

どうもスッキリしないのでもう少し調査をしたいと思います。

それにしてもQuickSearchBoxはOSバージョンが新しい方が使いやすそうですね。





0 件のコメント:

コメントを投稿