Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
stepan_boroviko
0 / 0 / 0
Регистрация: 12.05.2015
Сообщений: 3
#1

Открытие приложенея после клика на нотификации (Service, notification) - Программирование Android

12.05.2015, 17:16. Просмотров 482. Ответов 5
Метки нет (Все метки)

всем добрый день.

Содал простое приложение. Одно Активити и одна служба.
Служба старуте вместе с осью.
задача службы просто выбросить нотификацию раз в 15 секунд. При нажатии на нотификацию должно запутиться единсвенное активити.
все это работет кроме:

если приложение запушено то клик по нотификации запускает следующие процедуры
onCreate
onStart
onResume

все в порядке.

но если приложение не запушено то при клике по нотификации эти процедуры вызываются только один раз - первый при запуске приложения.
при втором и последующих кликах ниодно не вызывается.

в чем может быть проблема?

Спасибо.

содается нотификация:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
    void sendNotif(int id, String Tiker, String Titel, String Text) {
        Context context = getApplicationContext() ;
        Intent intent = new Intent(context, activity_for_notifi_click.class);
        //Intent intent = new Intent("ru.it.arketservice");
        intent.setAction(Intent.ACTION_MAIN);
        intent.addCategory(Intent.CATEGORY_LAUNCHER);
        intent.putExtra("messag_type", String.valueOf(new Date().getTime()));
        PendingIntent contentIntent = PendingIntent.getActivity(context,
                0, intent,
                PendingIntent.FLAG_CANCEL_CURRENT);
 
        Notification.Builder builder    = new Notification.Builder(context);
        Resources res                   = context.getResources();
        builder.setContentIntent(contentIntent)
                .setSmallIcon(R.mipmap.ic_launcher)
                .setLargeIcon(BitmapFactory.decodeResource(res, R.mipmap.ic_launcher))
                .setTicker(Tiker)
                .setWhen(System.currentTimeMillis())
                .setAutoCancel(true)
                .setContentTitle(Titel)
                .setContentText(Text);
        //Notification notification = builder.getNotification(); // if api 16
        Notification notification = builder.build();
        NotificationManager notificationManager = (NotificationManager) context
                .getSystemService(Context.NOTIFICATION_SERVICE);
        notificationManager.notify(id, notification);
    }
вот так прописано в манифесте

XML
1
2
3
4
        <activity
            android:name=".activitis.activity_for_notifi_click"
            android:label="@string/title_activity_activity_for_notifi_click">
        </activity>
Добавлено через 37 минут
может для моей задачи нужно использовать класс производный от BroadcastReceiver

типа:

Java
1
2
3
4
5
6
7
8
public class Broadcast  extends BroadcastReceiver {
 
    @Override
    public void onReceive(Context context, Intent intent) {
        context.startService(new Intent(context, ark_service.class));
        //App.Log("BroadcastReceiver");
    }
}
но я не понимаю как зарегистрировать этот класс в манифесте какие разрешения дать приложению и как вызывать из нотификации
подскажите как это сделать.

наверное при создании нотификации сделать что то такое:
.......
Intent intent = new Intent("ru.it.arketservice");
.......

а как зарегистрировать класс?
как сделать так что бы он реагировал (вызывался) при "ru.it.arketservice"?
и какие разрешения нужно дать пиложеню что бы получать эти рассылки?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.05.2015, 17:16
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Открытие приложенея после клика на нотификации (Service, notification) (Программирование Android):

beginner: голосовые нотификации - Программирование Android
привет, вопрос от новичка, заранее прошу прощения, если спрашиваю очевидные вещи. пытаюсь сделать, чтобы оповещения выводились как на...

Поменять картинку у button после клика (не у ImageButton) - Программирование Android
Приветствую. Есть кнопка &lt;Button android:id=&quot;@+id/button1&quot; android:layout_width=&quot;fill_parent&quot; ...

Service автозапуск после закрытия родителя - Программирование Android
Такой вопрос назрел несущей. Есть актвити и сервис. и подружить бы мне б их хотелось. но есть проблема везкая. дружбу дружбою...

Переадресация поиска гугл на мейл.ру и открытие рекламы после каждого клика - Удаление вирусов
Добрый день, У меня такая проблема, при открытии новой вкладки и практически после каждого клика открывается вкладка с рекламой, и поиск...

Открытие ссылок за два клика - JavaScript
Подскажите пожалуста, какой код писать в css, чтобы ссылки открылись за два клика?

Combobox в DGV: открытие с одного клика - Visual Basic .NET
Всем привет.В datagridview один из столбцов combobox.Как сделать так, что он открывался с одного клика?

5
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,071
12.05.2015, 17:29 #2
Сервис зарегистрирован?
0
stepan_boroviko
0 / 0 / 0
Регистрация: 12.05.2015
Сообщений: 3
12.05.2015, 18:02  [ТС] #3
сервис работает ка часики.
нотификация ненерится все гуд.

