我有一個簡單的應用程序,其中一項活動應該在特定時間每天顯示通知。 這些都是我的課:AlarmManager警報每30分鐘而不是每天警報
onAlarmReceiver
public class OnAlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
context.startService(new Intent(context, AppService.class));
}
}
onBootReceiver
public class OnBootReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
AlarmController alarm = new AlarmController(context);
alarm.StartAlarm();
}
}
AppService服務,使通知
public class AppService extends Service {
private static String TAG = "AppService";
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.i(TAG, "start job");
ConnectivityManager cm = (ConnectivityManager)
getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo ni = cm.getActiveNetworkInfo();
if (ni == null) {
// There are no active networks.
} else{
Uri uri= RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.ic_launcher) // notification icon
.setContentTitle("اtitle") // title for notification
.setContentText("content") // message for notification
.setAutoCancel(true)
.setSound(uri); // clear notification after click
Intent intentt = new Intent(this, MainActivity.class);
PendingIntent pi = PendingIntent.getActivity(this,0,intentt,Intent.FLAG_ACTIVITY_CLEAR_TOP);
mBuilder.setContentIntent(pi);
NotificationManager mNotificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(0, mBuilder.build());
}
//
Log.i(TAG, "stop job");
return START_STICKY;
}
}
AlarmController類,包括我的alarmmanager
public class AlarmController {
private Context m_Context;
private AlarmManager mgr;
private PendingIntent pi;
public AlarmController(Context context) {
m_Context = context;
}
public void StartAlarm() {
mgr = (AlarmManager)m_Context.getSystemService(Context.ALARM_SERVICE);
Intent i = new Intent(m_Context, OnAlarmReceiver.class);
pi=PendingIntent.getBroadcast(m_Context,0 ,i, PendingIntent.FLAG_UPDATE_CURRENT);
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY, 17);
calendar.set(Calendar.MINUTE, 40);
Log.i("AlarmController", "StartAlarm");
mgr.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
AlarmManager.INTERVAL_DAY, pi);
}
}
,我在MainActivity
AlarmController alarm = new AlarmController(this);
alarm.StartAlarm();
的onCreate方法寫這甚至把這個代碼的方法,只是在第一次應用程序將安裝運行。 但它仍然會顯示通知幾乎每30分鐘而不是每天。
我該怎麼辦?我的代碼有什麼問題? 謝謝!
你想報警,因爲該應用程序每24小時推出,或者你想在一天的同一時間得到它 - 17:40每天? – TDG
在同一時間 - 17:40! –