在 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 数据库的提醒。