はじめに
最近中華製端末がコストパフォーマンスの高さからより一層注目されるようになってきましたね。
そんな中華製端末の中でもHuaweiはかなりの人気を誇っているかと思いますが、実はIntentChooserに"ある"パラメータを設定してしまうとHuawei独自のカスタムChooserが出てしまうという謎挙動があります。
ただ選択させておしまいであれば気にする必要もないのですが、InputSenderを利用するケース(BroadcastReceiverを使うケースなど)では大問題です。
もれなくHuawei端末だけonReceiveが呼ばれないなどの事象が発生します。
そこでこのHuawei独自のIntentChooserを表示させない方法を備忘録的にまとめておこうと思います。
IntentChooserとは?
念の為IntentChooserについて軽く触れておきます。
IntentChooserとは、暗黙的IntentによりActivityが起動される際、候補となるActivityが複数存在する場合に表示されるもので、端末ユーザーに複数の候補から起動するActivityを選んで選択可能な機能のことを指します。
Huawei独自のIntentChooserを表示させない方法
HuaweiのIntentChooserを表示させないようにするには、IntentChooserを表示する際に使用するcreateChooserの第二引数であるtitleをnullで設定する必要があります。
// HuaweiでカスタムChooserが表示されるパターン
Intent.createChooser(intent, "テスト", intentSender)
// HuaweiでカスタムChooserが表示されないパターン
Intent.createChooser(intent, null, intentSender)
設定自体は非常にシンプルですが、何故titleを見て出しわけているのか謎ですね、、、
仕様によってはかなりの落とし穴になる可能性があるので注意していただくのが良いかと思います。
ご説明は以上です。
さいごに
今年の運動会、弁当本気出しすぎて徹夜しました、、、