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

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

Войти
Регистрация
Восстановить пароль
 
shulyakyarik
10 / 10 / 3
Регистрация: 28.03.2014
Сообщений: 156
#1

Notification (постоянно висящий, с кнопками) - Программирование Android

28.01.2015, 18:59. Просмотров 727. Ответов 0
Метки нет (Все метки)

Нужно вместе с сервисом включать Notification, который будет висеть и выполнять что-то, когда на него нажмут. На уведомлении будет 3 кнопки, одна из которых должна закрывать уведомление и выключать сервис. Для того, что б отследить нажатие я планирую использовать BroadcastReceiver(исправьте меня если это не правильно). Не показывается уведомление. И правильно ли я обрабатываю нажатия? Вот код
Service
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
public class Service extends android.app.Service{
 
    String from_lang,to_lang;
 
    public String ACTION = "xxx.yyy.***.action";
 
    NotificationManager manager;
    NotificationCompat.Builder builder;
 
    BroadcastReceiver receiver;
 
    @Override
    public void onCreate() {
        super.onCreate();
        manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
        registerReceiver();
    }
 
    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        from_lang = intent.getStringExtra("from");
        to_lang = intent.getStringExtra("to");
        sendNotif();
        return super.onStartCommand(intent, flags, startId);
    }
 
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }
 
    void sendNotif(){
        builder = new NotificationCompat.Builder(getApplicationContext());
        builder.setAutoCancel(false);
 
        RemoteViews remoteViews = new RemoteViews(this.getPackageName(),R.layout.notif);
        /*
        Intent intent_trans = new Intent(ACTION);
        intent_trans.putExtra("action",0);
        PendingIntent pendingIntent = PendingIntent.getBroadcast(this,0,intent_trans,0);
        remoteViews.setOnClickPendingIntent(R.id.clipboard,pendingIntent);
 
        Intent intent_close = new Intent(ACTION);
        intent_trans.putExtra("action",1);
        PendingIntent pendingIntent1 = PendingIntent.getBroadcast(this,0,intent_close,0);
        remoteViews.setOnClickPendingIntent(R.id.close,pendingIntent1);
        */
        builder.setContent(remoteViews);
 
        manager.notify(0,builder.build());
    }
 
    void registerReceiver(){
        receiver = new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {
                Bundle bundle = intent.getExtras();
                int i = bundle.getInt("action");
                Log.wtf("","action: "+i);
            }
        };
 
        IntentFilter filter = new IntentFilter(ACTION);
        registerReceiver(receiver,filter);
    }
}
notif.xml
XML
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
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
 
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/clipboard"
        android:layout_weight="8"
        android:text="T from Clipboard"/>
 
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/trans"
        android:text="open windw"
        android:layout_weight="8"/>
 
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/close"
        android:text="Close"
        android:layout_weight="1"/>
 
</LinearLayout>
Добавлено через 21 час 24 минуты
Уже решил эту задачу. Нужно было прописать иконку для статус бара в уведомления. Теперь новая проблема.
При нажатии на кнопку на виджете должно отправиться сообщение (broadcast) с определенным числом, но число приходит не то, что я хотел.
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
42
43
44
45
void sendNotif(){
RemoteViews remoteViews = new RemoteViews(this.getPackageName(),R.layout.notif);
 
builder = new NotificationCompat.Builder(getApplicationContext());
builder.setSmallIcon(R.drawable.ic_launcher);
builder.setContent(remoteViews);
builder.setOngoing(true);
 
PendingIntent pendingIntent = PendingIntent.getBroadcast(this,0,getIntent(0),0);
remoteViews.setOnClickPendingIntent(R.id.clipboard,pendingIntent);
 
PendingIntent pendingIntent1 = PendingIntent.getBroadcast(this,0,getIntent(1),0);
remoteViews.setOnClickPendingIntent(R.id.close,pendingIntent1);
 
manager.notify(0,builder.build());
}
 
Intent getIntent(int i){
Intent intent = new Intent(ACTION);
intent.putExtra("action",i);
return intent;
}
 
void registerReceiver(){
receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
int extra = intent.getIntExtra("action", 4);
Log.wtf("","action: "+extra);
switch (extra){
case 0:
translate();
break;
case 1:
close();
break;
case 4:
break;
}
}
};
 
IntentFilter filter = new IntentFilter(ACTION);
registerReceiver(receiver,filter);
}
При нажатии на конпку с ід clipboard почемут приходит число 1
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.01.2015, 18:59     Notification (постоянно висящий, с кнопками)
Посмотрите здесь:
Android Notification с картинкой
Кнопки в Notification Android
Уведомления Notification Android
Android AlarmManager + Notification
Notification sound Android
Android Notification в определенное время
Android Доступ к Notification из Activity
Android Notification когда надо
Android Иконки Notification в Android 5
Android Два сервиса и Notification
Notification Уведомления в Андроид Android
Android Notification - запуск MainActivity

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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