在android中每天的首次启动应用程序显示警报

时间:2014-07-24 06:16:19

标签: android android-activity alertdialog

我正在开发Android应用程序,其中我一度陷入困境,

我想做的是,

当用户在一天内第一次启动应用时,我想向他显示一些警报。当他在同一天第二次打开应用程序时,它将不会收到警报。 (他只会在第一天发布应用程序时收到警报。)

第二天,如果他再次第一次打开应用程序,他会得到警报,第二次他不会收到警报。

简而言之:用户应该在每天的首次发布时获得警报。

任何想法,我应该如何实现这一目标?提前谢谢。

5 个答案:

答案 0 :(得分:10)

我们可以通过shared preference实现这一目标。 在您的第一个活动中,有一个方法在oncreate方法中执行以下步骤:

1. Read a value (lastlaunchdate) from shared preference.

2. Check if current date = lastlaunchdate

3. If #2 is true, then ignore and proceed with usual flow

4. If #2 is false, then  

 4.a display the alert box

  4.b save current date as lastlaunchdate in shared preference.

示例代码:

if (sharedPref.loadSharedPreference(getApplicationContext(), "LAST_LAUNCH_DATE").equals(new SimpleDateFormat("yyyy/MM/dd", Locale.US).format(new Date())))
{
    // Date matches. User has already Launched the app once today. So do nothing.
}
else
{
    // Display dialog text here......
    // Do all other actions for first time launch in the day...
    // Set the last Launched date to today.
    sharedPref.saveSharedPreference(getApplicationContext(), "LAST_LAUNCH_DATE", new SimpleDateFormat("yyyy/MM/dd", Locale.US).format(new Date()));
}

答案 1 :(得分:2)

Nishanthi解决方案的一个更明确的例子对我很有用:

SharedPreferences sharedPref = getSharedPreferences(PREFS_NAME, 0);
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
        String currentDate = sdf.format(new Date());
        if (sharedPref.getString("LAST_LAUNCH_DATE","nodate").contains(currentDate)){
            // Date matches. User has already Launched the app once today. So do nothing.
        }
        else
        {
            // Display dialog text here......
            // Do all other actions for first time launch in the day...
            new CheckUpgradeStatus().execute();
            // Set the last Launched date to today.
            SharedPreferences.Editor editor = sharedPref.edit();
            editor.putString("LAST_LAUNCH_DATE", currentDate);
            editor.commit();
        }

答案 2 :(得分:1)

  1. 在DateHelper类中实现函数getCurrentDate()。
  2. 实现函数集并获取SharedPreference类。
  3. 实施检查当前日期的功能。
  4. 请参阅以下代码。

    <强> 1。 DateHelper类。

        public static String getCurrentDate() {
            DateFormat simpleDateFormat = new SimpleDateFormat("dd/MM/yyyy");
            Date date = new Date();
            return simpleDateFormat.format(date);
        }
    

    <强> 2。 SharedPreference类。

        public String getDatePreference() {
            SharedPreferences preferences = getPreference();
            return preferences.getString(DATE_KEY, null);
        }
    
        public void setDatePreference(String datePreference) {
            final SharedPreferences.Editor editor = getEditor();
            editor.putString(DATE_KEY, datePreference);
            editor.apply();
        }
    

    3.在Activity类中实现showMessageOnceDay函数。

        public showMessageOnceDay(String message) {
            currentDate = sharedPreference.getDatePreference();
            if (currentDate == null) {
               alertDialogMessage(message);
    
          sharedPreference.setDatePreference(DateHelper.getCurrentDate());
        } else {
            if (!currentDate.equals(DateHelper.getCurrentDate())) {
                alertDialogMessage(message);
                sharedPreference.setDatePreference(DateHelper.getCurrentDate());
            }
        }
        }
    

答案 3 :(得分:0)

SharedPrefrences将帮助您完成任务。打开应用程序时,只需检查共享首选项中某些boolean变量的值。使用设置值的AlarmManager设置警报通过服务boolean false每天sharedpreferences变量到00:00,然后当用户打开您的变量时,将该变量的值更改为true如果变量已经是true,那么剩下的时间都不会发生任何事情。实际上,每次应用程序启动时都必须检查值,除了该服务之外,没有什么必须将该变量变为false将在00:00运行

  

对于共享偏好设置,请参阅此

How to use SharedPreferences

  

用于警报管理器

请参阅此Alarm Manager Example

答案 4 :(得分:0)

这不是一个好的解决方案,但在用户杀死应用程序之前我不会显示消息。这是我的代码:

  

private static boolean isFirstLaunch = true;

/pic/l_jabra_evolve80.jpg