Урок 119. PendingIntent – флаги, requestCode. AlarmManager
-
- Сообщения: 16
- Зарегистрирован: 02 апр 2013, 22:44
Re: Урок 119. PendingIntent – флаги, requestCode. AlarmManag
Всем привет, может вопрос не по теме. Но я не нашёл темы , где могу его задать, а данная тема более менее подходит по теме. Итак.
Каким способом можно добавить будильники в системное приложение будильника?Как программно менять звук системного будильника?
Каким способом можно добавить будильники в системное приложение будильника?Как программно менять звук системного будильника?
Re: Урок 119. PendingIntent – флаги, requestCode. AlarmManag
В одной строке 4 слова "тема", однако здравствуйте. Насколько я знаю такие приложения на разных девайсах могут отличаться http://stackoverflow.com/a/4281243. Лучше напиши свой.
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.
-
- Сообщения: 16
- Зарегистрирован: 02 апр 2013, 22:44
Re: Урок 119. PendingIntent – флаги, requestCode. AlarmManag
Ночью писал) не заметил) по вашему ответу) пример приведённый по ссылке запускает intent будильника , а не добавляет новый будильник ) Ну может и правда лучше свой написать)doter.ua писал(а):В одной строке 4 слова "тема", однако здравствуйте. Насколько я знаю такие приложения на разных девайсах могут отличаться http://stackoverflow.com/a/4281243. Лучше напиши свой.
-
- Сообщения: 16
- Зарегистрирован: 02 апр 2013, 22:44
Re: Урок 119. PendingIntent – флаги, requestCode. AlarmManag
В общем если кому то интересно решение моего вопроса то я разобрался. Ниже приведён кусок кода , который ставит будильник на 22:00.
Теперь следующая задача как программно получить информацию о включенных будильниках и как программно удалить какой либо будильник?
Код: Выделить всё
Integer hour = 22;
Integer minute = 00;
Intent NewAlarm = new Intent(AlarmClock.ACTION_SET_ALARM);
NewAlarm.putExtra(AlarmClock.EXTRA_HOUR, hour);
NewAlarm.putExtra(AlarmClock.EXTRA_MINUTES, minute);
NewAlarm.putExtra(AlarmClock.EXTRA_SKIP_UI, true);
startActivity(NewAlarm);
Re: Урок 119. PendingIntent – флаги, requestCode. AlarmManag
Добрый день. Урок 119 становится делать сложнее, потому что метод
отказывается работать - setLatestEventInfo не просто зачёркивает (устаревший), а вообще выделяет красным.
В связи с чем переписал данный метод так:
Возможно, кому-то будет полезна эта информация. Я на неё убил часик-полтора ((
Код: Выделить всё
void sendNotif(int id, PendingIntent pIntent) {
Notification notif = new Notification(R.drawable.ic_launcher, "Notif "
+ id, System.currentTimeMillis());
notif.flags |= Notification.FLAG_AUTO_CANCEL;
notif.setLatestEventInfo(this, "Title " + id, "Content " + id, pIntent);
nm.notify(id, notif);
}
В связи с чем переписал данный метод так:
Код: Выделить всё
void sendNotif(int id, PendingIntent pIntent) {
Notification notification = new Notification.Builder(getApplicationContext())
.setContentTitle("Title " + id)
.setContentText("Content " + id)
.setSmallIcon(R.mipmap.ic_launcher)
.setAutoCancel(true)
.setContentIntent(pIntent)
.getNotification();
notificationManager.notify(id, notification);
}
![Изображение](http://kiev-potolok.com.ua/dp.png)
Re: Урок 119. PendingIntent – флаги, requestCode. AlarmManag
Подскажите плиз, как прописать receiver ?
у меня не ловит сообщения с секцией :
Нужен intent filter ? Если можно, приведите секцию, плз, а то запутался - вообще тема манифеста интересует, у Вас она почти не освещена - пару ссылок на визард из эклипса и все (
у меня не ловит сообщения с секцией :
Код: Выделить всё
<receiver android:name=".Receiver"
android:enabled="true"
android:exported="true" >
</receiver>
Re: Урок 119. PendingIntent – флаги, requestCode. AlarmManag
http://developer.alexanderklimov.ru/and ... estXML.phpsi001 писал(а):Подскажите плиз, как прописать receiver ?
у меня не ловит сообщения с секцией :Нужен intent filter ? Если можно, приведите секцию, плз, а то запутался - вообще тема манифеста интересует, у Вас она почти не освещена - пару ссылок на визард из эклипса и все (Код: Выделить всё
<receiver android:name=".Receiver" android:enabled="true" android:exported="true" > </receiver>
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.
-
- Сообщения: 42
- Зарегистрирован: 25 янв 2015, 18:57
Re: Урок 119. PendingIntent – флаги, requestCode. AlarmManag
An-droid, спасибо Вам огромное!An-droid писал(а):Добрый день. Урок 119 становится делать сложнее, потому что методотказывается работать - setLatestEventInfo не просто зачёркивает (устаревший), а вообще выделяет красным.Код: Выделить всё
void sendNotif(int id, PendingIntent pIntent) { Notification notif = new Notification(R.drawable.ic_launcher, "Notif " + id, System.currentTimeMillis()); notif.flags |= Notification.FLAG_AUTO_CANCEL; notif.setLatestEventInfo(this, "Title " + id, "Content " + id, pIntent); nm.notify(id, notif); }
В связи с чем переписал данный метод так:Возможно, кому-то будет полезна эта информация. Я на неё убил часик-полтора ((Код: Выделить всё
void sendNotif(int id, PendingIntent pIntent) { Notification notification = new Notification.Builder(getApplicationContext()) .setContentTitle("Title " + id) .setContentText("Content " + id) .setSmallIcon(R.mipmap.ic_launcher) .setAutoCancel(true) .setContentIntent(pIntent) .getNotification(); notificationManager.notify(id, notification); }
-
- Сообщения: 1
- Зарегистрирован: 03 ноя 2015, 12:13
Re: Урок 119. PendingIntent – флаги, requestCode. AlarmManag
Никто так и не поднял главный вопрос будильника, хотя "намёк" проскакивал.
Как поддерживать "бесконечный" жизненный цикл повторяющегося будильника?
Речь идёт о случае, если приложение было "убито" в настройках, в списке приложения или чистильщиками памяти или, что самое главное - осью, допустим при нехватке памяти?
Товарищ тут писал про такое на самсунге, но никто на это внимания не обратил.
У меня задача ежедневно запускать определённый код. Если процесс прибит случайно или намеренно. Все будильники убиваются.
Началась такая канитель кажется с Android 3.0 - будильник не живёт без процесса приложения и все будильники убиваются вместе с процессом.
Я же пока сделал запуск будильника из сервиса, который живёт в отдельном процессе от процесса приложения (чтобы памяти меньше жрать), и который по флагам onStartCommand перезапускается в случае необходимости убийства процесса. При загрузке устройства стартует этот сервис, перезапускающий будильник. Будильник в таком случае привязан к процессу сервиса.
Обойти стороной данную тему, как мне кажется, неправильно, учитывая саму суть будильников.
Или может быть всё не так страшно?
Как поддерживать "бесконечный" жизненный цикл повторяющегося будильника?
Речь идёт о случае, если приложение было "убито" в настройках, в списке приложения или чистильщиками памяти или, что самое главное - осью, допустим при нехватке памяти?
Товарищ тут писал про такое на самсунге, но никто на это внимания не обратил.
У меня задача ежедневно запускать определённый код. Если процесс прибит случайно или намеренно. Все будильники убиваются.
Началась такая канитель кажется с Android 3.0 - будильник не живёт без процесса приложения и все будильники убиваются вместе с процессом.
Я же пока сделал запуск будильника из сервиса, который живёт в отдельном процессе от процесса приложения (чтобы памяти меньше жрать), и который по флагам onStartCommand перезапускается в случае необходимости убийства процесса. При загрузке устройства стартует этот сервис, перезапускающий будильник. Будильник в таком случае привязан к процессу сервиса.
Обойти стороной данную тему, как мне кажется, неправильно, учитывая саму суть будильников.
Или может быть всё не так страшно?
-
- Сообщения: 115
- Зарегистрирован: 08 янв 2015, 14:32
Re: Урок 119. PendingIntent – флаги, requestCode. AlarmManag
накАнецтА пабедил!!!))) корочь повозился достаточно с этой бедой. изучил глубоко и сам урок и форум)
там выше спрашивали..., в общем я пришёл к такой схеме:
есть класс, который ставит будильники. он дёргает системное время и высчитывает соответственно на когда ставить будильники. при повторяющемся интенте проблем никаких - последний вариант установленного будильника срабатывает
есть boot ресивер, который дёргает класс будильников
и вот самое главное: перечитал кучу статей когда и почему падают будильники. вразумительного объяснения я не нашёл, разве что замечено, будильники отпадают на реальных устройствах когда устройство уходит в спячку-просыпается многократно... пишут про самсунги и htc... но суть не в этом.
в качестве таблетки предлагается вот такое решение:
для контроля ставится один разовый будильник для самого приложения. у него нет вейкапа и время стоит 1 час от текущего. он сработает по времени или сработает сразу как проснётся устройство и перезапустит класс будильников обновит их все и себя самого без шума и пыли.
как пишут при таком подходе будильники живут вечно. реализовал. теперь тесчу на выносливость. попробовал поставить будильник с вейкапом на 10 дней вперёд. посмотрим как отработает)
там выше спрашивали..., в общем я пришёл к такой схеме:
есть класс, который ставит будильники. он дёргает системное время и высчитывает соответственно на когда ставить будильники. при повторяющемся интенте проблем никаких - последний вариант установленного будильника срабатывает
есть boot ресивер, который дёргает класс будильников
и вот самое главное: перечитал кучу статей когда и почему падают будильники. вразумительного объяснения я не нашёл, разве что замечено, будильники отпадают на реальных устройствах когда устройство уходит в спячку-просыпается многократно... пишут про самсунги и htc... но суть не в этом.
в качестве таблетки предлагается вот такое решение:
для контроля ставится один разовый будильник для самого приложения. у него нет вейкапа и время стоит 1 час от текущего. он сработает по времени или сработает сразу как проснётся устройство и перезапустит класс будильников обновит их все и себя самого без шума и пыли.
как пишут при таком подходе будильники живут вечно. реализовал. теперь тесчу на выносливость. попробовал поставить будильник с вейкапом на 10 дней вперёд. посмотрим как отработает)
ну вот какбы то что нагуглил должно решать эту проблему. тестировать очень тяжко. требуется время( ждём(У меня задача ежедневно запускать определённый код. Если процесс прибит случайно или намеренно. Все будильники убиваются.
-
- Сообщения: 9
- Зарегистрирован: 16 апр 2013, 14:04
Re: Урок 119. PendingIntent – флаги, requestCode. AlarmManag
Всем привет.
Есть приложение, где пользователь устанавливает время сработки Alarm Manager, который в свою очередь из ресивера запускает уведомление. Добавил boot Receiver для сработки после перезагрузки. Теперь вопрос:
- Каким способом лучше сохранить установленное пользователем время для запуска Alarm Manager после ребута?
Есть приложение, где пользователь устанавливает время сработки Alarm Manager, который в свою очередь из ресивера запускает уведомление. Добавил boot Receiver для сработки после перезагрузки. Теперь вопрос:
- Каким способом лучше сохранить установленное пользователем время для запуска Alarm Manager после ребута?
Re: Урок 119. PendingIntent – флаги, requestCode. AlarmManag
метод sendNotif пришлось переписать, система не нашла метол setLatestEventInfo
Код: Выделить всё
void sendNotif(int id, PendingIntent pIntent) { нашел тут //http://stackoverflow.com/questions/1207269/sending-a-notification-from-a-service-in-android
Notification notif = new Notification.Builder(this)
.setContentTitle("Title " + id)
.setContentText("Content " + id)
.setSmallIcon(R.mipmap.icon)
.setContentIntent(pIntent)
.setAutoCancel(true)
.setContentIntent(pIntent).build(); //добавляем PendingIntent
NotificationManager notificationManager =
(NotificationManager) getSystemService(NOTIFICATION_SERVICE);
notificationManager.notify(id, notif);//id должен быть уникальным, чтобы сообщений было несколько
}
Re: Урок 119. PendingIntent – флаги, requestCode. AlarmManag
Люди добрые, как же грамотно с API 19 ставить наступление события по точному времени каждый день?
идеально работает для API 16.
Для новых версий пробовал и . Не работает. Вообще не срабатывает, даже с опозданием.
Задача выполнять кое что в 23:59 каждый день, естественно, для все версий ОС.
Кто как решает проблему?
Код: Выделить всё
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent);
Для новых версий пробовал
Код: Выделить всё
alarmManager.setInexactRepeating
Код: Выделить всё
alarmManager.setExactAndAllowWhileIdle
Задача выполнять кое что в 23:59 каждый день, естественно, для все версий ОС.
Кто как решает проблему?
- Vladimir V.
- Сообщения: 2
- Зарегистрирован: 15 май 2017, 11:55
- Откуда: Yekaterinburg
Re: Урок 119. PendingIntent – флаги, requestCode. AlarmManag
Коллеги, подскажите, в чём косяк?
При касании системного уведомления в баре в лог должны выводится сообщения. Но не выводятся.
Вот код MainActivity.java:
Вот код Receiver.java
Это код класса Messager.java
При касании системного уведомления в баре в лог должны выводится сообщения. Но не выводятся.
Вот код MainActivity.java:
Код: Выделить всё
package com.example.samsung.p1191_pendingintent;
import android.app.AlarmManager;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.RequiresApi;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
public class MainActivity extends AppCompatActivity {
private NotificationManager nm;
private AlarmManager am;
private Intent intent1, intent2;
private PendingIntent pendingIntent1, pendingIntent2;
private String message;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
am = (AlarmManager) getSystemService(ALARM_SERVICE);
}
public void onClickBtn(View view) {
switch (view.getId()) {
case R.id.btn1:
intent1 = createIntent(getString(R.string.action_1), getString(R.string.extra_1));
pendingIntent1 = PendingIntent.getBroadcast(this, 0, intent1, 0);
intent2 = createIntent(getString(R.string.action_2), getString(R.string.extra_2));
pendingIntent2 = PendingIntent.getBroadcast(this, 0, intent2, 0);
compare(view.getContext());
sendNotif(view.getContext(), 1, pendingIntent1);
sendNotif(view.getContext(), 2, pendingIntent2);
break;
default:
break;
}
}
private Intent createIntent(final String action, final String extra) {
Intent intent = new Intent(this, Receiver.class);
intent.setAction(action);
intent.putExtra(getString(R.string.extra), extra);
return intent;
}
private void compare(final Context context) {
message = "intent 1 == intent 2: " + intent1.filterEquals(intent2);
Messager.sendToAllRecipients(context, message);
message = "pendingIntent1 == pendingIntent2: " + pendingIntent1.equals(pendingIntent2);
Messager.sendToAllRecipients(context, message);
}
@RequiresApi(api = Build.VERSION_CODES.HONEYCOMB)
private void sendNotif(final Context context, final int id, final PendingIntent pendingIntent) {
//Подготовка уведомления в статус-бар
//noinspection deprecation
Notification notification = new Notification.Builder(context)
//Установка заголовка
.setContentTitle("Notification's title " + id)
//Установка сообщения для статус-бара
.setContentText("Notification's text " + id)
//Установка стикера
.setTicker("Notification's ticker " + id)
//Установка малой иконки
.setSmallIcon(R.mipmap.ic_launcher_round)
//Подключение активити к записи
.setContentIntent(pendingIntent)
//Установка флага, удаляющего уведомление из списка после нажатия
.setAutoCancel(true)
//Только для API не младше №16
// .setSubText("The notification's subtext");
//Создание строки в разворачивающемся списке уведомлений
//noinspection deprecation
.getNotification();
//Отправка уведомления в статус-бар
nm.notify(id, notification);
}
}
Код: Выделить всё
package com.example.samsung.p1191_pendingintent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
/**
* Created by samsung on 12.05.2017.
*/
public class Receiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String message = context.getString(R.string.receiver)
+ " " + context.getString(R.string.on_receive);
Messager.sendToAllRecipients(context, message);
message = context.getString(R.string.action_) + " " + intent.getAction();
Messager.sendToAllRecipients(context, message);
message = context.getString(R.string.extra_) + " "
+ intent.getStringExtra(context.getString(R.string.extra));
Messager.sendToAllRecipients(context, message);
}
}
Код: Выделить всё
package com.example.samsung.p1191_pendingintent;
import android.content.Context;
import android.util.Log;
import android.widget.Toast;
/**
* Created by samsung on 12.05.2017.
*/
public class Messager {
private final static String LOG_TAG = "myLogs";
public static final void sendToAllRecipients(final Context context, final String message) {
Log.d(LOG_TAG, message);
Toast.makeText(context, message, Toast.LENGTH_SHORT).show();
}
public static final void sendToOnlyLog(final String message) {
Log.d(LOG_TAG, message);
}
}
В чём-то всегда начинающий,
Что-то всегда знающий,
Где-то неуспевающий.
Что-то всегда знающий,
Где-то неуспевающий.
- Vladimir V.
- Сообщения: 2
- Зарегистрирован: 15 май 2017, 11:55
- Откуда: Yekaterinburg
Re: Урок 119. PendingIntent – флаги, requestCode. AlarmManag
С учётом испльзования библиотеки android.support.v4.app код будет выглядеть так:Naidovich писал(а):метод sendNotif пришлось переписать, система не нашла метол setLatestEventInfo
Код: Выделить всё
void sendNotif(int id, PendingIntent pIntent) { нашел тут //http://stackoverflow.com/questions/1207269/sending-a-notification-from-a-service-in-android Notification notif = new Notification.Builder(this) .setContentTitle("Title " + id) .setContentText("Content " + id) .setSmallIcon(R.mipmap.icon) .setContentIntent(pIntent) .setAutoCancel(true) .setContentIntent(pIntent).build(); //добавляем PendingIntent NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); notificationManager.notify(id, notif);//id должен быть уникальным, чтобы сообщений было несколько }
Код: Выделить всё
private void sendNotif(final Context context, final int id, final PendingIntent pendingIntent) {
//Подготовка уведомления в статус-бар
Notification notification = new NotificationCompat.Builder(context)
//Установка заголовка
.setContentTitle("Notification's title " + id)
//Установка сообщения для статус-бара
.setContentText("Notification's text " + id)
//Установка стикера
.setTicker("Notification's ticker " + id)
//Установка времени сообщения
.setWhen(System.currentTimeMillis())
//Установка малой иконки
.setSmallIcon(R.mipmap.ic_launcher_round)
//Подключение активити к записи
.setContentIntent(pendingIntent)
//Установка флага, удаляющего уведомление из списка после нажатия
.setAutoCancel(true)
//Только для API не младше №16
// .setSubText("The notification's subtext");
//Создание строки в разворачивающемся списке уведомлений
//noinspection deprecation
.build();
//Отправка уведомления в статус-бар
nm.notify(id, notification);
}
}
В чём-то всегда начинающий,
Что-то всегда знающий,
Где-то неуспевающий.
Что-то всегда знающий,
Где-то неуспевающий.
Re: Урок 119. PendingIntent – флаги, requestCode. AlarmManag
Коллеги подскажите, если я из уведомления вызывают некую активность, по нажатию кнопки выполняю в этой активности некую деятельность и вызываю метод finish(). Активность закрывается, но остается в стеке, установка флагов при создании Intent ни как не влияет на это, как я понимаю, или мне кажется, что вызываемая активность становиться как бы главной корневой активностью приложения и не реагирует на флаги, на которые реагируют дочерние активности вызываемые из главной активности. Но мне надо добиться результата, когда пользователь нажал кнопку и активность ушла навсегда, ему не надо возвращаться потом к этой активности (как пример, диалоговые окна, нажал на ок и в стеке не должно быть ничего).
Возможно, есть флаги которые позволяют открыть активность из уведомления в нужном режиме?
Возможно, есть флаги которые позволяют открыть активность из уведомления в нужном режиме?
Re: Урок 119. PendingIntent – флаги, requestCode. AlarmManag
Сам спросил, сам нашел решение...
Если прописать в манифесте для активити вот такое вот
android:excludeFromRecents="true"
то работает как мне надо
Если прописать в манифесте для активити вот такое вот
android:excludeFromRecents="true"
то работает как мне надо
Re: Урок 119. PendingIntent – флаги, requestCode. AlarmManag
Ребята не срабатывает будильник SDK >= 23
При старте сервиса делаю
потом создаю Alarm с проверкой версии SDK
Когда Alarm срабатывает опять ставлю на повтор.
Если подключена зарядка все нормально срабатывает, без зарядки Alarm в течении 2-х минут срабатывает, потом останавливает до включения телефона либо когда прилетит уведомление в статус бар от других приложений потом опять перестаёт срабатывать.
В манифест добавил:
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS"/>
<uses-permission android:name="android.permission.WAKE_LOCK" />
При запуске приложения сделал запрос
При подтверждении добавлении в список разрешенных приложения в итоге там нет, хотя при повторном запросе разрешения pm.isIgnoringBatteryOptimizations(getPackageName() возвращает true - при этом в списке разрешенных нет. Добавляю приложение в список вручную и все ровно засыпает...
При старте сервиса делаю
Код: Выделить всё
startForeground(1002, notification);
PowerManager.WakeLock wl1;
PowerManager pm = (PowerManager)this.getSystemService(
Context.POWER_SERVICE);
wl = pm.newWakeLock(
PowerManager.FULL_WAKE_LOCK, "TAG1");
wl.acquire();
Код: Выделить всё
if (Build.VERSION.SDK_INT >= 23) {// Wakes up the device in Doze Mode
alarmManager.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, t, amPIntent);
} else if (Build.VERSION.SDK_INT >= 19) {// Wakes up the device in Idle Mode
alarmManager.setExact(AlarmManager.RTC_WAKEUP, t, amPIntent);
} else {// Old APIs
alarmManager.set(AlarmManager.RTC_WAKEUP, t, amPIntent);
}
Если подключена зарядка все нормально срабатывает, без зарядки Alarm в течении 2-х минут срабатывает, потом останавливает до включения телефона либо когда прилетит уведомление в статус бар от других приложений потом опять перестаёт срабатывать.
В манифест добавил:
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS"/>
<uses-permission android:name="android.permission.WAKE_LOCK" />
При запуске приложения сделал запрос
Код: Выделить всё
if (Build.VERSION.SDK_INT >= 23)
if (!pm.isIgnoringBatteryOptimizations(getPackageName()) ){
Intent intent = new Intent(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS,
Uri.parse("package:" + getPackageName()));
startActivity(intent);
}
Re: Урок 119. PendingIntent – флаги, requestCode. AlarmManag
А спрошу-ка здесь ))
Манифест:
Главная активити. Создаю Интент, прикручиваю ему action, кладу одно данное для получения в ресивере, оборачиваю в пендинг, скармливаю Аларму. Надеюсь, что аларм через 5 секунд пнет ресивер и передаст пендинг.
Ресивер. Просто вывод в лог сообщения, что зашло сюда. Интент пока не потрошится.
Все запускается, но в ресивер не попадает.
Вопрос - где косяк?
Манифест:
Код: Выделить всё
<uses-permission android:name="android.permission.WAKE_LOCK"></uses-permission>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activity
android:name=".Screen"
android:label="@string/title_activity_screen"
android:theme="@style/AppTheme.NoActionBar">
</activity>
<receiver android:name=".Receiver"
android:enabled="true">
<intent-filter>
<action android:name="action" />
</intent-filter>
</receiver>
</application>
Код: Выделить всё
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Intent intent=new Intent(this,Screen.class);
intent.setAction("action");
intent.putExtra("key","ДАННЫЕ");
PendingIntent pending_intent=PendingIntent.getBroadcast(this,0,intent,0);
AlarmManager alarm_manager=(AlarmManager) getSystemService(ALARM_SERVICE);
alarm_manager.setExact(AlarmManager.RTC,System.currentTimeMillis()+5000,pending_intent);
}
Код: Выделить всё
public class Receiver extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent)
{
Log.d("---!!!---","В ресивере");
}
}
![Озадачен :?](./images/smilies/icon_e_confused.gif)
![В шоке :shock:](./images/smilies/icon_eek.gif)
Вопрос - где косяк?
Re: Урок 119. PendingIntent – флаги, requestCode. AlarmManag
Почему бродкаст БЕЗ фильтра отрабатывает??
![В шоке :shock:](./images/smilies/icon_eek.gif)
![Удивлен :o](./images/smilies/icon_e_surprised.gif)
![В шоке :shock:](./images/smilies/icon_eek.gif)