有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Notificatoint指向正在运行的应用程序

我最近在我的测试中添加了一个通知,它有一个倒计时计时器,当我选择时间并点击按钮时,通知被设置为计时器并工作。但当我在通知仍在运行时点击主页按钮,并点击通知时,我会进入应用程序的新页面,而不是正在运行的页面。我想做的修复是在点击通知时停止计时器,让用户进入我的应用程序的重置页面

//Notification Intent
    final Intent notifyIntent = new Intent(this , MainActivity.class);
    final PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notifyIntent, PendingIntent.FLAG_UPDATE_CURRENT);
    final NotificationManager nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);



    View.OnClickListener listener = new View.OnClickListener() {
        @Override
        public void onClick(View view) {



            if (view.equals(silentButton)) {

                int getvaluehour = numPickerHour.getValue();
                int getvalueminute = numPickerMin.getValue();

                getvaluehour = getvaluehour * 3600000;
                getvalueminute = getvalueminute * 60000;
                long hoursandMinstomils = getvalueminute + getvaluehour;



                final CountDownTimer counter = new CountDownTimer(hoursandMinstomils, 1000) {


                    public void onTick(long millisUntilFinished) {
                        //here you can have your logic to set text to edittext
                        long millis = millisUntilFinished;
                        //Convert milliseconds into hour,minute and seconds
                        String hms = String.format("Silent ends in: " + "%02d:%02d:%02d", TimeUnit.MILLISECONDS.toHours(millis), TimeUnit.MILLISECONDS.toMinutes(millis) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis)), TimeUnit.MILLISECONDS.toSeconds(millis) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis)));
                        myText.setText(hms);




                        //Notification
                        notifyTimer.setSmallIcon(R.mipmap.ic_launcher);
                        notifyTimer.setTicker("This is a notification");
                        notifyTimer.setAutoCancel(true);
                        notifyTimer.setContentTitle(hms);

                        //Notification Intent
                        notifyTimer.setContentIntent(pendingIntent);

                        //issues the notification
                        nm.notify(uniqueID, notifyTimer.build());

                    }




                    public void onFinish() {

                        myText.setText("TIME'S UP!!"); //On finish change timer text

                        nm.cancel(uniqueID);



                    }
                }.start();





                stopButton.setOnClickListener(
                        new Button.OnClickListener() {
                            public void onClick(View v) {
                                counter.cancel();
                                myText.setText("Timer has been reset");

                                nm.cancel(uniqueID);

                            }
                        }
                );



            }

共 (1) 个答案

  1. # 1 楼答案

    您可以将标志设置为intent以配置其行为,出于您的目的,您可以使用

     notifyIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);