¿Creación de una aplicación de SMS en Android?

Estoy creando una aplicación SMS para enviar y recibir SMS.

Puedo enviar SMS usando el siguiente código:

SmsManager sms = SmsManager.getDefault(); sms.sendTextMessage(phoneNumber, null,message , pi, null); 

Me gustaría recibir SMS y ponerlos en mi propia bandeja de entrada. ¿Cómo puedo crear esta bandeja de entrada? Me gustaría que funcionara de la misma manera que una bandeja de entrada normal.

 Bundle bundle = intent.getExtras(); Object[] pdus = (Object[]) bundle.get("pdus"); SmsMessage[] messages = new SmsMessage[pdus.length]; for (int i = 0; i < messages.length; i++) { messages[i] = SmsMessage.createFromPdu((byte[])pdus[i]); Log.v("SMSFun","Body: " + messages[i].getDisplayMessageBody()); Log.v("SMSFun","Address: " + messages[i].getDisplayOriginatingAddress()); //If say we wanted to do something based on who sent it if (messages[i].getDisplayOriginatingAddress().contains("5556")) { // we could launch an activity and pass the data Intent newintent = new Intent(ctx, SecretMessage.class); newintent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); newintent.putExtra("address", messages[i].getDisplayOriginatingAddress()); newintent.putExtra("message", messages[i].getDisplayMessageBody()); ctx.startActivity(newintent); } } 

¿Cómo almacenar los SMS entrantes en la bandeja de entrada?

¿Es posible en Android escuchar un número de puerto específico para SMS?

No creo que usted puede colocar sms en diferentes bandejas de entrada y no escuchar un puerto para obtener SMS que utiliza un BroadcastReceiver .

Yo recomendaría que vaya a través de la aplicación smspopup de código abierto para tener una mejor idea de cómo funcionan las cosas para sms en general.

U puede enviar y recibir el mensaje usando la clase de SMSMAnager. U puede implementar personalizado Reciever que en msg recieved notificará al usuario que el mensaje ha llegado .. Aquí estoy adjuntando el código que he escrito para enviar y recibir mensajes utilizando el receptor de difusión personalizada, podría ser útil para u. Nota: Esto es para la versión 1.6 anterior. Asegúrese de que u hacerlo en 2.0 o 2.2 preferiblemente.

Ir a través de él y tratar de aplicarlo ..

Public class SMS extends Actividad {

  Button btnSendSMS; EditText txtPhoneNo; EditText txtMessage; Button addcontact; EditText phonePhoneno; private static final int CONTACT_PICKER_RESULT = 1001; private static final String DEBUG_TAG = ""; String phoneNo=""; String phonenofromcontact=""; String finallistofnumberstosendmsg =""; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); btnSendSMS = (Button) findViewById(R.id.btnSendSMS); txtPhoneNo = (EditText) findViewById(R.id.txtPhoneNo); txtMessage = (EditText) findViewById(R.id.txtMessage); addcontact =(Button) findViewById(R.id.addphonenofromcontact); addcontact.setOnClickListener(new View.OnClickListener() { public void onClick(View V) { Intent ContactPickerIntent = new Intent(Intent.ACTION_PICK,ContactsContract.Contacts.CONTENT_URI); startActivityForResult(ContactPickerIntent, CONTACT_PICKER_RESULT); } } ); btnSendSMS.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { String message = txtMessage.getText().toString(); phoneNo = txtPhoneNo.getText().toString(); String phoneNo1= phonePhoneno.getText().toString(); // Sending message to both the written and added contact... finallistofnumberstosendmsg +=phoneNo1 + phoneNo; String phoneFinal= phoneNo + finallistofnumberstosendmsg; //StringTokenizer st=new StringTokenizer(finallistofnumberstosendmsg,","); StringTokenizer st=new StringTokenizer(phoneFinal,","); while (st.hasMoreElements()) { String tempMobileNumber = (String)st.nextElement(); if(tempMobileNumber.length()>0 && message.trim().length()>0) { sendSMS(tempMobileNumber, message); } else { Toast.makeText(getBaseContext(), "Please enter both phone number and message.", Toast.LENGTH_SHORT).show(); } } } }); } protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == RESULT_OK) { switch (requestCode) { case CONTACT_PICKER_RESULT: Cursor cursor=null; try { Uri result = data.getData(); Log.v(DEBUG_TAG, "Got a contact result: " + result.toString()); // get the contact id from the Uri String id = result.getLastPathSegment(); // query for everything contact number cursor = getContentResolver().query( Phone.CONTENT_URI, null, Phone.CONTACT_ID + "=?", new String[]{id}, null); cursor.moveToFirst(); int phoneIdx = cursor.getColumnIndex(Phone.DATA); if (cursor.moveToFirst()) { phonenofromcontact = cursor.getString(phoneIdx); finallistofnumberstosendmsg +=","+phonenofromcontact; Log.v(DEBUG_TAG, "Got phone no : " + phonenofromcontact); } else { Log.w(DEBUG_TAG, "No results"); } } catch(Exception e) { Log.e(DEBUG_TAG, "Failed to get contact number", e); } finally { if (cursor != null) { cursor.close(); } } phonePhoneno= (EditText)findViewById(R.id.Phonenofromcontact); phonePhoneno.setText(finallistofnumberstosendmsg); //phonePhoneno.setText(phonenofromcontact); if(phonenofromcontact.length()==0) { Toast.makeText(this, "No contact number found for this contact", Toast.LENGTH_LONG).show(); } break; } } else { Log.w(DEBUG_TAG, "Warning: activity result not ok"); } } private void sendSMS(String phoneNumber, String message) { String SENT = "SMS_SENT"; String DELIVERED = "SMS_DELIVERED"; PendingIntent sentPI = PendingIntent.getBroadcast(this, 0, new Intent(SENT), 0); PendingIntent deliveredPI = PendingIntent.getBroadcast(this, 0, new Intent(DELIVERED), 0); //---when the SMS has been sent--- registerReceiver(new BroadcastReceiver(){ @Override public void onReceive(Context arg0, Intent arg1) { switch (getResultCode()) { case Activity.RESULT_OK: Toast.makeText(getBaseContext(), "SMS sent", Toast.LENGTH_SHORT).show(); break; case SmsManager.RESULT_ERROR_GENERIC_FAILURE: Toast.makeText(getBaseContext(), "Generic failure", Toast.LENGTH_SHORT).show(); break; case SmsManager.RESULT_ERROR_NO_SERVICE: Toast.makeText(getBaseContext(), "No service", Toast.LENGTH_SHORT).show(); break; case SmsManager.RESULT_ERROR_NULL_PDU: Toast.makeText(getBaseContext(), "Null PDU", Toast.LENGTH_SHORT).show(); break; case SmsManager.RESULT_ERROR_RADIO_OFF: Toast.makeText(getBaseContext(), "Radio off", Toast.LENGTH_SHORT).show(); break; } } },new IntentFilter(SENT)); //---when the SMS has been delivered--- registerReceiver(new BroadcastReceiver(){ @Override public void onReceive(Context arg0, Intent arg1) { switch (getResultCode()) { case Activity.RESULT_OK: Toast.makeText(getBaseContext(), "SMS delivered", Toast.LENGTH_SHORT).show(); break; case Activity.RESULT_CANCELED: Toast.makeText(getBaseContext(), "SMS not delivered", Toast.LENGTH_SHORT).show(); break; } } }, new IntentFilter(DELIVERED)); SmsManager sms = SmsManager.getDefault(); sms.sendTextMessage(phoneNumber, null, message, sentPI, deliveredPI); } 

}

// Esta clase notifica y recibe mensajes

Public class SmsReceiver extends BroadcastReceiver {

 @Override public void onReceive(Context context, Intent intent) { //---get the SMS message passed in--- Bundle bundle = intent.getExtras(); SmsMessage[] msgs = null; String str = ""; if (bundle != null) { //---retrieve the SMS message received--- Object[] pdus = (Object[]) bundle.get("pdus"); msgs = new SmsMessage[pdus.length]; for (int i=0; i<msgs.length; i++) { msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]); str += "SMS from " + msgs[i].getOriginatingAddress(); str += " :"; str += msgs[i].getMessageBody().toString(); str += "\n"; } //---display the new SMS message--- Toast.makeText(context, str, Toast.LENGTH_SHORT).show(); } } 

}

Gracias … rakesh

Lo que debe hacer es registrar un objeto BroadcastReceiver . Consulte este artículo para obtener más información.

Si desea ocultar mensajes SMS desde la bandeja de entrada principal, tendrá que eliminarlos de SMS ContentProvider y utilizar su propia base de datos SQLite para almacenarlos. También asegúrese de marcarlos como leídos en el proveedor de contenido para eliminar la notificación de la bandeja.

Puede enviar su difusión recibida a su actividad principal utilizando la intención. Y en su actividad principal recibe esta intención y agrega los datos a la vista de lista como una bandeja de entrada.

O la forma larga pero larga

Agregue estos datos (número y mensaje recibidos) a la base de datos SQL y, en la actividad principal, recupere los datos de la base de datos y agregue a la vista de lista llamada inbox. De esta forma, los datos de la bandeja de entrada se guardarán aunque el teléfono esté apagado o apagado. Si se cierra la aplicación.

  • ¿Cómo obtengo el nombre guardado de SMS Sender Contact (Person) mediante "content: // sms / inbox"
  • ¿Cómo puedo enviar mensajes SMS en el BACKGROUND usando Android?
  • Cómo obtener llamadas perdidas y recuento de SMS
  • ¿Cómo obtener el informe de entrega de cada SMS enviado en bucle Android?
  • Los teléfonos de Redmi no piden permisos de SMS y por lo tanto no leen sms
  • Configuración única de Android SMS
  • Envío de SMS mediante programación a varias personas obteniendo un error genérico
  • Cómo cambiar el texto de los sms de Android
  • Android: Marcar mensaje de texto (SMS) no leído
  • ¿Bloquear SMS entrantes en Android con Android 4.4 o superior?
  • SMS Broadcast Receiver no funciona después de reiniciar
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.