2015年10月27日火曜日

[解決]BOOT_COMPLETEDで起動しない機種があるときはintent-filterに誤りがあるかも

AndroidManifestにこう書いていたら、Zenfone5の電源投入時にonReceiveが呼ばれませんでした。

        <receiver android:name=".BootReceiver">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </receiver>

カテゴリ指定を取ってこう書いたらonReceiveが呼ばれるようになりました。

        <receiver android:name=".BootReceiver">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED" />
            </intent-filter>
        </receiver>

公式のトレーニングにもそう書いてありますね。

しかも最初は呼ばれない(enabled="false")ようにして、ユーザが明示的にONしたときにPackageManager経由で有効にする、というのが正しいやり方のようです。

・・・というか、このやり方なら「電源投入時に起動する」という設定を覚えておく必要がないのですね。

0 件のコメント:

コメントを投稿