溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Android自定義Notification添加點(diǎn)擊事件

發(fā)布時(shí)間:2020-09-02 16:55:17 來源:腳本之家 閱讀:296 作者:潘建成 欄目:移動開發(fā)

前言

在上一篇文章中《Notification自定義界面》中我們實(shí)現(xiàn)了自定義的界面,那么我們該怎么為自定義的界面添加點(diǎn)擊事件呢?像酷狗在通知欄 有“上一首”,“下一首”等控制按鈕,我們需要對按鈕的點(diǎn)擊事件進(jìn)行響應(yīng),不過方法和之前的點(diǎn)擊設(shè)置不一樣,需要另外處理,下面我將進(jìn)行簡單的說明。

實(shí)現(xiàn)

同樣,我們需要一個(gè)Service的子類MyService,然后在MyService的onCreate中設(shè)置,如下代碼:

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);
  //設(shè)置監(jiān)聽
  notification.contentView.setOnClickPendingIntent(R.id.btn,pendIntent_click);
  //前臺運(yùn)行
  startForeground(1, notification);
 }
 @Override
 public IBinder onBind(Intent intent) {
  return null;
 }
}

可以看到,我們先得到BroadcastReceiver的一個(gè)對象,然后在onReceiver里面實(shí)現(xiàn)我們的操作,我設(shè)置成點(diǎn)擊時(shí)候手機(jī)震動一秒鐘,當(dāng)然不要忘記在配置文件添加震動的權(quán)限,不然到時(shí)候就會出錯(cuò)了。如果對廣播沒有了解的,那么可以先去了解一下廣播的機(jī)制,這里我使用的是動態(tài)注冊廣播的方法,還有另外一種方法來注冊,不過我更喜歡動態(tài)注冊的罷了。

小結(jié)

看到在Notification添加一個(gè)ProgressBar來實(shí)現(xiàn)下載的進(jìn)度提示,這里需要用到更新Notification界面的知識,雖然和在Activity中更新界面不太一樣,但是也不是在復(fù)雜,因?yàn)槲也]有用到這方面的知識,所以這里就不給大家介紹了,有興趣的可以搜相關(guān)的內(nèi)容。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI