-5

我的问题是,当我的手机没有信用时,该方法onReceiver()永远不会被调用。然后我的问题是如何没有 .TheResultCode()每次onReceiver()尝试resultCode时都是 0 enviados.getResultCode()(“enviados”是BroadcastReceiver


这是我的代码:

    @Override
public boolean onTouch(View arg0, MotionEvent arg1) {

    if (arg1.getAction()==MotionEvent.ACTION_DOWN){

        if (arg0.getId()==destinatario.getId()){
              finish();
              guardaTexto=textoet.getText().toString();
              Intent consola = new Intent(this,ListaContactos.class);
              consola.putExtra("guardaTexto", guardaTexto);
              startActivity(consola);
              finish();
              return true; 
        }
        else
            if (arg0.getId()==enviar.getId()){ 


                t=-1;
                s=-1;
                manager=SmsManager.getDefault();


                final String texto=recibeTexto;


                final Intent send = new Intent(SENT);
                final PendingIntent 
                        statusEnviado=PendingIntent.getBroadcast(this, 0,send,0); 

                final Intent delivery = new Intent(DELIVERED);
                final PendingIntent  statusEntregado 
                        =PendingIntent.getBroadcast(this, 0,delivery,0); 

                final ArrayList<PendingIntent> sentIntents = new 
                            ArrayList<PendingIntent>();
                sentIntents.add(statusEnviado);
                final ArrayList<PendingIntent> deliveryIntents = new 
                            ArrayList<PendingIntent>();
                deliveryIntents.add(statusEntregado);



                enviados=new BroadcastReceiver() { 



                    @Override
                    public void onReceive(Context contexto,Intent 
                                    intento){


                             t++;

                             String maximo="";
                             BaseDeDatos sel=new 
           BaseDeDatos(Principal_mensajes.this,"administradorDeMensajes", null,18); 
                             SQLiteDatabase 
           max=sel.getReadableDatabase(); 

                             Cursor cursorMax=max.rawQuery("SELECT 
      max(id) as maximo FROM conversaciones WHERE number='" + number[t] + "'",null);


                             while (cursorMax.moveToNext()){
                             maximo = 
                  cursorMax.getString(cursorMax.getColumnIndex(("maximo")));
                             }
                             cursorMax.close();
                             max.close();
                             sel.close();

                       switch (getResultCode()){

                       case Activity.RESULT_OK:

                           if (address[t].equals("No agendado")){
                            Toast 
                   enviado=Toast.makeText(contexto,"Mensaje enviado con éxito a " + 
                   number[t],Toast.LENGTH_SHORT);
                            enviado.show();
                           }
                           else
                           {
                            Toast enviado=Toast.makeText(contexto,"Mensaje 
                            enviado con éxito a " + address[t],Toast.LENGTH_SHORT);
                            enviado.show();
                           }                      
                            break;
                       case SmsManager.RESULT_ERROR_GENERIC_FAILURE:

                            Toast 
               noEnviado=Toast.makeText(contexto,"Mensaje no enviado a " + address[t] 
               ,Toast.LENGTH_SHORT);
                            noEnviado.show();

                            BaseDeDatos db3=new 
              BaseDeDatos(Principal_mensajes.this,"administradorDeMensajes", null,18); 
                            SQLiteDatabase 
              insertar3=db3.getWritableDatabase(); 

                            insertar3.execSQL("UPDATE conversaciones SET 
                                estado='errorEnviar' WHERE  id='" + maximo + "'"  );
                            insertar3.close();
                            db3.close();

                            break;
                       case SmsManager.RESULT_ERROR_RADIO_OFF:

                            Toast 
                   sinCobertura=Toast.makeText(contexto,"Sin cobertura de red.El 
                   mensajes será enviado cuando" +
                                    " la red esté 
                    disponible",Toast.LENGTH_LONG);
                            sinCobertura.show();

                            BaseDeDatos bd1=new 
              BaseDeDatos(Principal_mensajes.this,"administradorDeMensajes", null,18); 
                            SQLiteDatabase 
              modo1=bd1.getWritableDatabase(); 
                            ContentValues registro1=new 
             ContentValues(); 

                            registro1.put("tipo","cobertura"); 

             registro1.put("address",address[t]);
                            registro1.put("number",number[t]);
                            registro1.put("body", 
             textoet.getText().toString());
                            modo1.insert("reportes", null, registro1); 
                            modo1.close();
                            bd1.close();

                            BaseDeDatos insert=new 
            BaseDeDatos(Principal_mensajes.this,"administradorDeMensajes", null,18); 
                            SQLiteDatabase 
            escribe=insert.getWritableDatabase(); 

                            escribe.execSQL("UPDATE conversaciones SET 
                          estado='errorEnviar'WHERE  id='" + maximo + "'"  );
                            escribe.close();
                            insert.close();

                            Intent servicio = new 
                        Intent(Principal_mensajes.this, servicioEntregaYerror.class);
                            startService(servicio);


                            break; 
                       case SmsManager.RESULT_ERROR_NO_SERVICE:

                            Toast sinServicio=Toast.makeText(contexto,"Sin 
                                servicio.El mensajes será enviado cuando " +
                                    "el servicio esté 
                               disponible",Toast.LENGTH_LONG);
                            sinServicio.show();

                            BaseDeDatos bd2=new 
              BaseDeDatos(Principal_mensajes.this,"administradorDeMensajes", null,18); 
                            SQLiteDatabase 
              modo2=bd2.getWritableDatabase(); 
                            ContentValues registro2=new 
              ContentValues(); 

                            registro2.put("tipo","servicio"); 

               registro2.put("address",address[t]);
                            registro2.put("number",number[t]);
                            registro2.put("body", 
             textoet.getText().toString());
                            modo2.insert("reportes", null, registro2); 
                            modo2.close();
                            bd2.close();

                            BaseDeDatos insert2=new 
             BaseDeDatos(Principal_mensajes.this,"administradorDeMensajes", null,18); 
                            SQLiteDatabase 
             escribe2=insert2.getWritableDatabase(); 

                            escribe2.execSQL("UPDATE 
            conversaciones SET estado='errorEnviar'WHERE  id='" + maximo + "'"  );
                            escribe2.close();
                            insert2.close();


                            Intent servicio2 = new 
                       Intent(Principal_mensajes.this, servicioEntregaYerror.class);
                            startActivity(servicio2);


                            break; 
                       case Activity.RESULT_CANCELED:

                            Toast saldo=Toast.makeText(contexto,"El 
                      mensaje no ha sido enviado.Podría deberse a que su saldo se ha 
                         terminado",Toast.LENGTH_LONG);
                            saldo.show();

                            BaseDeDatos insert3=new 
              BaseDeDatos(Principal_mensajes.this,"administradorDeMensajes", null,18); 
                            SQLiteDatabase 
              escribe3=insert3.getWritableDatabase(); 

                            escribe3.execSQL("UPDATE 
            conversaciones SET estado='errorEnviar'WHERE  id='" + maximo + "'"  );
                            escribe3.close();
                            insert3.close();

                       }

                      }

                   };



                 entregados=new BroadcastReceiver() {    

                        @Override
                        public void onReceive(Context contexto,Intent 
                                     intento){

                             s++;

                             String maximo2="";
                             BaseDeDatos sel2=new 
             BaseDeDatos(Principal_mensajes.this,"administradorDeMensajes", null,18); 
                             SQLiteDatabase 
            max2=sel2.getReadableDatabase(); 

                             Cursor cursorMax2=max2.rawQuery("SELECT 
           max(id) as maximo FROM conversaciones WHERE number='" + number[s] + 
            "'",null);


                             while (cursorMax2.moveToNext()){
                             maximo2 = 
                       cursorMax2.getString(cursorMax2.getColumnIndex(("maximo")));
                             }
                             cursorMax2.close();
                             max2.close();
                             sel2.close();


                             switch (getResultCode()){

                               case Activity.RESULT_OK:

                               BaseDeDatos db=new 
             BaseDeDatos(Principal_mensajes.this,"administradorDeMensajes", null,18); 
                               SQLiteDatabase 
              insertar=db.getWritableDatabase(); 

                               insertar.execSQL("UPDATE conversaciones 
             SET estado='entregado' WHERE id=" + maximo2 );
                               insertar.close();
                               db.close();

                                 break;


                              case Activity.RESULT_CANCELED:

                                 BaseDeDatos db2=new 
           BaseDeDatos(Principal_mensajes.this,"administradorDeMensajes", null,18); 
                                 SQLiteDatabase 
            insertar2=db2.getWritableDatabase(); 

                                 insertar2.execSQL("UPDATE 
          conversaciones SET estado='noEntregado' WHERE id=" + maximo2 );
                                 insertar2.close();
                                 db2.close();

                                  break;
                             }


                         }

                      };


                 registerReceiver(enviados,new IntentFilter(SENT));
                 registerReceiver(entregados,new IntentFilter(DELIVERED));

                AlertDialog.Builder builder = new 
                             AlertDialog.Builder(this);
                builder.setMessage("Estas seguro de enviar el mensaje?")  
                .setCancelable(false)       
                .setPositiveButton("Aceptar", new 
                          DialogInterface.OnClickListener() { 

                public void onClick(DialogInterface dialog, int id) 
             {                


                       for(int c=0;c<number.length;c++){

                       BaseDeDatos bd1=new 
              BaseDeDatos(Principal_mensajes.this,"administradorDeMensajes", null,18); 
                       SQLiteDatabase modo1=bd1.getWritableDatabase(); 
                       ContentValues registro1=new ContentValues(); 

                       registro1.put("address", address[c]); 
                       registro1.put("number", number[c]); 
                       registro1.put("body", textoet.getText().toString());
                       Calendar calendario = new GregorianCalendar();
                       int horas=calendario.get(calendario.HOUR_OF_DAY); 
                       int minutos=calendario.get(calendario.MINUTE); 
                       int segundos=calendario.get(calendario.SECOND); 
                       String fecha=String.valueOf(horas + ":" + minutos + ":" 
                              + segundos);
                       registro1.put("horario",fecha );
                       Time time1= new Time(Time.getCurrentTimezone());
                       time1.setToNow();
                       String stringTime1=String.valueOf(time1.monthDay + "/" 
                              + time1.month + "/" + time1.year);
                       registro1.put("fecha",stringTime1);
                       modo1.insert("enviados", null, registro1); 
                       modo1.close();
                       bd1.close();

                       BaseDeDatos bd2=new 
            BaseDeDatos(Principal_mensajes.this,"administradorDeMensajes", null,18); 
                       SQLiteDatabase modo2=bd2.getWritableDatabase(); 
                       ContentValues registro2=new ContentValues(); 

                       registro2.put("address", address[c]); 
                       registro2.put("number", number[c]); 
                       registro2.put("body", textoet.getText().toString());
                       Calendar calendario2 = new GregorianCalendar();
                       int horas2=calendario.get(calendario2.HOUR_OF_DAY); 
                       int minutos2=calendario.get(calendario2.MINUTE); 
                       int segundos2=calendario.get(calendario2.SECOND); 
                       String fecha2=String.valueOf(horas2 + ":" + 
                                   minutos2 + ":" + segundos2);
                       registro2.put("horario",fecha2 );
                       Time time2= new Time(Time.getCurrentTimezone());
                       time2.setToNow();
                       String stringTime2=String.valueOf(time2.monthDay + "/" 
                               + time2.month + "/" + time2.year);
                       registro2.put("fecha",stringTime2);
                       registro2.put("envia","true" );
                       registro2.put("ordenDeEnvio",String.valueOf(c) );
                       modo2.insert("conversaciones", null, registro2); 
                       modo2.close();
                        bd2.close();
                       }


                       BaseDeDatos borra=new 
              BaseDeDatos(Principal_mensajes.this,"administradorDeMensajes", null,18); 
                       SQLiteDatabase 
               cont=borra.getWritableDatabase(); 
                       cont.execSQL("DELETE FROM multipleContacts");
                       cont.close();
                       borra.close();

                     int length=textoet.length();

                        if (length>160){

                            ArrayList<String> parts = 
                                      manager.divideMessage(textoet.toString());

                            for(int a=0;a<number.length;a++){


   manager.sendMultipartTextMessage(number[a], null,parts,sentIntents,deliveryIntents);

                            }
                        }
                        else
                        {

                            for(int b=0;b<number.length;b++){

                               manager.sendTextMessage(number[b], 
            null,textoet.getText().toString(),statusEnviado,statusEntregado);


                            }



                        }  


                       Intent SMS = new Intent(Principal_mensajes.this, 
                                   lista.class);
                       startActivity(SMS);
                       finish();



                }     
                })       
                .setNegativeButton("Cancelar", new 
                             DialogInterface.OnClickListener() {   

                public void onClick(DialogInterface dialog, int id) 
                               {                
                   dialog.cancel();        
                    }

                });

                AlertDialog alert = builder.create();
                alert.show();

                  return true; 
        }
            else
                if (arg0.getId()==cancelar.getId()){

                       BaseDeDatos borraTodo=new 
             BaseDeDatos(Principal_mensajes.this,"administradorDeMensajes", null,18); 
                       SQLiteDatabase 
             contTodo=borraTodo.getWritableDatabase(); 
                       contTodo.execSQL("DELETE FROM 
               multipleContacts");
                       contTodo.close();
                       borraTodo.close();

                       Intent lista = new Intent(this,lista.class);
                       startActivity(lista);
                       finish();

                }


    }

        return false;

}
4

1 回答 1

1

在不需要代码的情况下,您可能会得出结论,您的应用程序正在完全按其应有的方式工作。

如果您的 BroadCastReceiver 只侦听成功发送的 SMS,而您没有信用,则不会发送 SMS,因此永远不会收到 Intent,因此不会返回任何结果代码...

于 2012-06-11T06:18:56.420 回答