Android: показать/скрыть строку состояния при получении нового уведомления

Мое приложение должно работать в полноэкранном режиме. А также я должен показывать панель уведомлений, когда новые элементы поступают в мое приложение с нашего сервера. Я пишу код для уведомления в классе BroadcastReceiver. я хотел бы принять решение в MainActivity, например, показывать строку состояния только при получении нового уведомления, в противном случае скрыть строку состояния. Все делается, когда приложение находится на переднем плане.

Кодирование для уведомления:

Intent scheduledIntent = new Intent(context,Activity.class);

PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, scheduledIntent, 0);

                nm = (NotificationManager) context
                        .getSystemService(Context.NOTIFICATION_SERVICE);
                CharSequence from = "From address";
                CharSequence message = "New Orders received";
                Notification notif = new Notification(R.drawable.icon,"Hai", System.currentTimeMillis());
                notif.setLatestEventInfo(context, from, message, pendingIntent);
                notif.flags |= Notification.FLAG_AUTO_CANCEL;
                nm.notify(uniqueID, notif);
                notif.ledOnMS = 500;
                notif.ledOffMS = 500;

Через этот код приходят уведомления. Но строка состояния всегда видна. Мне нужно скрыть, когда уведомление не получено. Пожалуйста, предоставьте мне правильный способ сделать это.

Заранее спасибо,


person Sridhar    schedule 07.09.2012    source источник
comment
Я также столкнулся с той же проблемой за последние 2 дня, но, наконец, я получил ее, исправив код, подобный этому.   -  person shassss    schedule 07.09.2012
comment
как только проверишь мой ответ, я отредактировал шридхара   -  person shassss    schedule 07.09.2012


Ответы (1)


В методе OnCreate() вы должны написать это:

 AppPreferences prefs = new AppPreferences(PresentChatActivity.this);
             boolean notify_checkbox = prefs.getNotifyState();

    Notification(message.getBody(),fromName, name);

Затем вне OnCreate() напишите эту функцию

   protected void Notification(String body, String fromName, String Notificationmsg) {

    NotificationManager notificationManager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);      

    String tickerText = getString(R.string.app_name, body);
    Notification notif = new Notification(R.drawable.ic_launcher, tickerText,
            System.currentTimeMillis());

    Intent notificationIntent = new Intent(this, PresentChatActivity.class);
    PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);


     notif.setLatestEventInfo(PresentChatActivity.this,Notificationmsg, message, pendingIntent);
     notif.setLatestEventInfo(getApplicationContext(), fromName, body,pendingIntent );  
     notificationManager.notify(10001, notif);
     }
person shassss    schedule 07.09.2012
comment
что такое notify_checkbox и chat_data - person Sridhar; 07.09.2012
comment
это не что иное, как флажок «Уведомление», затем установите флажок «Уведомление только о том, что уведомление будет отображаться», иначе уведомление не будет отображаться. - person shassss; 07.09.2012
comment
в вашей программе нет необходимости проверять, а непроверенный означает, что вы можете добавить прямо как это уведомление (message.getBody(), fromName, name); - person shassss; 07.09.2012
comment
не могу понять вашу логику. у меня нет флажка в моем приложении, это показать/скрыть строку состояния - person Sridhar; 07.09.2012
comment
ho kkk, просто ты хочешь отобразить notoficationaaa??скажи мне это ясно - person shassss; 07.09.2012
comment
давайте продолжим это обсуждение в чате - person Sridhar; 07.09.2012
comment
Хорошо, хорошо, но мне нужно показать/скрыть строку состояния, вы можете увидеть мой код для создания уведомления, он работал хорошо, и строка состояния всегда видна. - person Sridhar; 07.09.2012
comment
Мне нужно скрыть строку состояния, если уведомление не получено - person Sridhar; 07.09.2012
comment
мне нужен некоторый NotificationManager для обнаружения нового полученного уведомления - person Sridhar; 07.09.2012
comment
напишите это в своем коде, чтобы скрыть строку состояния @Override protected void onCreate (Bundle saveInstanceState) { super.onCreate (savedInstanceState); requestWindowFeature (Window.FEATURE_NO_TITLE); this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN); } - person shassss; 07.09.2012
comment
хорошо, так что notify_checkbox будет true, когда новое уведомление будет получено правильно - person Sridhar; 07.09.2012
comment
Я пишу код для уведомления в методе onReceive() класса BroadcastReceiver. мне написать в onCreate () { AppPreferences prefs = new AppPreferences (PresentChatActivity.this); логическое значение notify_checkbox = prefs.getNotifyState(); - person Sridhar; 07.09.2012
comment
AppPreferences находится в каком пакете. я использую андроид 4.03 - person Sridhar; 07.09.2012
comment
вам нужно создать новый pakageeeee для dat...nd iam, используя 2.2 - person shassss; 07.09.2012
comment
Руководитель моей группы, попросите меня отключить функцию уведомлений - person Sridhar; 07.09.2012