나는 Call Manager의 개발자이며 내 앱에 알림 알리미 기능을 구현하려고합니다. 사용자는 목록의 특정 사람에게 전화 할 수있는 알림을 설정할 수 있습니다. 처음에는이 기능을 구현할 때 알림이 예약없이 즉시 표시됩니다. 이는 밀리 초 단위의 부정확 한 값 설정 때문이었습니다. 그러나 이제는이를 수정 했으므로 AlarmManager에 알맞은 밀리 초 값이 있더라도 알림이 전혀 예약되지 않습니다.특정 날짜와 시간에 대한 알림 일정 설정
통지는 다음과 같습니다 일정에있어서
public void scheduleReminder(Notification notification, String date, String time){
String[] dateArray = date.split("/");
String[] timeArray = time.split(":|\\s+");
Date currentDate = new Date();
int notHour;
Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(System.currentTimeMillis());
cal.clear();
if(timeArray[2].equals("PM")){
notHour = Integer.parseInt(timeArray[0]);
notHour = notHour + 12;
cal.set(Calendar.YEAR, Integer.parseInt(dateArray[2]));
cal.set(Calendar.MONTH, Integer.parseInt(dateArray[0]) - 1);
cal.set(Calendar.DAY_OF_MONTH, Integer.parseInt(dateArray[1]));
cal.set(Calendar.HOUR_OF_DAY, notHour);
cal.set(Calendar.MINUTE, Integer.parseInt(timeArray[1]));
}
else{
cal.set(Calendar.YEAR, Integer.parseInt(dateArray[2]));
cal.set(Calendar.MONTH, Integer.parseInt(dateArray[0]) - 1);
cal.set(Calendar.DAY_OF_MONTH, Integer.parseInt(dateArray[1]));
cal.set(Calendar.HOUR_OF_DAY, Integer.parseInt(timeArray[0]));
cal.set(Calendar.MINUTE, Integer.parseInt(timeArray[1]));
}
Date reminderDate = cal.getTime();
long diffInMillis = reminderDate.getTime() - currentDate.getTime();
Intent notificationIntent = new Intent(this, NotificationPublisher.class);
notificationIntent.putExtra(NotificationPublisher.NOTIFICATION_ID, 1);
notificationIntent.putExtra(NotificationPublisher.NOTIFICATION, notification);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + diffInMillis, pendingIntent);
}
다음과 같이
내 방송 수신기 클래스는 다음과 같습니다
package groovinchip.com.callmanager;
import android.app.Notification;
import android.app.NotificationManager;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
public class NotificationPublisher extends BroadcastReceiver {
public static String NOTIFICATION_ID = "notification-id";
public static String NOTIFICATION = "notification";
@Override
public void onReceive(Context context, Intent intent) {
NotificationManager notificationManager = (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE);
Notification notification = intent.getParcelableExtra(NOTIFICATION);
int id = intent.getIntExtra(NOTIFICATION_ID, 0);
notificationManager.notify(id, notification);
}
}
을 다음과 같이 관련 안드로이드 매니페스트 선언은 다음과 같습니다
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<receiver android:name="groovinchip.com.callmanager.NotificationPublisher"
android:enabled="true">
</receiver>
이것이 작동하지 않는 이유에 관해서 나는 혼란 스럽다. 결과는 그것을 알아 내려고 노력했다. 이 모든
에서 일하는 것이 있는지 확인하기 위해 대신diffInMillis
의 단 몇 초를 나타내는 정수 값을 전달 만
diffInMillis
(4)를 통과
SystemClock.elapsedRealTime() + diffInMillies
3 전달
System.ELAPSED_REALTIME_WAKEUP
2)))와
AlarmManager
설정 1) : 나는 사이에 전환했습니다
누구든지이 문제를 해결할 수 있습니까? 정말 고맙습니다!
신호로 살펴보기 – DroiDev