BOOT_COMPLETEDが受信出来ない

9,447 views
Skip to first unread message

tangerinepicker

unread,
Aug 6, 2012, 6:06:20 AM8/6/12
to android-g...@googlegroups.com
シノと申します。
いつもお世話になっております。

件名のとおり、自作アプリにてBOOT_COMPLETEDが受信出来ません。

状況ですが、
実機の再起動ではレシーバが反応せず、
adbコマンドの投入(am broadcast -a android.intent.action.BOOT_COMPLETED)には反応します。
※受信出来ている/出来ていないはlogcatにて確認しております
※PCに実機をUSB接続しデバッグ中

マニフェストは以下のとおりです。

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="10" />

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.READ_LOGS" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.DEVICE_POWER" />
    <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
    <uses-permission android:name="android.permission.CALL_PHONE" />
    <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission android:name="android.permission.READ_CONTACTS" />
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

中略

        <receiver
            android:name=".XXXXR001"
            android:process=":remote" />
        <receiver
            android:name=".XXXXR002"
            android:process=":remote" />
        <receiver android:name=".XXXXR003" >
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED" />

                <CATEGORY android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </receiver>
    </application>

</manifest>


レシーバは以下のとおりです。

public class XXXXR003 extends BroadcastReceiver {

    public void onReceive(Context context, Intent intent) {

        Intent intent = new Intent(context, XXXXS001.class);
        context.startService(intent);

        Log.d("XXXX", "RECEIVE_BOOT_COMPLETED");
    }
}

なお、実機はシャープ製SH-01Dです(エコ技設定は通常モード)。

以上、お手数かけますがご助言宜しくお願い致します。

シノ
 

yoshim

unread,
Aug 8, 2012, 3:22:52 AM8/8/12
to android-g...@googlegroups.com
Receiverの中を次のようにしてみてはいかがでしょうか?

public void onReceive(Context context, Intent intent) {

    String action = intent.getAction();
    if (action.equals(Intent.ACTION_BOOT_COMPLETED)) {
      /* BOOT時の処理を実装 */
    }
}


2012年8月6日月曜日 19時06分20秒 UTC+9 tangerinepicker:

Hirokazu Fukami

unread,
Aug 8, 2012, 3:31:04 AM8/8/12
to android-g...@googlegroups.com
こんにちはfkmです

AndroidManifest.xmlのreceiverのところにpermissionの指定が必用な気がします。
以下、「見ながらメモ」で動作している部分のAndroidManifest.xmlです。

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


2012/8/8 yoshim <yoshim....@gmail.com>:
> --
> このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> このディスカッションをウェブ上で閲覧するには、https://groups.google.com/d/msg/android-group-japan/-/t4A3vtpOfj4J
> にアクセスしてください。
>
> このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
> このグループから退会するには、android-group-j...@googlegroups.com
> にメールを送信してください。
> 詳細については、http://groups.google.com/group/android-group-japan?hl=ja
> からこのグループにアクセスしてください。



--
-------------------------------------------------------------
深見 浩和(Hirokazu Fukami)

URI:http://www.fkmsoft.jp
email: f...@fkmsoft.jp

tangerinepicker

unread,
Aug 14, 2012, 9:45:54 AM8/14/12
to android-g...@googlegroups.com
yoshim様、fkm様
 
シノです。ご助言頂き有難うございます。
それぞれ試してみて、結果を後日報告させて頂きます。
以上、宜しくお願い致します。
 
シノ
 

2012年8月8日水曜日 16時31分04秒 UTC+9 fkm:
> このグループに投稿するには、android-group-ja...@googlegroups.com にメールを送信してください。
> このグループから退会するには、android-group-japan+unsubscribe@googlegroups.com

tangerinepicker

unread,
Aug 14, 2012, 9:13:02 PM8/14/12
to android-g...@googlegroups.com
yoshim様、fkm様
シノです。お世話になっております。
それぞれ及び組み合わせの3通りを試してみましたが実機の再起動には反応しませんでした。
※マニフェストのreceiverへ
android:permission="android.permission.RECEIVE_BOOT_COMPLETED"
を追記するとコマンド(am ~)も受け付けなくなりました。
 
