在 Android 中为 AlarmManager 使用 SQL 数据库
Using SQL Database for AlarmManager in Android
我最近开始 Android 编程,很抱歉我提出了蹩脚的问题。我一直在尝试在我的 AlamManager class 中使用我的数据库 class 方法来保存警报,但我还没有弄清楚如何。我什至试图在网上找到一个有效的例子,但我也找不到。
问题是当我将我的数据库 class 的最后两个方法添加到我的 MainActivity class 时,警报没有响起。
如有任何帮助,我们将不胜感激。
所以,这是我的代码:
MainActivity.java
public class MainActivity extends AppCompatActivity {
DatabaseHandler MyDatabase;
EditText editText1, editText2;
Button button1;
int mHour, mMinute;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MyDatabase = new DatabaseHandler(this);
editText1 = (EditText) findViewById(R.id.editText1);
editText2 = (EditText) findViewById(R.id.editText2);
button1 = (Button) findViewById(R.id.button1);
editText2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onOpenTimePickerDialog(false);
}
});
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, mHour);
calendar.set(Calendar.MINUTE, mMinute);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
Intent intent = new Intent(MainActivity.this, AlarmReceiver.class);
AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
PendingIntent pIntent = PendingIntent.getBroadcast(MainActivity.this, 0, intent, 0);
am.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pIntent);
}
});
}
private void onOpenTimePickerDialog(boolean is24r) {
Calendar calendar = Calendar.getInstance();
TimePickerDialog timePickerDialog = new TimePickerDialog(
MainActivity.this,
onTimeSetListener,
calendar.get(Calendar.HOUR_OF_DAY),
calendar.get(Calendar.MINUTE),
is24r);
timePickerDialog.setTitle("set time");
timePickerDialog.show();
}
TimePickerDialog.OnTimeSetListener onTimeSetListener = new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
mHour = hourOfDay;
mMinute = minute;
}
};
}
DatabaseHandler.java
public class DatabaseHandler extends SQLiteOpenHelper {
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_NAME = "friends";
private static final String TABLE_NAME = "friends_table";
public static final String COL_1 = "ID";
public static final String COL_2 = "SUBJECT";
public static final String COL_3 = "TIME";
public DatabaseHandler(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table " + TABLE_NAME + " (ID INTEGER PRIMARY KEY AUTOINCREMENT, SUBJECT TEXT, TIME INTEGER) ");
}
//to upgrade the database
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
onCreate(db);
}
public boolean addData(String subject, String time) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(COL_2, subject);
values.put(COL_3, time);
long result = db.insert(TABLE_NAME, null, values);
if (result == -1) {
return false;
} else {
return true;
}
} // The first method I want to use in my MainActivity class
public Cursor returnData() {
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery("select * from " + TABLE_NAME, null);
return cursor;
} // The secondmethod I want to use in my MainActivity class
}
请检查 this tutorial,它教导如何创建也使用 SQLite 数据库的提醒。
我最近开始 Android 编程,很抱歉我提出了蹩脚的问题。我一直在尝试在我的 AlamManager class 中使用我的数据库 class 方法来保存警报,但我还没有弄清楚如何。我什至试图在网上找到一个有效的例子,但我也找不到。
问题是当我将我的数据库 class 的最后两个方法添加到我的 MainActivity class 时,警报没有响起。
如有任何帮助,我们将不胜感激。
所以,这是我的代码:
MainActivity.java
public class MainActivity extends AppCompatActivity {
DatabaseHandler MyDatabase;
EditText editText1, editText2;
Button button1;
int mHour, mMinute;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MyDatabase = new DatabaseHandler(this);
editText1 = (EditText) findViewById(R.id.editText1);
editText2 = (EditText) findViewById(R.id.editText2);
button1 = (Button) findViewById(R.id.button1);
editText2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onOpenTimePickerDialog(false);
}
});
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, mHour);
calendar.set(Calendar.MINUTE, mMinute);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
Intent intent = new Intent(MainActivity.this, AlarmReceiver.class);
AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
PendingIntent pIntent = PendingIntent.getBroadcast(MainActivity.this, 0, intent, 0);
am.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pIntent);
}
});
}
private void onOpenTimePickerDialog(boolean is24r) {
Calendar calendar = Calendar.getInstance();
TimePickerDialog timePickerDialog = new TimePickerDialog(
MainActivity.this,
onTimeSetListener,
calendar.get(Calendar.HOUR_OF_DAY),
calendar.get(Calendar.MINUTE),
is24r);
timePickerDialog.setTitle("set time");
timePickerDialog.show();
}
TimePickerDialog.OnTimeSetListener onTimeSetListener = new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
mHour = hourOfDay;
mMinute = minute;
}
};
}
DatabaseHandler.java
public class DatabaseHandler extends SQLiteOpenHelper {
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_NAME = "friends";
private static final String TABLE_NAME = "friends_table";
public static final String COL_1 = "ID";
public static final String COL_2 = "SUBJECT";
public static final String COL_3 = "TIME";
public DatabaseHandler(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table " + TABLE_NAME + " (ID INTEGER PRIMARY KEY AUTOINCREMENT, SUBJECT TEXT, TIME INTEGER) ");
}
//to upgrade the database
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
onCreate(db);
}
public boolean addData(String subject, String time) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(COL_2, subject);
values.put(COL_3, time);
long result = db.insert(TABLE_NAME, null, values);
if (result == -1) {
return false;
} else {
return true;
}
} // The first method I want to use in my MainActivity class
public Cursor returnData() {
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery("select * from " + TABLE_NAME, null);
return cursor;
} // The secondmethod I want to use in my MainActivity class
}
请检查 this tutorial,它教导如何创建也使用 SQLite 数据库的提醒。