android.intent.action.BOOT_COMPLETED 在“重新启动”或“重新启动”时未收到 Intent

问题描述 投票:0回答:5

Android

android.intent.action.BOOT_COMPLETED
如果我使用 “重新启动”“重新启动”,则不会收到意图,但如果我关闭并打开设备,则可以工作。有什么办法可以让这个工作吗?

android android-intent android-broadcast
5个回答
37
投票

添加

<action android:name="android.intent.action.QUICKBOOT_POWERON" /> 

还有


6
投票

请添加以下权限:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

并在manifest.zml中添加接收器类条目:

<receiver android:name="com.example.receivers.BootReceiver" >

现在接收者类别:

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;

public class BootReceiver extends BroadcastReceiver {

  private static final String TAG = "Boot Receiver:::";
   /*
    * (non-Javadoc)
    * 
    * @see android.content.BroadcastReceiver#onReceive(android.content.Context,
    * android.content.Intent)
    */
    @Override
    public void onReceive(Context context, Intent intent) {
      if (intent != null) {
        if (intent.getAction().equalsIgnoreCase(
                Intent.ACTION_BOOT_COMPLETED)) {

            //Boot Receiver Called
        }
      }
    }
 }

现在清理并运行您的应用程序。希望在开关机或重启设备后调用该类。让我知道您的反馈。


3
投票

在清单文件中添加

<action android:name="android.intent.action.QUICKBOOT_POWERON" />
此权限。


0
投票

添加

android:priority="100"
,启动
onReceive
大约到 30с

<receiver android:name="..." android:exported="true">
    <intent-filter android:priority="100">
        <action android:name="android.intent.action.BOOT_COMPLETED" />
    </intent-filter>
</receiver>

0
投票

我使用以下权限:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

在你的“应用程序”块内:

<receiver
    android:label="SystemEventReceiver"
    android:name=".SystemEventReceiver"
    android:enabled="true"
    android:exported="false">
    <intent-filter android:priority="1000">
        <category android:name="android.intent.category.DEFAULT"/>
        <action android:name="android.intent.action.BOOT_COMPLETED"/>
        <action android:name="android.intent.action.REBOOT"/>
        <action android:name="android.intent.action.QUICKBOOT_POWERON"/>
        <action android:name="com.htc.intent.action.QUICKBOOT_POWERON"/>
        <action android:name="android.intent.action.MY_PACKAGE_REPLACED"/>
        <action android:name="android.intent.action.MY_PACKAGE_UNSUSPENDED"/>
    </intent-filter>
</receiver>

确保

android:exported="false"
并且不是“true”,否则系统不会将广播发送到您的应用程序。

© www.soinside.com 2019 - 2024. All rights reserved.