gpt4 book ai didi

java - 如何在指定日期之前在Android中设置通知

转载 作者:太空狗 更新时间:2023-10-29 14:53:15 25 4
gpt4 key购买 nike

我正在制作一个应用程序,用户可以在其中为 friend 的生日设置提醒,但我一直坚持将日期类型存储在数据库中,并且还设置了一个通知,正如我在标题中所说,在指定日期之前日期。

我该怎么做?

这是我的代码,我只是在文本按钮上显示用户选择的日期,但我想存储该日期并在该特定日期前 2-3 周设置通知。

这是我的代码:

@SuppressLint("ValidFragment")
public class DatePickerFragment extends DialogFragment
implements DatePickerDialog.OnDateSetListener {

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Use the current date as the default date in the picker
final Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DAY_OF_MONTH);

// Create a new instance of DatePickerDialog and return it
return new DatePickerDialog(getActivity(), this, year, month, day);
}

@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
mYear = year;
mMonth = monthOfYear;
mDay = dayOfMonth;

// set selected date in button
addBirthdayDate.setText(new StringBuilder().append(mMonth + 1)
.append("-").append(mDay).append("-").append(mYear)
.append("-"));
}
}

还有数据库代码(我已经在数据库中尝试了一些东西,但我不太确定我在那里做什么)。所以我很感激这里的任何帮助:

public class DBHelper extends SQLiteOpenHelper {

private static final int DATABASE_VERSION = 5;
private static final String DATABASE_NAME = "_database";

private static final String BIRTHDAY_TABLE_NAME = "birthday_table";
public static final String BIRTHDAY_ID = "birthday_id";
public static final String BIRTHDAY_NAME = "birthday_name";
public static final String BIRTHDAY_LAST_NAME = "birthday_last_name";
public static final String BIRTHDAY_GENDER = "birthday_gender";
public static final String BIRTHDAY_AGE = "birthday_age";
public static final String BIRTHDAY_DATE = "birthday_date";

private static final String CREATE_TABLE = "CREATE TABLE " + BIRTHDAY_TABLE_NAME + " ( "
+ BIRTHDAY_ID + " INTEGER PRIMARY KEY,"
+ BIRTHDAY_NAME + " TEXT,"
+ BIRTHDAY_LAST_NAME + " TEXT,"
+ BIRTHDAY_GENDER + " TEXT,"
+ BIRTHDAY_DATE + " DATETIME,"
+ BIRTHDAY_AGE + " INTEGER );";

SQLiteDatabase database;

public DBHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}

@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_TABLE);
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + BIRTHDAY_TABLE_NAME);
onCreate(db);
}

public String getDateTime() {
SimpleDateFormat dateFormat = new SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss", Locale.getDefault());
Date date = new Date();
return dateFormat.format(date);
}

public void setBirthdayData(String birthdayName, String birthdayLastName, String birthdayGender
,int age) {
database = getWritableDatabase();
ContentValues cv = new ContentValues();
cv.put(BIRTHDAY_NAME, birthdayName);
cv.put(BIRTHDAY_LAST_NAME, birthdayLastName);
cv.put(BIRTHDAY_GENDER, birthdayGender);
cv.put(BIRTHDAY_AGE, age);
cv.put(BIRTHDAY_DATE, getDateTime());
database.insert(BIRTHDAY_TABLE_NAME, null, cv);
}

最佳答案

如果你还有这个顾虑,我觉得没有必要存入数据库。只需将它存储在一个变量中,为您想要的任何时刻设置一个警报管理器,如果您不再需要通知,您可以将其删除。

如果您仍想在数据库中存储日期时间,我建议将它们存储为整数。这是我如何在我的应用程序中存储时间戳的示例:

private static final String CREATE_TABLE_NOTE = "create table "
+ Constants.NOTES_TABLE
+ "("
+ Constants.COL_ID + " integer primary key autoincrement, "
+ Constants.COL_TITLE + " text not null, "
+ Constants.COL_CONTENT + " text, "
+ Constants.COL_TYPE + " text not null, "
+ Constants.COL_CATID + " integer not null, "
+ Constants.COL_CREATED_TIME + " integer not null, "
+ Constants.COL_MODIFIED_TIME + " integer not null "
+ ")";

关于java - 如何在指定日期之前在Android中设置通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33621238/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com