【问题标题】:AlarmManager is not triggered after complete bootup完成启动后不触发 AlarmManager
【发布时间】:2017-08-09 11:02:32
【问题描述】:

我使用了alarmManager 来发送每日通知。由于alarmManager在重启手机后停止,所以我创建了一个BroadcastReceiver来触发BOOT_COMPLETE,仍然没有成功。 连吐司都没有。

BroadcastRreceiver 类

package com.aman.dailynoti;

import...




public class BReceiver extends BroadcastReceiver {

 @Override

public void onReceive(Context context, Intent intent) {



    if ((intent.getAction()).equals("android.intent.action.BOOT_COMPLETED")) {

        Toast.makeText(context, "broadcast", Toast.LENGTH_SHORT).show();


        SharedPreferences mpreferences=context.getSharedPreferences("myPreferences",MODE_PRIVATE);
            int h=mpreferences.getInt("hour",14);

            int m=mpreferences.getInt("minute", 30);
        Calendar calendar=  Calendar.getInstance();
        calendar.set(Calendar.HOUR_OF_DAY,h);
        calendar.set(Calendar.MINUTE,m);
        calendar.set(Calendar.SECOND,00);

        Intent notiIntent = new Intent(context, Notification_Receiver.class);

        PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 1, notiIntent, PendingIntent.FLAG_UPDATE_CURRENT);

        AlarmManager alarmManager = (AlarmManager) context.getSystemService(ALARM_SERVICE);

        alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent);

        }

  }
 }

AndroidManifest.xml

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

 <application...>
       <receiver
        android:name="com.aman.dailynoti.BReceiver"
        android:enabled="true"
        android:label="breceiver">
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED"/>
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>

        </receiver>

     </application>

【问题讨论】:

标签: android broadcastreceiver alarmmanager bootcompleted


【解决方案1】:

不要引用我的话,但我相信 android 只会给你的应用程序提供一小段时间来完成它们在启动时需要做的事情。如果您希望用户在不使用应用时收到通知,请查看推送通知。

【讨论】:

    【解决方案2】:

    你也应该使用意图过滤器android.intent.action.QUICKBOOT_POWERON在重启后接收

    【讨论】:

    • 为什么?我以前从未见过这种动作
    • 我以前用过,重启时和我一起工作
    • 如果 ((intent.getAction()).equals("android.intent.action.BOOT_COMPLETED") || intent.getAction()) 中的 statment 是否更改为等于(“android.intent.action.QUICKBOOT_POWERON”))
    • 或者你也可以删除它,你的接收者将只收到分配的操作
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多