また、2、3日前、ブラウザを使用中に突然端末が再起動のような動作をしたのですが、
その際はなぜか反応しました(最終的にstartActivityしている為気付いた)。
 
と、何だかよく分からない状況です。
引き続き調べてみます。
 
シノ
 

2012年8月14日火曜日 22時45分54秒 UTC+9 tangerinepicker:

Toshiyuki Sakamoto

unread,
Aug 14, 2012, 9:24:14 PM8/14/12
to android-g...@googlegroups.com
坂本といいます。こんにちは。

android:enabled="true"も必要なんじゃないでしょうか?

それでは


----- オリジナルメッセージ -----
From: tangerinepicker <tangeri...@gmail.com>
To: android-g...@googlegroups.com
Sent: Wednesday, August 15, 2012 10:13 AM
Subject: [android-group-japan: 19438] Re: BOOT_COMPLETEDが受信出来ない
>> > このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
>> > このグループから退会するには、android-group-j...@googlegroups.com
>> > にメールを送信してください。
>> > 詳細については、http://groups.google.com/group/android-group-japan?hl=ja
>> > からこのグループにアクセスしてください。
>>
>>
>>
>> --
>> -------------------------------------------------------------
>> 深見 浩和(Hirokazu Fukami)
>>
>> URI:http://www.fkmsoft.jp
>> email: f...@fkmsoft.jp
>>
>

--
このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
このディスカッションをウェブ上で閲覧するには、https://groups.google.com/d/msg/android-group-japan/-/J9HCLki6aG4J にアクセスしてください。
このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してください。
詳細については、http://groups.google.com/group/android-group-japan?hl=ja からこのグループにアクセスしてください。


tangerinepicker

unread,
Aug 14, 2012, 9:48:19 PM8/14/12
to android-g...@googlegroups.com, na...@nama.ne.jp
坂本様
 
こんにちは。
ご助言有難うございます。
マニフェストのreceiverへandroid:enabled="true"も入れてみたのですが状況は変わりませんでした。
 
切り分けの為、GooglePlay等にあるアプリでBOOT_COMPLETEDの受信をトリガーにして
分かりやすい動作(画面表示とか)をするものがあれば試してみようと考えています。
何か適当なアプリをご存じであればご教示頂きたく思います。
宜しくお願い致します。
 
シノ
 

2012年8月15日水曜日 10時24分14秒 UTC+9 坂本 俊之:
>> > このグループに投稿するには、android-group-ja...@googlegroups.com にメールを送信してください。
>> > このグループから退会するには、android-group-japan+unsubscribe@googlegroups.com
>> > にメールを送信してください。
>> > 詳細については、http://groups.google.com/group/android-group-japan?hl=ja
>> > からこのグループにアクセスしてください。
>>
>>
>>
>> --
>> -------------------------------------------------------------
>> 深見 浩和(Hirokazu Fukami)
>>
>> URI:http://www.fkmsoft.jp
>> email: f...@fkmsoft.jp
>>
>

--
このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
このディスカッションをウェブ上で閲覧するには、https://groups.google.com/d/msg/android-group-japan/-/J9HCLki6aG4J にアクセスしてください。
このグループに投稿するには、android-group-ja...@googlegroups.com にメールを送信してください。
このグループから退会するには、android-group-japan+unsubscribe@googlegroups.com にメールを送信してください。
詳細については、http://groups.google.com/group/android-group-japan?hl=ja からこのグループにアクセスしてください。


noxi

unread,
Aug 15, 2012, 2:32:29 AM8/15/12
to android-g...@googlegroups.com
noxiです。

BOOT_COMPLETEDの受信にカテゴリーの指定は必要無いと思います。
またBOOT_COMPLETEDの受信はexported=falseでも受信出来る様です。


