启动App时阻止通知

时间:2017-09-27 17:10:55

标签: android notifications

我有AlarmManager以显示通知。我不希望每次启动应用时都会收到通知。我读了很多但没什么令人满意的。 doNotification中的方法MainActivity.java如下所示:

 public void doNotification(){
        AlarmManager alarmManager = (AlarmManager) this.getSystemService(Context.ALARM_SERVICE);
        Intent i = new Intent(this, AlarmReceiver.class);
        PendingIntent pending = PendingIntent.getBroadcast(this, 0, i,PendingIntent.FLAG_CANCEL_CURRENT);
        Calendar calendar = Calendar.getInstance();
        calendar.setTimeInMillis(System.currentTimeMillis());  

        alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP ,calendar.getTimeInMillis(), 1000*60*60*24*30 , pending); //every month
    }

此方法位于OnCreateMainActivity中。 我知道,这就是我每次启动应用程序时收到通知的原因。

我的目标是每月发出一次通知,从第一次启动应用的日期开始。例如,用户在7月5日启动应用程序,然后您将收到每月5日的通知。

我怎样才能做到这一点?

谢谢。

编辑:根据我使用SharedPreferences的评论,正确使用它。这是新代码:

     public void doNotification(){
        boolean isFirstAlarm = getSharedPreferences("ALARMFIRSTTIME",MODE_PRIVATE).getBoolean("isFirstAlarm",false);
        if(!isFirstAlarm) {

            AlarmManager alarmManager = (AlarmManager) this.getSystemService(Context.ALARM_SERVICE);
            Intent i = new Intent(this, AlarmReceiver.class);
            PendingIntent pending = PendingIntent.getBroadcast(this, 0, i, PendingIntent.FLAG_CANCEL_CURRENT);
            Calendar calendar = Calendar.getInstance();
            calendar.setTimeInMillis(System.currentTimeMillis());

            alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 1000 * 60 * 60 * 24 * 30, pending); //every month
        getSharedPreferences("ALARMFIRSTTIME", MODE_PRIVATE)
                .edit()
                .putBoolean("isFirstAlarm",true)
                .apply();
        }
        }

0 个答案:

没有答案