1. 程式人生 > >自定義Notification新增點選事件

自定義Notification新增點選事件

前言

在上一篇文章中《Notification自定義介面》中我們實現了自定義的介面,那麼我們該怎麼為自定義的介面新增點選事件呢?像酷狗在通知欄 有“上一首”,“下一首”等控制按鈕,我們需要對按鈕的點選事件進行響應,不過方法和之前的點選設定不一樣,需要另外處理,下面我將進行簡單的說明。

實現

同樣,我們需要一個Service的子類MyService,然後在MyService的onCreate中設定,如下程式碼:

public class MyService extends Service {

    public static final String ONCLICK = "com.app.onclick"
; private BroadcastReceiver receiver_onclick = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { if (intent.getAction().equals(ONCLICK)) { Vibrator vibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE); vibrator.vibrate(1000
); } } }; @Override public void onCreate() { super.onCreate(); Notification notification = new Notification(R.drawable.ic_launcher, "JcMan", System.currentTimeMillis()); RemoteViews view = new RemoteViews(getPackageName(),R.layout.notification); notification.contentView = view; IntentFilter filter_click = new
IntentFilter(); filter_click.addAction(ONCLICK); //註冊廣播 registerReceiver(receiver_onclick, filter_click); Intent Intent_pre = new Intent(ONCLICK); //得到PendingIntent PendingIntent pendIntent_click = PendingIntent.getBroadcast(this, 0, Intent_pre, 0); //設定監聽 notification.contentView.setOnClickPendingIntent(R.id.btn,pendIntent_click); //前臺執行 startForeground(1, notification); } @Override public IBinder onBind(Intent intent) { return null; } }

可以看到,我們先得到BroadcastReceiver的一個物件,然後在onReceiver裡面實現我們的操作,我設定成點選時候手機震動一秒鐘,當然不要忘記在配置檔案新增震動的許可權,不然到時候就會出錯了。如果對廣播沒有了解的,那麼可以先去了解一下廣播的機制,這裡我使用的是動態註冊廣播的方法,還有另外一種方法來註冊,不過我更喜歡動態註冊的罷了。

小結

看到在Notification新增一個ProgressBar來實現下載的進度提示,這裡需要用到更新Notification介面的知識,雖然和在Activity中更新介面不太一樣,但是也不是在複雜,因為我並沒有用到這方面的知識,所以這裡就不給大家介紹了,有興趣的可以搜相關的內容。