Rose
Rose

Reputation: 21

Using SQL Database for AlarmManager in Android

I've recently started Android programming and sorry for my lame question. I've been trying to use my database class methods in my AlamManager class for saving the alarms but I haven't figured out how. I even tried to find a working example online and I couldn't find any either.

The problem is when I add the last two methods of my database class to my MainActivity class the alarms do not go off.

Any help would be greatly appreciated.

So, here is my code:

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

}

Upvotes: 1

Views: 2322

Answers (1)

Yousef
Yousef

Reputation: 54

please check this tutorial out, it teaches how to create a reminder which also made use of SQLite database.

Upvotes: 1

Related Questions