警报服务不起作用

时间:2015-08-26 15:51:45

标签: android service notifications broadcastreceiver alarm

我想在每个月的第一天设置闹钟。我编写了相应的代码,但它实际上并没有创建任何警报。你能告诉我我的代码有什么问题吗?

import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.support.v4.app.NotificationCompat;
import android.text.format.Time;

public class AlertReceiver extends BroadcastReceiver {

    MainActivity mA = new MainActivity();

    String[] monthNames = {"January", "February", "March", "April", "May", "June",
            "July", "August", "September", "October", "November", "December"};
    Time today = new Time(Time.getCurrentTimezone());
    String currentMonth = monthNames[(today.month)];;

    @Override
    public void onReceive(Context context, Intent intent) {
        today.setToNow();
        createNotification(context, "Your Plans for the Upcoming Month", "Plans for " + currentMonth + ":", mA.aList);
    }

    public void createNotification(Context context, String msg, String msgText, String msgAlert ){

        PendingIntent notificIntent = PendingIntent.getActivity(context, 0, new Intent
                (context, MainActivity.class), 0);
        NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context)
                .setTicker(msg)
                .setContentTitle(msgText)
                .setContentText(msgAlert)
                .setSmallIcon(R.drawable.ic_stat_name)
                .setContentIntent(notificIntent)
                .setSound(Uri.parse("android.resource://"
                        + context.getPackageName() + "/" + R.raw.sound_notification))
                .setAutoCancel(true);
        NotificationManager notificationManager = (NotificationManager)
                context.getSystemService(Context.NOTIFICATION_SERVICE);

        notificationManager.notify(1, mBuilder.build());
    }
}

在MainActivity中,我实现了从选项菜单打开通知后调用的以下方法:

public void setAlarm() {

    Calendar calendar = Calendar.getInstance();
    calendar.setTimeInMillis(System.currentTimeMillis());
    calendar.set(Calendar.DAY_OF_MONTH, 26);
    calendar.set(Calendar.HOUR_OF_DAY, 20);
    calendar.set(Calendar.MINUTE, 00);

    Intent alertIntent = new Intent(this, AlertReceiver.class);
    AlarmManager aManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
    aManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
            PendingIntent.getBroadcast(this, 0, alertIntent, 0));


}

0 个答案:

没有答案