2015-06-24 20 views
6

GCM bildirim öğesini paylaşmak istiyorum. Paylaşım düğmesi tıklama etkinliklerine yanıt veriyor ve öğe de paylaşılıyor. Tek sorun burada, bildirim tepsisinin altında Niyet seçicisi iletişim kutusu var. Kullanıcı, durum çubuğunu el ile kapatmalı ve ardından paylaşım için uygulamayı seçmelidir. Durum çubuğunu program aracılığıyla kapatmak istiyorum, böylece kullanıcı paylaşmayı tıklattığında, doğrudan uygulamaları seçmek için ona iletişim kutusunu gösterir.Bildirim tepsisini programlama aracılığıyla kapatma

Hizmetin açılması/kapatılması için status bar hizmetinin kullanılabileceğini buldum. Ancak sistem uygulamaları için kısıtlanmış.

private void closeNotificationTray() { 
     Object service = mContext.getSystemService(Context.STATUS_BAR_SERVICE); 
     Method collapse; 
     try { 
      Class<?> statusBarMngr = Class.forName("android.app.StatusBarManager"); 
      if (Build.VERSION.SDK_INT >= 17) 
       collapse = statusBarMngr.getMethod("collapsePanels"); 
      else 
       collapse = statusBarMngr.getMethod("collapse"); 
      collapse.invoke(service); 
     } catch (ClassNotFoundException e) { 
      e.printStackTrace(); 
     } catch (NoSuchMethodException e) { 
      e.printStackTrace(); 
     } catch (InvocationTargetException e) { 
      e.printStackTrace(); 
     } catch (IllegalAccessException e) { 
      e.printStackTrace(); 
     } 

Yukarıdaki kodu kullandım. Ama "STATUS_BAR_SERVICE çözümlenemedi" hatası alıyorum. Ve Manifestteki aşağıda permision eklendiğinde: Ben sadece bana uygulamada kullanmak izin vermiyor apps.It sistem için izin alıyorum

<uses-permission 
     android:name="android.permission.STATUS_BAR" /> 

. status bar hizmetini veya başka bir alternatifi kullanmanın bir yolu var mı?

Güncelleme:

ben kod sadece 2 satır ile yukarıdaki sorunu çözdü. STATUS_BAR_SERVICE numaralı telefonu aramanıza gerek yoktur.

Intent it = new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS); 
    mContext.sendBroadcast(it); 

otomatik

+2

yukarıda deneyebilirsiniz. Lütfen güncellemenize güvenemediğiniz –

+0

numaralı çözüm için güncellemeyi kontrol edin. Gerçek bir sistem seviyesi diyaloğu açık olduğunda ne olur? Sistem düzeyinde bir iletişim kutusu açtım ve kapattı. –

cevap

0

Evet, bu izin "android.permission.STATUS_BAR" değil üçüncü parti uygulamalar için, sadece sistem uygulamalarına kullanılabilir bildirim kapatır olacak bu niyeti çağrılıyor. Sen yönteminin altında deneyebilirsiniz

:

  1. içine bekleyen niyet geçirerek Bazı bildirim oluşturun.
  2. Paylaşma eylemiyle birlikte bekleyen bir amaç oluşturun. Şimdi paylaşım seçeneğini kullanabileceksiniz.

@Amanda Fernandez ben bu sorunu çözmüş yöntemle

+0

FLAG_CANCEL_CURRENT bayrağını, beklemedeki paylaşım düğmesinin üzerine bastığımda, öğeyi kasetten silecektir. Tepside kalmasını ve sadece kullanıcı seçtiğinde temizlenmesini istiyorum. –