Страница 7 из 8

Re: Урок 99. Service. Уведомления - notifications

Добавлено: 14 ноя 2014, 18:27
lisensei
klblk писал(а): Зависит от того какую задачу решает сервис:
1) Если задача продолжительная (проигрывание музыки, загрузка файлов, сложные вычисления), то нужно запускать сервис в режиме Foreground (есть урок) и использовать WakeLock (с ним нужно быть осторожным)
2) Если нужно в определенное время просто отправить уведомление, то вероятнее правильнее использовать AlarmManager (есть урок)
Здравствуйте ещё раз ) Использовал AlarmManager и всё вроде хорошо, но недавно обнаружил что на 4 андроиде уведомления вообще не приходят, хотя на 2.3.3 приходят стабильно. В чём может быть проблема?

Re: Урок 99. Service. Уведомления - notifications

Добавлено: 15 ноя 2014, 02:37
doter.ua
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) {
alarmManager.setExact( бла бла );
} else {
alarmManager.set( бла бла );
}

Re: Урок 99. Service. Уведомления - notifications

Добавлено: 09 дек 2014, 09:39
finberg
Добрый день!

Правильно ли я понимаю, что раз сервис запущен в отдельном процессе, то:
1. TimeUnit.SECONDS.sleep() не будет тормозить основной поток.
2. Если выйти и закрыть приложение, сеовис останется работать.

Re: Урок 99. Service. Уведомления - notifications

Добавлено: 16 дек 2014, 14:07
bydirect
Здравствуйте. Подскажите как подгрузить картинку в notification из интернета?

Re: Урок 99. Service. Уведомления - notifications

Добавлено: 04 янв 2015, 01:59
iandryxa
Всем привет!
Такой вопрос как передать данные Service из активности, то есть у меня есть активность, получает данные от сервера(строки), так вот нужно передать их сервису и вывести в уведомление.
Пробовал через интент:

Код: Выделить всё

Intent i = new Intent(MainActivity.this, MyService.class);
                        i.putExtra("title",  messages.get(0));
                        i.putExtra("content", contents.get(0));
                        startService(i);
Но в самом сервисе при вызове метода getIntent eclipse ругается что - The method getIntent() is undefined for the type MyService

Код: Выделить всё

Intent i = getIntent();


Как быть?

Re: Урок 99. Service. Уведомления - notifications

Добавлено: 04 янв 2015, 14:09
doter.ua
онстарт команд срабатывает при запуске сервиса и каждый раз ,когда приходит интент. onStartCommand(Intent, int, int)
В аргументах приходит интент, проверяешь его на null и потом уже работаешь по задумке.

Re: Урок 99. Service. Уведомления - notifications

Добавлено: 28 янв 2015, 22:43
gurjubat
кто подскажет,как можно реализовать закрытие приложение(убить полностью)при удаление уведомление?

Re: Урок 99. Service. Уведомления - notifications

Добавлено: 29 янв 2015, 20:42
mitra
Всем привет! :)
A.N.R.I писал(а):Кстати, обратите внимание, что конструктор Notification (int icon, CharSequence tickerText, long when) обьявлен как deprecated, взамен предлагают Notification.Builder (для API 11 и выше)
Да, вот такой код не работает

Код: Выделить всё

void sendNotif() {
        // 1-я часть
        Notification notif = new Notification(R.drawable.ic_launcher, "Text in status bar",
                System.currentTimeMillis());

        // 3-я часть
        Intent intent = new Intent(this, MainActivity.class);
        intent.putExtra("param_name", 3);
        PendingIntent pIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);

        // 2-я часть
        notif.setLatestEventInfo(this, "Notification's title", "Notification's text", pIntent);

        // ставим флаг, чтобы уведомление пропало после нажатия
        notif.flags |= Notification.FLAG_AUTO_CANCEL;

        // отправляем
        nm.notify(1, notif);
    }
Почитал об Notification.Builder и взял пример кода:

Код: Выделить всё

Notification notif = new Notification.Builder(this)
                .setContentTitle("ContentTitle")
                .setContentText("ContentText")
                .setSmallIcon(R.drawable.ic_launcher)
                .build();
Ругается на метод build, пишет, что необходим API level 16 (Added in API level 11 !?), а у меня минимальная версия 15. Что не так у меня? Подскажите.

Re: Урок 99. Service. Уведомления - notifications

Добавлено: 30 янв 2015, 07:17
klblk
mitra писал(а):Ругается на метод build, пишет, что необходим API level 16 (Added in API level 11 !?), а у меня минимальная версия 15. Что не так у меня? Подскажите.
Используйте метод getNotification() вместо build(). По сути гугл просто переименовал названия метода в 16+.
Ну а если deprecated смущает, то делайте проверку версии Android и в зависимости от версии используйте метод build() или getNotification().

Re: Урок 99. Service. Уведомления - notifications

Добавлено: 30 янв 2015, 11:33
mitra
klblk писал(а): Используйте метод getNotification() вместо build(). По сути гугл просто переименовал названия метода в 16+.
Ну а если deprecated смущает, то делайте проверку версии Android и в зависимости от версии используйте метод build() или getNotification().
getNotification() is deprecated
В манифесте у меня так:

Код: Выделить всё

