gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 17:01:44 25 4
gpt4 key购买 nike

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

从我的 list 中接收启动完成权限:

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

从我的 list 中接收:

    <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();
}

最佳答案

网上有一些建议,除了BOOT_COMPLETED Action ,你还需要一些设备支持的QUICKBOOT_POWERON。你可以查看这个Q/A了解详情。

为了实现这一点,我还必须添加 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>

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

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);
}

我也喜欢在不再需要时禁用该功能。

特殊情况:

根据设备制造商的不同,有一些关于启动时不同广播的报告:

  • Xiaomi MIUI使用:android.intent.action.REBOOT
  • HTC使用:com.htc.action.QUICKBOOT_POWERON

关于重启后未收到Android启动完成通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53847965/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com