Справка по приложениям Android - PullRequest
0 голосов
/ 08 мая 2011

Привет! Я создал приложение для напоминания о задачах. Однако я не могу заставить его уведомить пользователя о задании с именем задания. Это должно быть довольно просто, но я не могу этого сделать.

Я хочу, чтобы это было сделано: я сохраняю задачу под названием «Задача 3» и напоминаю мне о 18:00. Когда наступает 6 вечера, я получаю уведомление с уведомлением «Задача 3». На данный момент он говорит только о том, что «задача должна быть проверена». Есть ли способ получить название задачи и представить его как уведомление вместо строки?

Это класс обслуживания напоминания:

public ReminderService () { супер ( "ReminderService"); }

@Override
void doReminderWork(Intent intent) {
    Log.d("ReminderService", "Doing work.");
    Long rowId = intent.getExtras().getLong(RemindersDbAdapter.KEY_ROWID);

    NotificationManager mgr = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);

    Intent notificationIntent = new Intent(this, ReminderEditActivity.class);                 
    notificationIntent.putExtra(RemindersDbAdapter.KEY_ROWID, rowId); 

    PendingIntent pi = PendingIntent.getActivity(this, 0, notificationIntent, PendingIntent.FLAG_ONE_SHOT); 

// Кстати, это бит, который мне нужно изменить.

    Notification notification=new Notification(android.R.drawable.stat_sys_warning, getString(R.string.notify_new_task_message), System.currentTimeMillis());
    notification.setLatestEventInfo(this, getString(R.string.notify_new_task_title), getString(R.string.notify_new_task_message), pi);

и это класс напоминаний для адаптации

* @param reminderDateTime the date and time the reminder should remind the user
 * @return rowId or -1 if failed
 */
public long createReminder(String title, String body, String reminderDateTime) {
    ContentValues initialValues = new ContentValues();
    initialValues.put(KEY_TITLE, title);
    initialValues.put(KEY_BODY, body);
    initialValues.put(KEY_DATE_TIME, reminderDateTime); 

    return mDb.insert(DATABASE_TABLE, null, initialValues);
}

/**
 * Delete the reminder with the given rowId
 * 
 * @param rowId id of reminder to delete
 * @return true if deleted, false otherwise
 */
public boolean deleteReminder(long rowId) {

    return mDb.delete(DATABASE_TABLE, KEY_ROWID + "=" + rowId, null) > 0;
}

/**
 * Return a Cursor over the list of all reminders in the database
 * 
 * @return Cursor over all reminders
 */
public Cursor fetchAllReminders() {

    return mDb.query(DATABASE_TABLE, new String[] {KEY_ROWID, KEY_TITLE,
            KEY_BODY, KEY_DATE_TIME}, null, null, null, null, null);
}

/**
 * Return a Cursor positioned at the reminder that matches the given rowId
 * 
 * @param rowId id of reminder to retrieve
 * @return Cursor positioned to matching reminder, if found
 * @throws SQLException if reminder could not be found/retrieved
 */
public Cursor fetchReminder(long rowId) throws SQLException {

    Cursor mCursor =

            mDb.query(true, DATABASE_TABLE, new String[] {KEY_ROWID,
                    KEY_TITLE, KEY_BODY, KEY_DATE_TIME}, KEY_ROWID + "=" + rowId, null,
                    null, null, null, null);
    if (mCursor != null) {
        mCursor.moveToFirst();
    }
    return mCursor;

}

/**
 * Update the reminder using the details provided. The reminder to be updated is
 * specified using the rowId, and it is altered to use the title, body and reminder date time
 * values passed in
 * 
 * @param rowId id of reminder to update
 * @param title value to set reminder title to
 * @param body value to set reminder body to
 * @param reminderDateTime value to set the reminder time. 
 * @return true if the reminder was successfully updated, false otherwise
 */
public boolean updateReminder(long rowId, String title, String body, String reminderDateTime) {
    ContentValues args = new ContentValues();
    args.put(KEY_TITLE, title);
    args.put(KEY_BODY, body);
    args.put(KEY_DATE_TIME, reminderDateTime);

    return mDb.update(DATABASE_TABLE, args, KEY_ROWID + "=" + rowId, null) > 0;
}

}

1 Ответ

0 голосов
/ 08 мая 2011

Если я правильно понимаю, проблема в том, что вы отображаете постоянную строку, определенную в вашем string.xml.Вы должны использовать идентификатор строки, полученный из Intent, чтобы получить соответствующее напоминание из вашей базы данных и отобразить его заголовок.

Как только вы получите курсор из метода fetchReminder, предоставляя идентификатор строки, вы можете получить заголовоквашего напоминания, используя:

String reminderTitle = cursor.getString(cursor.getColumnIndex(RemindersDbAdapter.KEY_TITLE));

Убедитесь, что ваш курсор не является нулевым заранее.

...