我想在指定的時間觸發通知和鬧鐘。我已經把日誌信息提供給控制檯,看看是否設置了正確的時間,這很好。但是,警報仍然沒有被觸發。請幫忙。在指定時間沒有觸發鬧鐘和通知
/代碼創建通知和報警/
btn_add_task.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
db.addTask(new DataModel(input_task_title.getText().toString(),input_task_desc.getText().toString(),
checkBox.isChecked(),txtDate.getText().toString(),txtTime.getText().toString(),isComplete));
Calendar calendar = Calendar.getInstance();
//Set notification for the set date and time
calendar.set(Calendar.MONTH, month);
calendar.set(Calendar.YEAR, year);
calendar.set(Calendar.DAY_OF_MONTH, day);
calendar.set(Calendar.HOUR_OF_DAY, hour);
calendar.set(Calendar.MINUTE, minute);
calendar.set(Calendar.SECOND, 0);
if(mHour>12) {
calendar.set(Calendar.AM_PM, Calendar.PM);
} else {
calendar.set(Calendar.AM_PM, Calendar.AM);
}
Log.i("Alarm at: ",calendar.get(Calendar.DAY_OF_MONTH)+"-"+
calendar.get(Calendar.MONTH)+"-"+
calendar.get(Calendar.YEAR)+" at "+
calendar.get(Calendar.HOUR_OF_DAY)+":"+
calendar.get(Calendar.MINUTE));
Intent notifyMessage = new Intent(getApplicationContext(),NotificationMessage.class);
PendingIntent pi = PendingIntent.getService(getApplicationContext(), 0, notifyMessage, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
am.setRepeating(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis(),AlarmManager.INTERVAL_DAY,pi);
Toast.makeText(getApplicationContext(),R.string.new_task_added,Toast.LENGTH_LONG).show();
startActivity(new Intent(AddTask.this,MainActivity.class));
}
});
/通知消息類/
package com.apps.katz.doer;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.support.v4.app.NotificationCompat;
import android.util.Log;
/**
* Created by katz on 4/5/16.
*/
public class NotificationMessage extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
showNotification(context);
}
private void showNotification(Context context) {
Log.i("notification","visible");
PendingIntent contentIntent = PendingIntent.getActivity(context,0,
new Intent(context,NotificationMessage.class),0);
NotificationCompat.Builder mBuilder =
new NotificationCompat.Builder(context).setSmallIcon(R.mipmap.ic_launcher)
.setContentTitle("Doer Notification")
.setContentText("This is a Doer Notification");
mBuilder.setContentIntent(contentIntent);
mBuilder.setDefaults(Notification.DEFAULT_SOUND);
mBuilder.setDefaults(Notification.DEFAULT_VIBRATE);
mBuilder.setDefaults(Notification.DEFAULT_LIGHTS);
mBuilder.setAutoCancel(true);
NotificationManager manager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
manager.notify(1,mBuilder.build());
}
}
請幫我在做什麼錯?
嗨Jofre,我試着使用setRepeating和setExactAndAllowWhileIdle,但沒有任何工作方式。請提供其他提示嗎? –
你是什麼意思沒有工作?沒有在確切的時間觸發鬧鐘,或根本沒有工作? –
根本沒有觸發警報。 –