Вопрос по android, android-notifications, alarmmanager, android-calendar, android-alarms – Функциональность напоминания

1

В моем приложении я пытаюсь установить напоминание и будильник на это напоминание, но я не могу это сделать.

Как я нене иметь полных и правильных знаний о том, как установить напоминание, отредактировать и удалить его. Поскольку я искал в Google, и то, что я получил, не легко понять для меня.

Я пробовал код как: Main.java

Calendar cal = Calendar.getInstance();
java.util.Calendar;

// add minutes to the calendar object
cal.set(Calendar.MONTH, 4);
cal.set(Calendar.YEAR, 2011);               
cal.set(Calendar.DAY_OF_MONTH, 5);
cal.set(Calendar.HOUR_OF_DAY, 21);
cal.set(Calendar.MINUTE, 43);

Intent alarmintent = new Intent(getApplicationContext(), AlarmReceiver.class);
alarmintent.putExtra("title","Title of our Notification");
alarmintent.putExtra("note","Description of our  Notification");
//HELLO_ID is a static variable that must be initialised at the BEGINNING OF CLASS with    1;

//example:protected static int HELLO_ID =1;
PendingIntent sender = PendingIntent.getBroadcast(getApplicationContext(), HELLO_ID,
alarmintent,PendingIntent.FLAG_UPDATE_CURRENT|  Intent.FILL_IN_DATA);
//VERY IMPORTANT TO SET FLAG_UPDATE_CURRENT... this will send correct extra's     informations to 
//AlarmReceiver Class
// Get the AlarmManager service

AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), sender);

AlarmReceiver.java

import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.widget.Toast;

public class AlarmReceiver extends BroadcastReceiver {

    private static int NOTIFICATION_ID = 1;

@Override
public void onReceive(Context context, Intent intent) {

    NotificationManager manger = (NotificationManager)     
    context.getSystemService(Context.NOTIFICATION_SERVICE);
    Notification notification = new Notification(R.drawable.icon, "Combi Note", System.currentTimeMillis());
    PendingIntent contentIntent = PendingIntent.getActivity(context, NOTIFICATION_ID, new Intent(context, AlarmReceiver.class), 0);
    Bundle extras=intent.getExtras();
    String title=extras.getString("title");
    //here we get the title and description of our Notification

    String note=extras.getString("note");
    notification.setLatestEventInfo(context, note, title, contentIntent);
    notification.flags = Notification.FLAG_INSISTENT;
    notification.defaults |= Notification.DEFAULT_SOUND;
    //here we set the default sound for our 
    //notification

    // The PendingIntent to launch our activity if the user selects this notification
    manger.notify(NOTIFICATION_ID++, notification);
    }
}

Как установить напоминания в календаре, редактировать их и удалять их.

Спасибо.

Эта ссылка может помочь вам:stackoverflow.com/questions/5976098/... Anchal

Ваш Ответ

1   ответ
4

Я нашел ответ после того, как посмотрел, как, мы можем установить напоминание в Android-устройстве, перейдя по умолчанию с помощью событий и напоминаний.

Код такой, как показано:

public void addReminder(int statrYear, int startMonth, int startDay, int startHour, int startMinut, int endYear, int endMonth, int endDay, int endHour, int endMinuts){ 
    Calendar beginTime = Calendar.getInstance();
    beginTime.set(statrYear, startMonth, startDay, startHour, startMinut);
    long startMillis = beginTime.getTimeInMillis();

    Calendar endTime = Calendar.getInstance();
    endTime.set(endYear, endMonth, endDay, endHour, endMinuts);
    long endMillis = endTime.getTimeInMillis();

    String eventUriString = "content://com.android.calendar/events";
    ContentValues eventValues = new ContentValues();

    eventValues.put(Events.CALENDAR_ID, 1);
    eventValues.put(Events.TITLE, "OCS");
    eventValues.put(Events.DESCRIPTION, "Clinic App");
    eventValues.put(Events.EVENT_TIMEZONE, "Nasik");
    eventValues.put(Events.DTSTART, startMillis);
    eventValues.put(Events.DTEND, endMillis);

    //eventValues.put(Events.RRULE, "FREQ=DAILY;COUNT=2;UNTIL="+endMillis);
    eventValues.put("eventStatus", 1);
    eventValues.put("visibility", 3);
    eventValues.put("transparency", 0); 
    eventValues.put(Events.HAS_ALARM, 1);

    Uri eventUri = getContentResolver().insert(Uri.parse(eventUriString), eventValues);
    long eventID = Long.parseLong(eventUri.getLastPathSegment());

    /***************** Event: Reminder(with alert) Adding reminder to event *******************/

    String reminderUriString = "content://com.android.calendar/reminders";

    ContentValues reminderValues = new ContentValues();

    reminderValues.put("event_id", eventID);
    reminderValues.put("minutes", 1);
    reminderValues.put("method", 1);

    Uri reminderUri = getContentResolver().insert(Uri.parse(reminderUriString), reminderValues);
}   

Надеюсь, что этот ответ поможет установить напоминание в календаре для всех.

@Manoj, ваш код работает нормально, и появляется уведомление о предупреждении, но когда я нажимаю на уведомление, оно попадает в конкретное событие. Я хочу, чтобы пользователь приземлился в моем приложении, когда пользователь нажимает на напоминание вместо определенного события? Могу ли я достичь этого? Nooruddin Lakhani
спасибо, я искал это! leojg

Похожие вопросы