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経由で有効にする、というのが正しいやり方のようです。

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

1 件のコメント:

  1. Titanium Sparkle Mica - Casino Table - Ottawa - Toronto
    ma's edc titanium poker titanium mesh table at the Wynne Casino Hotel in Ottawa. titanium iv chloride It's a great spot apple watch stainless steel vs titanium for poker tournaments and meetings, ford edge titanium 2021 with a view of the surrounding

    返信削除