2017-02-16 11 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実際には、ハンドラーを使用してタイマーを設定するのは、短時間タイマー、つまりアプリケーションが実行されている限りです。長期間は、[AlarmManager](https://developer.android.com/reference/android/app/AlarmManager.html)を使用してください。あなたのアプリが現在実行されていなくても実行されます(実行していない場合はアプリを実行します)。 – BornToCode

関連する問題