在特定时间显示通知错误 - Android

时间:2013-08-11 12:59:45

标签: android broadcastreceiver android-service alarmmanager android-notifications

我想在每天的特定时间向用户显示通知。 我已经查看了大量示例和问题,但我仍有问题 - 通知不会显示。

这是BroadcastReceiver类 -

public class AlarmManagerBroadcastReceiver extends BroadcastReceiver {

private Context con;
final public static String ONE_TIME = "onetime";
@Override
public void onReceive(Context context, Intent intent) {

    con = context;

    showNotification();

}
public void SetAlarm(Context context)
{
    Calendar now = Calendar.getInstance();
    AlarmManager am=(AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
    Intent intent = new Intent(context, AlarmManagerBroadcastReceiver.class);
    intent.putExtra(ONE_TIME, Boolean.FALSE);
    PendingIntent pi = PendingIntent.getBroadcast(context, 0, intent, 0);
    //After after 30 seconds
    am.setRepeating(AlarmManager.RTC_WAKEUP, now.getTimeInMillis(), 1000 * 5 , pi); 
}

public void CancelAlarm(Context context)
{
    Intent intent = new Intent(context, AlarmManagerBroadcastReceiver.class);
    PendingIntent sender = PendingIntent.getBroadcast(context, 0, intent, 0);
    AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
    alarmManager.cancel(sender);
}


/**
 * Creates a notification and shows it in the OS drag-down status bar
 */
private void showNotification() {
    NotificationCompat.Builder mBuilder =new NotificationCompat.Builder(con)
    .setSmallIcon(R.drawable.ic_launcher)
    .setContentTitle("Hello")
    .setContentText("Hello")
    .setDefaults(Notification.DEFAULT_ALL)
    .setTicker("HELLO!")
    .setAutoCancel(true);

    Intent resultIntent=new Intent(con, ViewMenu.class);
    PendingIntent pIntent=PendingIntent.getActivity(con,0,resultIntent,0);
    mBuilder.setContentIntent(pIntent);

     NotificationManager mNotificationManager =
         (NotificationManager) con.getSystemService(Context.NOTIFICATION_SERVICE);

     mNotificationManager.notify(90, mBuilder.build());
     Toast.makeText(con, "TEST4", Toast.LENGTH_LONG).show();

}

}

这就是我在主Activity上设置的方法 -

alarm = new testy.app.Notifications.AlarmManagerBroadcastReceiver();
alarm.SetAlarm(this);

我还在Manifest中注册了BroadcastReceiver -

    <!-- Broadcast receiver -->
    <receiver  android:name="testy$app$Notifications$AlarmManagerBroadcastReceiver</receiver>

欢迎任何建议, 感谢

1 个答案:

答案 0 :(得分:1)

我建议按照本指南http://blog.blundell-apps.com/notification-for-a-user-chosen-time/给我留下所有疑惑!