我在应用程序清单中注册了一个广播接收器,以接收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();
}
答案 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>
我也想在不再需要该功能时将其禁用。
特殊情况:
取决于设备制造商,在启动时会有一些有关不同广播的报告:
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);
}
android.intent.action.REBOOT
答案 1 :(得分:0)
在您的设备中检查是否允许该应用在后台运行(对不起,尚无法发表评论)。
您可能还想在牛轧糖及更高版本上尝试 LOCKED_BOOT_COMPLETED 。请在此处查看the docs。它使您可以在用户解锁屏幕之前先听操作。