2012年8月15日 10:48 tangerinepicker <tangeri...@gmail.com>:

>> >> > このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
>> >> > このグループから退会するには、android-group-j...@googlegroups.com


>> >> > にメールを送信してください。
>> >> > 詳細については、http://groups.google.com/group/android-group-japan?hl=ja
>> >> > からこのグループにアクセスしてください。
>> >>
>> >>
>> >>
>> >> --
>> >> -------------------------------------------------------------
>> >> 深見 浩和(Hirokazu Fukami)
>> >>
>> >> URI:http://www.fkmsoft.jp
>> >> email: f...@fkmsoft.jp
>> >>
>> >
>>
>> --
>> このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
>>
>> このディスカッションをウェブ上で閲覧するには、https://groups.google.com/d/msg/android-group-japan/-/J9HCLki6aG4J
>> にアクセスしてください。

>> このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
>> このグループから退会するには、android-group-j...@googlegroups.com


>> にメールを送信してください。
>> 詳細については、http://groups.google.com/group/android-group-japan?hl=ja
>> からこのグループにアクセスしてください。
>>
>>
> --

> このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。

> このディスカッションをウェブ上で閲覧するには、https://groups.google.com/d/msg/android-group-japan/-/Z-RVsvW5U5IJ


> にアクセスしてください。
>
> このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
> このグループから退会するには、android-group-j...@googlegroups.com

suppi__

unread,
Aug 15, 2012, 9:10:59 AM8/15/12
to android-g...@googlegroups.com
こんばんは、suppi__です。

受信するアプリが停止中ということはないでしょうか?
停止中の場合は再起動してもBOOT_COMPLETEDは呼ばれないと思いますが・・


2012年8月15日 15:32 noxi <android.w...@gmail.com>:

ssももんが

unread,
Aug 15, 2012, 9:52:13 AM8/15/12
to android-g...@googlegroups.com
> 受信するアプリが停止中ということはないでしょうか?
> 停止中の場合は再起動してもBOOT_COMPLETEDは呼ばれないと思いますが・・

BOOT_COMPLETEなので、むしろ停止中でこそ呼ばれると思います。

BOOT_COMPLETEはシミュレータでも動作したと思います。
端末を疑われるのであれば、シミュレータで切り分けされるのも良いと思います。

Playストア上のアプリで試されるのであれば、常時ステータスバーに何かを表示したり、常時画面上にオーバーレイ表示するようなアプリであれば良いと思います。

佐藤充

unread,
Aug 15, 2012, 3:00:28 PM8/15/12
to android-g...@googlegroups.com
さとうです。
下記ブログによると、アプリが停止中(stop状態)だとBOOT_COMPLETEDが
受信できないそうです。
android3.1からの仕様で、インストール直後のアプリはstop状態になり、
一度でもユーザーがアプリを起動すればそのアプリのstop状態は解除される、とのこと。
http://yuki312.blogspot.jp/2012/03/androidbroadcaststop.html

あと、manifest要素にandroid:installLocation="auto"、または
android:installLocation="preferExternal" を設定した場合などで、
SDカードにアプリがインストールされてしまうとBOOT_COMPLETEDは受信できません。

それから、
<CATEGORY android:name="android.intent.category.DEFAULT" />
という記述がありますが、要素名の"CATEGORY"は小文字が正しいのでは?
//

ssももんが

unread,
Aug 15, 2012, 6:14:32 PM8/15/12
to android-g...@googlegroups.com
> 下記ブログによると、アプリが停止中(stop状態)だとBOOT_COMPLETEDが
> 受信できないそうです。
> android3.1からの仕様で、インストール直後のアプリはstop状態になり、
> 一度でもユーザーがアプリを起動すればそのアプリのstop状態は解除される、とのこと。

存じませんでした。
誤った返信、失礼しました。

tangerinepicker

unread,
Aug 18, 2012, 10:23:57 AM8/18/12
to android-g...@googlegroups.com
こんばんは。シノです。
返信が遅く申し訳ありません。

