【问题标题】:Broadcast Receiver not receiving ACTION_BOOT_COMPLETED if app hasn't been run?如果应用程序尚未运行,广播接收器不会收到 ACTION_BOOT_COMPLETED?
【发布时间】:2013-07-01 20:27:50
【问题描述】:

我一直在尝试创建一个没有 Activity 的应用服务,但遇到了一些问题。

我希望服务从启动运行,所以自然使用BroadcastReciever 捕捉ACTION_BOOT_COMPLETED 这在测试时没有问题。我使用一个 Activity 来启动和停止服务以测试它是否正常工作,然后重新启动以查看启动接收器是否工作,它确实工作,快乐的日子。

从应用程序中删除了测试活动并使用了以下清单。

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.package"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="15" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <!-- <activity
        android:name=".MainActivity"
        android:label="@string/title_activity_main" >
        <intent-filter>
             <action android:name="android.intent.action.MAIN" />
             <category android:name="android.intent.category.LAUNCHER" />  
        </intent-filter> 
    </activity>  -->
    <receiver android:name=".BootReceiver">
        <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED" />
        </intent-filter>
    </receiver>
    <service android:name=".SWKeepAliveService" />
</application>
</manifest>

卸载然后重新安装应用程序,重新启动设备,什么都没有。用adb shell am broadcast -a android.intent.action.BOOT_COMPLETED测试了几次,还是没有。

经过反复试验,我发现如果应用程序从未运行,广播接收器永远不会收到ACTION_BOOT_COMPLETED。当然,如果没有启动器,它永远不会运行。

我错过了什么吗?我在文档中没有看到任何提及这一点。

编辑 1

用我的 AOSP 构建运行了一些测试,上面的清单在 Gingerbread 上很好,但在 Jelly Bean 上不行。一定有什么改变了,我只能假设这是出于安全原因(可以理解)。虽然我没有看到任何支持这一事实的文件。

【问题讨论】:

  • 您要在 HTC 设备上进行测试吗?
  • 您的 .BootReceiver 文件在 com.package 路径中吗?确定?
  • 厌倦了 HTC 设备和三星 TAB,结果相同。 @Lucifer .BootReceiver 可以工作并且已经过测试,如果之前没有运行过 Main Activity,它不会被调用。
  • 我 100% 确定,它不需要它,但是,您需要从 AndroidManifest.xml 中删除这些评论才能正常工作:)
  • 在 Manifest 中包含 cmets 没有问题,但出于好奇,我尝试了它。仍然没有收到BOOT_COMPLETED 操作。

标签: android broadcastreceiver boot


【解决方案1】:

我错过了什么吗?

是的。

我在文档中没有看到任何提及。

在 StackOverflow 上的 the Android 3.1 release documentationblog posts by balding guys 和看似 infiniteanswers 中提到了它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-29
    相关资源
    最近更新 更多