2

我正在尝试在应用程序的通知中进行倒计时:当应用程序收到通知时,通知有 20 秒的时间消失。这是我的代码,但是我的应用程序在收到通知后立即中断,希望有人可以帮助我,谢谢:

    package com.taxicell;

    import java.util.ArrayList;



    import android.app.Notification;
    import android.app.NotificationManager;
    import android.app.PendingIntent;
    import android.content.Context;
    import android.content.Intent;
    import android.database.Cursor;
    import android.database.sqlite.SQLiteDatabase;
    import android.os.AsyncTask;
    import android.os.Bundle;
    import android.util.Log;
    import android.widget.Toast;

    /**
     *Falta por descubrir
     * @author sergio
     */
    public class Notifica  { 
    private Context context;

    private String data[];
    public timer timer;

        public void Nueva(Context con,String dat){
            Log.v("app", "nueva notificacion con los datos: "+dat);
            context = con;
            NotificationManager notificador =(NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
           // Notification notifica=new Notification(R.drawable.taxicell,"TaxiCell !",System.currentTimeMillis());
            Notification notifica=new Notification(R.drawable.taxicell,"TaxiCell !",30000);

            notifica.defaults |= Notification.DEFAULT_SOUND;
            notifica.defaults |= Notification.DEFAULT_LIGHTS;
            notifica.flags |= Notification.FLAG_AUTO_CANCEL;
            notifica.defaults |= Notification.DEFAULT_SOUND;
            notifica.defaults |= Notification.DEFAULT_VIBRATE;

            String mensajin="";
            Intent intentoNotifica;
            data=dat.split(",");

            if(Validacion(dat)){
               intentoNotifica=new Intent(context,Mensaje.class);
               Bundle datos = new Bundle();
               datos.putString("msj",dat );
               datos.putInt("tipo", 0);
               intentoNotifica.putExtras(datos);
               mensajin="Solicitud de Servicio !";
            }else{
               intentoNotifica=new Intent(context,Mensaje.class);
               Bundle datos = new Bundle();
               datos.putString("msj",dat);
               datos.putInt("tipo", 1);
               intentoNotifica.putExtras(datos);
               mensajin="Asignación de Saldo !";

            }
            Log.v("pm", "1");
            timer = new timer();


            Log.v("pr", "2");
            timer.execute("ejecucion");
            PendingIntent penIntent = PendingIntent.getActivity(context, 0, intentoNotifica,android.content.Intent.FLAG_ACTIVITY_NEW_TASK);
            notifica.setLatestEventInfo(context,"TaxiCell",mensajin, penIntent);
            notificador.notify(1,notifica);


        }
....





....         
         private class timer extends AsyncTask<String, Integer, Integer>{

                @Override
                 protected void onPreExecute() {
                     Log.v("loop","0");
                  }

                  protected Integer doInBackground(String... urls) {
                     Log.v("loop","1");
                      int i=10;
                      while( i > 0) {

                            if(isCancelled()){break;}
                            else{
                              try {Thread.sleep(1000); }
                              catch (InterruptedException e) {}
                              publishProgress(i); //Actualizamos los valores
                              Log.v("loop","2  es: "+i);
                              i--;
                            }
                        }
                      return i;
                  }
                @Override
                  protected void onProgressUpdate (Integer... valores) {
                  }

                @Override
                  protected void onPostExecute(Integer res) {
                    rechazarServ();  
                }

         }

    }
4

0 回答 0