我正在开发Android应用程序,其中我一度陷入困境,
我想做的是,
当用户在一天内第一次启动应用时,我想向他显示一些警报。当他在同一天第二次打开应用程序时,它将不会收到警报。 (他只会在第一天发布应用程序时收到警报。)
第二天,如果他再次第一次打开应用程序,他会得到警报,第二次他不会收到警报。
简而言之:用户应该在每天的首次发布时获得警报。
任何想法,我应该如何实现这一目标?提前谢谢。
答案 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类。
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运行
对于共享偏好设置,请参阅此
用于警报管理器
答案 4 :(得分:0)
这不是一个好的解决方案,但在用户杀死应用程序之前我不会显示消息。这是我的代码:
private static boolean isFirstLaunch = true;
/pic/l_jabra_evolve80.jpg