2017-02-16 60 views
0

我在用戶在我的應用程序中接收視頻通話時發出通知。Android通話通知 - 點擊時停止計時器

我的通知:

Intent intent1 = new Intent(Intent.ACTION_CAMERA_BUTTON); 
     Uri uri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE); 
     PendingIntent pendingIntent = PendingIntent.getActivity(context,0,intent1,0); 
     NotificationCompat.Action action = new NotificationCompat.Action(R.drawable.ic_camera_notification,"Ok",pendingIntent); 
     NotificationCompat.Builder builder = new NotificationCompat.Builder(context) 
       .setContentTitle("TITRE !!") 
       .setContentText("Test") 
       .setPriority(Notification.PRIORITY_HIGH) 
       .setCategory(Notification.CATEGORY_CALL) 
       .setSmallIcon(R.drawable.ic_camera_notification) 
       .addAction(action) 
       .setSound(uri) 
       .setAutoCancel(true) 
       .setVibrate(new long[] { 1000, 1000}); 
     NotificationManager notificationManager = (NotificationManager) context.getSystemService(NOTIFICATION_SERVICE); 
     Notification notification = builder.build(); 
     notificationManager.notify(11,notification); 

要重複,直到用戶回答(或有限的時間)我想添加一個計時器通知(如在這裏說明一下:What is the equivalent to a JavaScript setInterval/setTimeout in Android/Java?

但是,當用戶做出選擇,我想停止計時器。但是沒有onClickListener,只有Intent。

我該怎麼做?由於

回答

1

如果您正在使用Handler這樣的:

// Message identifier 
    private static final int MSG_SOME_MESSAGE = 1234; 

    private Handler handler; 

    ... 

    handler = new Handler(new Handler.Callback() { 

     @Override 
     public boolean handleMessage(Message msg) { 
      if (msg.what == MSG_SOME_MESSAGE) { 
       // do something 
       // to repeat, just call sendEmptyMessageDelayed again 
       return true; 
      } 
      return false; 
     } 
    }); 

這樣設置定時器:

handler.sendEmptyMessageDelayed(MSG_SOME_MESSAGE, SOME_DELAY_IN_MILLISECONDS); 

取消這樣的計時器:

handler.removeMessages(MSG_SOME_MESSAGE); 
+0

謝謝,我似乎是個好主意。我會嘗試。 但我問,我不認爲做一個計時器是個好主意。但我沒有找到一種方法來保持我的通知沒有這樣的頭像。 –

+0

@RomainCaron實際上,使用'Handler'的計時器只適用於短時間計時器,即只要應用程序正在運行。長期來說,使用[AlarmManager](https://developer.android.com/reference/android/app/AlarmManager.html)。它會運行,即使你的應用程序目前沒有運行(我的意思是它會運行你的應用程序,如果它沒有運行)。 – BornToCode