<uses-sdk
        android:minSdkVersion="15"
        android:targetSdkVersion="19" />
То есть получается, что ни new Notification не подходит, ни метод build() ни getNotification().
Непонятная ситуация. Кто может подсказать, где искать выход?

Re: Урок 99. Service. Уведомления - notifications

Добавлено: 03 фев 2015, 10:34
mitra
klblk писал(а):... Ну а если deprecated смущает, то делайте проверку версии Android и в зависимости от версии используйте метод build() или getNotification().
Сделал так, заработало :)

Код: Выделить всё

        if(Build.VERSION.SDK_INT == 15) {
            notif = builder.getNotification();
            // ставим флаг, чтобы уведомление пропало после нажатия
            notif.flags |= Notification.FLAG_AUTO_CANCEL;
            // отправляем
            nm.notify(1, notif);
        }
        if(Build.VERSION.SDK_INT > 15) {
            notif = builder.build();
            // ставим флаг, чтобы уведомление пропало после нажатия
            notif.flags |= Notification.FLAG_AUTO_CANCEL;
            // отправляем
            nm.notify(1, notif);
        }

Re: Урок 99. Service. Уведомления - notifications

Добавлено: 04 фев 2015, 06:58
klblk
mitra писал(а):Сделал так, заработало :)

Код: Выделить всё

        if(Build.VERSION.SDK_INT == 15) {
            notif = builder.getNotification();
            // ставим флаг, чтобы уведомление пропало после нажатия
            notif.flags |= Notification.FLAG_AUTO_CANCEL;
            // отправляем
            nm.notify(1, notif);
        }
        if(Build.VERSION.SDK_INT > 15) {
            notif = builder.build();
            // ставим флаг, чтобы уведомление пропало после нажатия
            notif.flags |= Notification.FLAG_AUTO_CANCEL;
            // отправляем
            nm.notify(1, notif);
        }
Корректнее было бы так:
[syntax=java] if(Build.VERSION.SDK_INT > 15) {
...
} else {
...
}[/syntax]
Даже если вы не поддерживаете версии <15 (сегодня не поддерживаете, а завтра передумаете=)

Re: Урок 99. Service. Уведомления - notifications

Добавлено: 24 фев 2015, 14:35
nikomp
у меня не получилось создать уведомление со звуком. Вообще на эмуляторе будет слышен звук?

Re: Урок 99. Service. Уведомления - notifications

Добавлено: 12 май 2015, 22:26
leon_nash
Очень интересный урок, большое спасибо.
BUT HELP
Всё работает прекрасно. Notification появляется через указанное время с указанным текстом. При нажатии открывается активити, но данные из intent пустые. Всё сделал как в уроке. Не могу понять, в чём проблема.
И вопрос. Можно ли из уведомления вызвать/передать данные обратно в сервис?

Re: Урок 99. Service. Уведомления - notifications

Добавлено: 01 авг 2015, 12:04
Андрей Валентинович
Подскажите как реализовать, чтоб уведомление всплывало в указанную дату и время? Например, 1 января в 00:00 всплывет "С Новым годом"

Re: Урок 99. Service. Уведомления - notifications

Добавлено: 09 сен 2015, 00:02
OrcSin
Подскажите что ему не нравится?
У меня стоит минималка 16 API, эмулятор тоже 16. Пишу в Андроид студио.
Если добавляю в манифест строку

Код: Выделить всё

android:process="proc2"
что бы сервис работал в отдельном процессе и получаю ошибку
Installation failed with message INSTALL_PARSE_FAILED_MANIFEST_MALFORMED.
It is possible that this issue is resolved by uninstalling an existing version of the apk if it is present, and then re-installing.

WARNING: Uninstalling will remove the application data!

Do you want to uninstall the existing application?
А если пишу так(добавил точку перед словом):

Код: Выделить всё

android:process=".proc2"
то ошибка пропадает, но сервис не запускается отдельным процессом.
Что не так?

Re: Урок 99. Service. Уведомления - notifications

Добавлено: 09 сен 2015, 09:19
Mikhail_dev
Вот как у нас. Фильтры вам наверное не нужны
[syntax=xml]
<service
android:name=".tracker.TrackerService"
android:process=":tracker">

<intent-filter>
...
</intent-filter>

</service>
[/syntax]

Re: Урок 99. Service. Уведомления - notifications

Добавлено: 09 сен 2015, 20:47
OrcSin
Вот мой блок сервиса MyService, сделал аналогию вашему коду, не понимает он .proc2.MyService

Код: Выделить всё

<service
            android:name=".proc2.MyService"
            android:enabled="true"
            android:exported="true"
            android:process=":proc2">
        </service>
Что я не так понял?

Re: Урок 99. Service. Уведомления - notifications

Добавлено: 09 сен 2015, 20:51
OrcSin
Заработало отдельным потоком в вот таком виде, только кнопка стоп сервис, почему то не срабатывает :(
<service
android:name="MyService"
android:enabled="true"
android:exported="true"
android:process=":proc2">
</service>

Re: Урок 99. Service. Уведомления - notifications

Добавлено: 13 сен 2015, 17:30
Андрей Валентинович
Подскажите как реализовать, чтоб уведомление всплывало в указанную дату и время? Например, 1 января в 00:00 всплывет "С Новым годом"