重新启动后未收到Android启动完成通知

时间:2018-12-19 09:16:29

标签: android android-manifest android-broadcastreceiver

我在应用程序清单中注册了一个广播接收器,以接收BOOT_COMPLETED通知。重新启动移动设备后,我没有收到任何通知。但是,当我打开应用程序时,确实会收到通知。请协助。

从清单中接收启动完成的权限:

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

我的清单中的收件人:

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

BootCompletedReceiver类:

public class BootCompletedReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {

        Toast.makeText(context, "Boot Completed Received", Toast.LENGTH_LONG).show();
    }

2 个答案:

答案 0 :(得分:2)

在线上有一些建议,除了if (isset($_POST['postID'])) { $lastPostID = mysqli_real_escape_string($db, $_POST['postID']); $newsarray = $Post->Posts($uid, $lastPostID); if ($newsarray) { $r = 0; // $show_hashTags = false; foreach ($newsarray as $PostFromData) { include("../contents/posts.php"); ++$r; if ($r % 10 == 0) { include("../contents/show.php"); } // $show_hashTags = true; } } } 操作外,您还需要某些设备支持的BOOT_COMPLETED。 您可以检查此Q/A以获得详细信息。

要实现此目的,我还必须添加QUICKBOOT_POWERON,然后在用户选择时按需添加,我以编程方式将其更改为android:enabled="false",但是尝试起来有点复杂。

您可以首先通过更改代码来查看它是否有效。

android:enabled="true"

如果您想尝试禁用逻辑,然后以编程方式启用此功能,请使用以下代码:

<receiver android:name=".BootCompletedReceiver" 
    android:enabled="true">
    <intent-filter>
        <action android:name="android.intent.action.QUICKBOOT_POWERON" />
        <action android:name="android.intent.action.BOOT_COMPLETED" />
    </intent-filter>
</receiver>

我也想在不再需要该功能时将其禁用。

特殊情况:

取决于设备制造商,在启动时会有一些有关不同广播的报告:

  • Xiaomi MIUI使用:private static void changeBootStateReceiver(Context context, boolean enable) { ComponentName receiver = new ComponentName(context, BootCompletedReceiver.class); PackageManager pm = context.getPackageManager(); pm.setComponentEnabledSetting(receiver, enable ? PackageManager.COMPONENT_ENABLED_STATE_ENABLED : PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP); }
  • HTC使用:android.intent.action.REBOOT

答案 1 :(得分:0)

在您的设备中检查是否允许该应用在后台运行(对不起,尚无法发表评论)。

您可能还想在牛轧糖及更高版本上尝试 LOCKED_BOOT_COMPLETED 。请在此处查看the docs。它使您可以在用户解锁屏幕之前先听操作。