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