Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 通知显示何时';这是不应该的_Java_Android_Android Studio - Fatal编程技术网

Java 通知显示何时';这是不应该的

Java 通知显示何时';这是不应该的,java,android,android-studio,Java,Android,Android Studio,我目前正在处理一个通知,该通知必须在用户选择的特定时间显示 但当我运行它时,只在我在时间选择器对话框中询问时间时,才会显示通知,而不是在选定的时间,甚至在选择时间之前 是否有人知道如何更改代码,以便只在选定的时间显示通知 showDialog(DIALOG_ID); //this is the dialog that asks for an hour and minute. alarmMethod1(); private void alarmMethod1(){ Ca

我目前正在处理一个通知,该通知必须在用户选择的特定时间显示

但当我运行它时,只在我在时间选择器对话框中询问时间时,才会显示通知,而不是在选定的时间,甚至在选择时间之前

是否有人知道如何更改代码,以便只在选定的时间显示通知

showDialog(DIALOG_ID);  //this is the dialog that asks for an hour and minute.


alarmMethod1();


private void alarmMethod1(){


       Calendar calendari1 = Calendar.getInstance();
       calendari1.set(Calendar.HOUR_OF_DAY, hour_x);
       calendari1.set(Calendar.MINUTE, minute_x);
       calendari1.set(Calendar.SECOND, 00);

       Intent myIntent1 = new Intent(Main2Activity.this, NotifyService1.class);
       AlarmManager alarmManager1 = (AlarmManager) getSystemService(ALARM_SERVICE);
       pendingIntent1 = PendingIntent.getService(Main2Activity.this, 0, myIntent1, 0);
       alarmManager1.setRepeating(AlarmManager.RTC_WAKEUP, calendari1.getTimeInMillis(), 24 * 60 * 60 * 1000, pendingIntent1);

}
然后,这是一个课程,目的是:

public class NotifyService1 extends Service {

@Override
public IBinder onBind(Intent intent) {
    return null;
}
@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
@Override
public void onCreate(){
    Uri sound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);


    NotificationManager nNM = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
    Intent intent1 = new Intent(this.getApplicationContext(),Main3Activity.class);
    PendingIntent pIntent = PendingIntent.getActivity(this, 0, intent1, 0);

    Notification mNotify = new Notification.Builder(this)
            .setContentTitle("Hora d'entrenar!")
            .setContentText("Clica per començar entrenament de pit i braços")
            .setSmallIcon(R.drawable.logofinal)
            .setContentIntent(pIntent)
            .setSound(sound)
            .build();

    nNM.notify(1,mNotify);

}

}

由于Android API 19,为了减少电池消耗,所有警报都是不精确的,这意味着你的警报不会在你想要的时候被触发,但是如果你真的需要这样做,你需要使用setExact,然后自己编写重复警报处理程序,不再有“setExact和repeat”了。请参阅: