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

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

Войти
Регистрация
Восстановить пароль
 
ILNAR_93
Android
219 / 219 / 22
Регистрация: 19.01.2013
Сообщений: 1,656
Записей в блоге: 3
#1

Как остановить сервис по нажатию на Notification - Программирование Android

14.07.2016, 16:56. Просмотров 335. Ответов 4
Метки нет (Все метки)

в сервисе создаю сообщение:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
        builder.setContentTitle(getResources().getString(R.string.app_name));
        builder.addAction(R.drawable.ic_action_action_search, getResources().getString(R.string.destroy), null);
        if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            builder.setSmallIcon(R.drawable.ic_action_1);
        } else {
            builder.setSmallIcon(R.mipmap.ic_launcher);
        }
 
        Notification notification;
 
        if (android.os.Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP)
            notification = builder.getNotification();
        else
            notification = builder.build();
        startForeground(777, notification);
как сделать так что бы при нажатии на сообщение

Java
1
builder.addAction(R.drawable.ic_action_action_search, getResources().getString(R.string.destroy), null);
сервис останавливался и сообщение убиралось?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.07.2016, 16:56     Как остановить сервис по нажатию на Notification
Посмотрите здесь:
Как остановить запущеный процес (сервис)? Android
Android Остановить сервис при выходе из приложения
Android Как вызвать Notification в Broadcast Receiver?
Как убрать маленькую иконку в правом нижнем углу notification? Android
Android Как остановить анимацию
Как остановить AsyncTask? Android
Android Как остановить и восстановить приложение?
Android Как остановить слушатель сканера отпечатков пальцев
Android Как остановить по отдельности каждую мелодию в MediaPlayer?
Android Notification с картинкой
Уведомления Notification Android
Кнопки в Notification Android

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
vxg
Модератор
3138 / 1940 / 214
Регистрация: 13.01.2012
Сообщений: 7,428
14.07.2016, 19:52     Как остановить сервис по нажатию на Notification #2
ILNAR_93, сообщение при нажатии само уйдет если при создании сообщения билдеру сказать
Java
1
builder.setAutoCancel(true);
что касается остановки сервиса - наверное надо в билдере сделать что то такое
Java
1
2
3
4
5
        Intent i = new Intent(ctx, xxx.class); //xxx-фильтр при вызове останавливает наш сервис
        
        PendingIntent pi = PendingIntent.getBroadcast(ctx, id, i, PendingIntent.FLAG_UPDATE_CURRENT);
...
        builder.setContentIntent(pi);
ILNAR_93
Android
219 / 219 / 22
Регистрация: 19.01.2013
Сообщений: 1,656
Записей в блоге: 3
15.07.2016, 13:12  [ТС]     Как остановить сервис по нажатию на Notification #3
vxg,

Не завершает сервис:

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
28
29
public class ConnectedService extends Service {
 
    @Override
    public IBinder onBind(Intent intent) {
        return mBinder;
    }
 
    @Override
    public void onCreate() {
        NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
        Intent i = new Intent(this, ConnectedService.class); //xxx-фильтр при вызове останавливает наш сервис
        PendingIntent pi = PendingIntent.getBroadcast(this, 777, i, PendingIntent.FLAG_UPDATE_CURRENT);
        builder.setContentTitle(getResources().getString(R.string.app_name));
        builder.addAction(R.drawable.ic_action_action_search, getResources().getString(R.string.destroy), pi);
        if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            builder.setSmallIcon(R.drawable.ic_action_1);
        } else {
            builder.setSmallIcon(R.mipmap.ic_launcher);
        }
        Notification notification;
 
        if (android.os.Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP)
            notification = builder.getNotification();
        else
            notification = builder.build();
        startForeground(777, notification);
    }
 
}
vxg
Модератор
3138 / 1940 / 214
Регистрация: 13.01.2012
Сообщений: 7,428
15.07.2016, 13:28     Как остановить сервис по нажатию на Notification #4
ILNAR_93, разве ваш сервис это ресивер? +ресивер должен быть объявлен в манифесте
Pablito
2453 / 1898 / 590
Регистрация: 12.05.2014
Сообщений: 6,700
Завершенные тесты: 1
15.07.2016, 19:54     Как остановить сервис по нажатию на Notification #5
Сообщение было отмечено автором темы, экспертом или модератором как ответ
вобщем я проверил - у меня работает вот так
манифест
XML
1
2
3
4
<service
            android:name=".MyService"
            android:exported="false">
        </service>
в активити
Java
1
2
3
4
        Intent intent = new Intent(this, MyService.class);
        intent.setAction("START_PLEASE");
        startService(intent);
//        finish();
класс MyService
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import android.app.Notification;
import android.app.PendingIntent;
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.support.annotation.Nullable;
import android.support.v4.app.NotificationCompat;
 
public class MyService extends Service {
    private static final String START_PLEASE = "START_PLEASE";
    private static final String STOP_PLEASE = "STOP_PLEASE";
 
    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        if (intent != null) {
            final String action = intent.getAction();
            if (START_PLEASE.equals(action)) initSomething();
            else if (STOP_PLEASE.equals(action)) stopSelf();
        }
        return super.onStartCommand(intent, flags, startId);
    }
 
    private void initSomething() {
        final Intent intent = new Intent(getBaseContext(), MyService.class);
        intent.setAction(STOP_PLEASE);
        PendingIntent pi = PendingIntent.getService(getBaseContext(), 42, intent, 0);
        //
        NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
        builder.setContentTitle(getResources().getString(R.string.app_name));
        builder.addAction(R.drawable.ic_search, "LOL STOP", pi);
        builder.setSmallIcon(R.drawable.ic_star__24px);
        Notification notification = builder.build();
        startForeground(777, notification);
    }
 
    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }
}
ну названия самих Action's заменить на более мудреные, но для теста пойдет
Yandex
Объявления
15.07.2016, 19:54     Как остановить сервис по нажатию на Notification
Ответ Создать тему
Опции темы

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