Создать аларм программно
Создать аларм программно
Добавляется запись в базу - надо создать для нее свой аларм. Он будет получать данные из базы и слать нотифики.
Подскажите - как это сделать правильно, чтобы алармы не пересекались, т.к. они все будут обращаться к одному бродкасту для отправки нотифика?
И как это вообще сделать, что-то не могу сообразить действия ((?
Подскажите - как это сделать правильно, чтобы алармы не пересекались, т.к. они все будут обращаться к одному бродкасту для отправки нотифика?
И как это вообще сделать, что-то не могу сообразить действия ((?
Re: Создать аларм программно
Присвоить каждому аларму уникальный URI, в котором содержится нужная информация.
Re: Создать аларм программно
кусочек кода плз, я знаю, у тебя есть )))
Re: Создать аларм программно
Ок. Соответствующую статью не нашел, опишу основные моменты.
1) Создаем в манифесте ресивер, способный принимать URI адреса:
Тут главная строка <data android:scheme="mysuperalarm" />, она задает какой тип URI принимает наш ресивер, у нас это к примеру "mysuperalarm://авторство/параметр 1/параметр 2/и т.д.". Тут главное придумать уникальное название для схемы.
2) Создаем нужные алармы с URI по нашей схеме:
П.С. код выдернул из существующего проекта, чуть поменяв названия переменных.
3) Создаем ресивер, в котором первыми строками идет:
Далее делаем проверку параметров, и при необходимости, выводим Нотификейшин.
1) Создаем в манифесте ресивер, способный принимать URI адреса:
Код: Выделить всё
<receiver
android:name=".MySuperAlarmReceiver"
android:enabled="true"
android:exported="false" >
<intent-filter>
<data android:scheme="mysuperalarm" />
</intent-filter>
</receiver>
2) Создаем нужные алармы с URI по нашей схеме:
Код: Выделить всё
public void AddAlarmTicket(int _auth, long _param1, int _param2, long _param3, long _param4, long _param5, long _param5, long _param6){
Intent iAlarm = new Intent(this, MySuperAlarmReceiver.class);
String suri="";
// Тип схемы
suri+="mysuperalarm://";
// Тип Аларма (параметр автора в URI)
suri+=Integer.toString(_auth)+"/";
// Параметр 1
suri+=Long.toString(_param1)+"/";
// Параметр 2
suri+=Integer.toString(_param2)+"/";
// Параметр 3
suri+=Long.toString(_param3)+"/";
// Параметр 4
suri+=Long.toString(_param4)+"/";
// Параметр 5
suri+=Long.toString(_param5)+"/";
// Параметр 6
suri+=Long.toString(_param6);
Uri auri=Uri.parse(suri);
iAlarm.setData(auri);
PendingIntent pAlarm = PendingIntent.getBroadcast(this, 0, iAlarm, Intent.FLAG_GRANT_READ_URI_PERMISSION);
if(_param6>=System.currentTimeMillis()){
AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP, _param6, pAlarm);
//Log.d("MyLog", "Add alarm "+suri);
//Log.d("MyLog", "Start time "+_param6);
}
}
3) Создаем ресивер, в котором первыми строками идет:
Код: Выделить всё
Uri auri = intent.getData(); // Получаем полный URI, который вызвал срабатывание ресивера
String elType = auri.getAuthority(); // Получаем тип аларма (авторство uri)
List<String> elAlarm=auri.getPathSegments(); // Получаем коллекцию параметров из URI
Последний раз редактировалось neoksi 30 янв 2013, 09:35, всего редактировалось 1 раз.
Re: Создать аларм программно
ого...сложно для меня, но буду изучать, данкс
Re: Создать аларм программно
В понедельник (04.02) как раз выйдет урок на эту тему
Re: Создать аларм программно
А как обратиться потом к каждому элементу списка? т.е. скажем у меня есть URI мойури///элемент1/элемент2/элемент3/элемент4neoksi писал(а):Код: Выделить всё
Uri auri = intent.getData(); // Получаем полный URI, который вызвал срабатывание ресивера String elType = auri.getAuthority(); // Получаем тип аларма (авторство uri) List<String> elAlarm=auri.getPathSegments(); // Получаем коллекцию параметров из URI
Как обратиться к элементу списка, соответстующему элементу3 из ури?
Re: Создать аларм программно
elType == элемент1powercat писал(а):А как обратиться потом к каждому элементу списка? т.е. скажем у меня есть URI мойури///элемент1/элемент2/элемент3/элемент4neoksi писал(а):Код: Выделить всё
Uri auri = intent.getData(); // Получаем полный URI, который вызвал срабатывание ресивера String elType = auri.getAuthority(); // Получаем тип аларма (авторство uri) List<String> elAlarm=auri.getPathSegments(); // Получаем коллекцию параметров из URI
Как обратиться к элементу списка, соответстующему элементу3 из ури?
elAlarm.get(0) == элемент2
elAlarm.get(1) == элемент3
elAlarm.get(2) == элемент4
Re: Создать аларм программно
да, я что-то ступил )))