просто не отрабатывают методы активити.

сечас сделал вот что:

создал класс:

Java
1
2
3
4
5
6
7
8
9
10
11
12
public class notifiBroadcast extends BroadcastReceiver {
    public notifiBroadcast() {
    }
 
    @Override
    public void onReceive(Context context, Intent intent) {
        // TODO: This method is called when the BroadcastReceiver is receiving
        // an Intent broadcast.
        //throw new UnsupportedOperationException("Not yet implemented");
        App.Log(intent.getAction().toString());
    }
}
поменял intent при создании нотификации:

...
Intent intent = new Intent("ru.it.arketservice"); //
intent.setAction(Intent.ACTION_DEFAULT);
....

зарегистрировал класс в манифесте:

XML
1
2
3
4
5
6
7
8
9
        <receiver
            android:name=".application.notifiBroadcast"
            android:enabled="true"
            android:exported="true" >
            <intent-filter>
                <action android:name="ru.it.arketservice"/>
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </receiver>

но при клике на нотификации метод onReceive класса notifiBroadcast не отрабатывает.

может не хватате разрешения на принятие intent "ru.it.arketservice"
0
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,071
12.05.2015, 19:05 #4
А с чего должен срабатывать onReceive? Я не вижу интента на него. Да и при клике на нотификацию должны только активити открываться или сервис запускаться. А notifiBroadcast это ни то ни другое.
0
stepan_boroviko
0 / 0 / 0
Регистрация: 12.05.2015
Сообщений: 3
12.05.2015, 20:21  [ТС] #5
задача решилась. ошибка была в строчке

Java
1
2
3
PendingIntent contentIntent = PendingIntent.getActivity(context,
                0, intent,
                PendingIntent.FLAG_CANCEL_CURRENT);
нужно использовать не getActivity а getBroadcast:

Вот так все это работате правильно:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
void sendNotif(int id, String Tiker, String Titel, String Text) {
        Context context = getApplicationContext() ;
        Intent intent = new Intent();
        intent.setAction("ru.it.arketservice");
        intent.putExtra("id", id);
        PendingIntent contentIntent = PendingIntent.getBroadcast(context,
                0, intent,
                PendingIntent.FLAG_CANCEL_CURRENT);
 
        Notification.Builder builder    = new Notification.Builder(context);
        Resources res                   = context.getResources();
        builder.setContentIntent(contentIntent)
                .setSmallIcon(R.mipmap.ic_launcher)
                .setLargeIcon(BitmapFactory.decodeResource(res, R.mipmap.ic_launcher))
                .setTicker(Tiker)
                .setWhen(System.currentTimeMillis())
                .setAutoCancel(true)
                .setContentTitle(Titel)
                .setContentText(Text);
        //Notification notification = builder.getNotification(); // if api 16
        Notification notification = builder.build();
        NotificationManager notificationManager = (NotificationManager) context
                .getSystemService(Context.NOTIFICATION_SERVICE);
        notificationManager.notify(id, notification);
    }
в манифесте

XML
1
2
3
4
5
6
7
8
        <receiver
            android:name=".application.notifiBroadcast"
            android:enabled="true"
            android:exported="true" >
            <intent-filter>
                <action android:name="ru.it.arketservice"/>
            </intent-filter>
        </receiver>
класс бродкаст

Java
1
2
3
4
5
6
7
8
9
10
11
12
public class notifiBroadcast extends BroadcastReceiver {
    public notifiBroadcast() {
    }
 
    @Override
    public void onReceive(Context context, Intent intent) {
        // TODO: This method is called when the BroadcastReceiver is receiving
        // an Intent broadcast.
        //throw new UnsupportedOperationException("Not yet implemented");
        App.Log(intent.getAction().toString());
    }
}
0
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,071
12.05.2015, 20:25 #6
Цитата Сообщение от stepan_boroviko Посмотреть сообщение
нужно использовать не getActivity а getBroadcast
А точно, Broadcast есть, беру свои слова обратно.
1
12.05.2015, 20:25
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.05.2015, 20:25
Привет! Вот еще темы с ответами:

A Windows service with the name MySQL already exists. Please uninstall this service correctly or choose a different name for the new service. - MySQL
Не знаю что делать дальше

Открытие формы или запроса путём клика на запись из списка в подчиненной форме - MS Access
Есть база &quot;Автотранспортное предприятие&quot; в которой хочу переделать одну из форм по выдаче документов водителю. Есть список...

Событие после клика - jQuery
Добрый день! Не могу разобраться с документацией jquery, возможно не там ищу. Нужна помощь. ...

После второго клика - jQuery
Здравствуйте! Столкнулся с вопросом такого плана: у менять есть кнопка, при клике на которую появляется диалоговое окно с input в котором...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru