es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Receptor de SMS en difusión.

Soy un traductor de español que traduce documentos de TI. Traduzca lo siguiente al español. No traduzca el código y la salida en markdown.

Soy un novato en el desarrollo de Android y estoy tratando de crear una aplicación de receptor de SMS, pero no funciona. Quiero que el receptor de transmisión capture los mensajes entrantes y los pase a la vista del reciclador para que puedan mostrarse. En este momento, no se muestra nada.

Aquí está mi código (Archivo Manifiesto)

Aquí está el archivo MainActivity

Aquí está mi clase de adaptador de RecyclerView

Aquí está mi clase Sms Receiver

Aquí está mi clase de modelo de SMS

Código de mi actividad principal

Archivo de recursos de diseño (smsview.xml)

He intentado todo lo que puedo, pero no puedo hacer que funcione.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Basándose en el código proporcionado, parece que el problema es que el método refreshSmsInbox() en MainActivity no se está llamando en ninguna parte. Este método es responsable de obtener los mensajes SMS y actualizar la fuente de datos del adaptador de RecyclerView.

    Para solucionar este problema, debe llamar a refreshSmsInbox() dentro del método onReceive() en SmsReceiver después de agregar el nuevo mensaje a la fuente de datos del adaptador de RecyclerView:

    public void onReceive(Context context, Intent intent) {
        Bundle intentExtras = intent.getExtras();
        if (intentExtras != null) {
            Object[] sms = (Object[]) intentExtras.get(SMS_BUNDLE);
            String smsMessageStr = "";
            for (int i = 0; i < sms.length; ++i) {
                SmsMessage smsMessage = SmsMessage.createFromPdu((byte[]) sms[i]);
    
                String smsBody = smsMessage.getMessageBody().toString();
                String address = smsMessage.getOriginatingAddress();
    
                smsMessageStr += "SMS Desde: " + address + "\n";
                smsMessageStr += smsBody + "\n";
    
                // Agregue el nuevo mensaje a la fuente de datos del adaptador de RecyclerView
                SmsModel nuevoSms = new SmsModel("", address, smsBody, "", "");
                MainActivity inst = MainActivity.instance();
                inst.smsModel.add(nuevoSms);
                inst.updateList(smsMessageStr);
            }
    
            // Actualice la fuente de datos del adaptador de RecyclerView con todos los mensajes
            MainActivity inst = MainActivity.instance();
            inst.refreshSmsInbox();
        }
    }
    

    Además, debe asegurarse de que los mensajes SMS que está intentando recibir coincidan con los permisos solicitados en el archivo Manifest (es decir, android.permission.RECEIVE_SMS, android.permission.INTERNET, android.permission.READ_SMS). Si la aplicación aún no funciona, es posible que desee consultar los registros y depurar el código para identificar cualquier otro problema.

Comments are closed.