noxi様
前回の質問でもお世話になりました。
フォロー有難うございます。

suppi__様、ももんが ss様、さとう様
フォロー有難うございます。
 
結果から申しますとBOOT_COMPLETEDを受信することが出来ました。
 
>あと、manifest要素にandroid:installLocation="auto"、または
>android:installLocation="preferExternal" を設定した場合などで、
>SDカードにアプリがインストールされてしまうとBOOT_COMPLETEDは受信できません。
 
この部分が気になりまして、
実機のアプリを確認したところmicroSDカードへインストールしていました。
原因は実機の「設定」→「アプリケーション」→「優先インストール先」を「microSDカード」に設定していた為。
マニフェストにはinstallLocationを記述していません。
 
そこでアプリを実機へ移動後、再起動したところBOOT_COMPLETEDを受信することが出来ました。
 
BOOT_COMPLETEDを受信する場合は、
android:installLocation="internalOnly"
を指定しておいたほうがよいということなのでしょうか?
 
お手数かけますがフォロー宜しくお願い致します。
 
シノ

佐藤充

unread,
Aug 18, 2012, 3:25:55 PM8/18/12
to android-g...@googlegroups.com
さとうです。

> BOOT_COMPLETEDを受信する場合は、
> android:installLocation="internalOnly"
> を指定しておいたほうがよいということなのでしょうか?

指定しておいた方がよい、ということなのでしょう。
http://developer.android.com/intl/ja/guide/topics/manifest/manifest-element.html
によれば、記述しない場合も "internalOnly" と解釈されるはずなのですが...

いまググったら
http://d.hatena.ne.jp/gae+eyo/20110725/1311572775
というブログを見つけました。
「設定」→「アプリケーション」→「優先インストール先」という設定項目は
sharp端末独自仕様のようですね。
各メーカーがこうした独自仕様の端末を出しますから、
できるだけ明示的に指定しておくのが吉、ということになるのでしょう。
//

2012年8月18日 23:23 tangerinepicker <tangeri...@gmail.com>:
> --
> このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> このディスカッションをウェブ上で閲覧するには、https://groups.google.com/d/msg/android-group-japan/-/fFP_UrJ8MFwJ

tangerinepicker

unread,
Aug 19, 2012, 9:39:31 AM8/19/12
to android-g...@googlegroups.com

さとう様

こんばんは。フォロー有難うございます。

http://d.hatena.ne.jp/gae+eyo/20110725/1311572775
を拝見しました。
実機を1台しかもっていない私にとっては「省エネ設定」はまだしも
「優先インストール先」がシャープ製独自のものとは気付きませんでした。
この様なメーカ独自の仕様も考慮しなければならないところがAndroidアプリ開発の難儀なところなのですね。
今回も身をもってそれを体験することができ大変勉強になりました。

皆様ご協力有難うございました。
今後も宜しくお願い致します。

シノ

noxi

unread,
Aug 19, 2012, 9:51:59 AM8/19/12
to android-g...@googlegroups.com
noxiです。

Androidの「優先インストール先」設定はシャープ独自の物では無く標準機能です。
GUIの設定機能を備えているのがシャープの機種だけ、というだけで。

端末上でpmコマンドを入力すると
pm get-install-location: returns the current install location.
0 [auto]: Let system decide the best location
1 [internal]: Install on internal device storage
2 [external]: Install on external media

pm set-install-location: changes the default install location.
NOTE: this is only intended for debugging; using this can cause
applications to break and other undersireable behavior.
0 [auto]: Let system decide the best location
1 [internal]: Install on internal device storage
2 [external]: Install on external media
の説明を取得することが出来ます。

以前私もこの話題を調べたことがありますが( http://noxi515.blogspot.jp/2011/07/sd.html
android-manifestのinstall-locationのデフォルト値が本当にinternalOnlyなのか
pm set-install-locationで設定した値に準拠するのかまでは分かりません。
少なくともシャープ端末(IS03)での挙動はブログ記事に記述した通りでした。


2012年8月19日 22:39 tangerinepicker <tangeri...@gmail.com>:

> --
> このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。

> このディスカッションをウェブ上で閲覧するには、https://groups.google.com/d/msg/android-group-japan/-/9UrVhQQaRqMJ

nagamatu

unread,
Aug 19, 2012, 10:43:43 AM8/19/12
to 日本Androidの会
外部ストレージに移動させることができるアプリケーションには、幾つか制限があります。

Services / Alarm Services / Input Method Engines / Live Wallpapers /
App Widgets / Account Managers / Sync Adapters / Device
Administrators / Broadcast Receivers listening for "boot completed" /
Copy Protection などに関するアプリケーションでは、問題を発生させます。

http://developer.android.com/guide/topics/data/install-location.html

この為、Googleはデフォルトにおいては明示的に開発者が移動可能と設定していない限り移動させないようにしています。

| By default, the system will not allow your application to install
| on the external storage, so you don't need to worry about your
existing
| applications.

しかし、シャープが GUIを提供して設定を変更可能にした為に、問題を起こす場合には開発者は明示的に
android:installLocationに "internalOnly"を設定し更新を行う必要があります。

ユーザはデフォルトの設定を変更し、アプリケーションを移動させる際にそのアプリケーションは制限事項に問題があるか否かを判断する手段を持しませ
ん。
判断出来るのはアプリケーション開発者だけです。そのため、開発者が移動可能と設定したアプリケーションだけが移動出来る設定となっています。

シャープは「優先インストール先」設定を変更する GUIを提供すべきではなかったと考えます。

--


On 8月19日, 午後10:51, noxi <android.weather...@gmail.com> wrote:
> noxiです。
>
> Androidの「優先インストール先」設定はシャープ独自の物では無く標準機能です。
> GUIの設定機能を備えているのがシャープの機種だけ、というだけで。
>
> 端末上でpmコマンドを入力すると
> pm get-install-location: returns the current install location.
> 0 [auto]: Let system decide the best location
> 1 [internal]: Install on internal device storage
> 2 [external]: Install on external media
>
> pm set-install-location: changes the default install location.
> NOTE: this is only intended for debugging; using this can cause
> applications to break and other undersireable behavior.
> 0 [auto]: Let system decide the best location
> 1 [internal]: Install on internal device storage
> 2 [external]: Install on external media
> の説明を取得することが出来ます。
>
> 以前私もこの話題を調べたことがありますが(http://noxi515.blogspot.jp/2011/07/sd.html
> android-manifestのinstall-locationのデフォルト値が本当にinternalOnlyなのか
> pm set-install-locationで設定した値に準拠するのかまでは分かりません。
> 少なくともシャープ端末(IS03)での挙動はブログ記事に記述した通りでした。
>
> 2012年8月19日 22:39 tangerinepicker <tangerinepic...@gmail.com>:

tangerinepicker

unread,
Aug 19, 2012, 11:12:23 AM8/19/12
to android-g...@googlegroups.com, android.w...@gmail.com

noxi様

こんばんは。いつもお世話になっております。

>Androidの「優先インストール先」設定はシャープ独自の物では無く標準機能です。
>GUIの設定機能を備えているのがシャープの機種だけ、というだけで。

了解です。pm set-install-locationコマンドも試させて頂きました。

ブログで勉強させて頂きます。(^o^)

シノ
 

tangerinepicker

unread,
Aug 19, 2012, 11:42:16 AM8/19/12
to android-g...@googlegroups.com
Nagamatsu様
 
こんばんは。
分かりやすいフォロー有難うございます。
 
たしかにGUIで簡単に設定を変えることが出来ると、
メモリの空き領域に余裕がなかったり、本体よりSDカードの方がはるかに多い場合、
優先インストール先をSDカードに設定してしまう人も結構いるのではないかと思います。
 
シノ
Reply all
Reply to author
Forward
0 new messages