Buzón de entrada de SMS de consulta de Android por nombre de remitente
Quiero obtener la lista de SMS en el teléfono por un remitente específico. Estos SMS se envían desde una pasarela de SMS, así que no tengo el número del remitente. Sin embargo, sé el nombre del remitente, como "Google".
Esto es lo que he intentado hasta ahora
- Podría un emulador enviar un SMS a sí mismo
- Content: // sms / enviado / no funciona
- Abortar SMS Intent en Android KitKat
- Identificador único para SMS y contactos (para comprobar la duplicación) en Android
- Intención del informe de entrega de mensajes de Android SMS
final String SMS_URI_INBOX = "content://sms/inbox"; Uri uri = Uri.parse(SMS_URI_INBOX); String[] projection = new String[] { "_id", "address", "person", "body", "date", "type" }; Cursor cur = getContentResolver().query(uri, projection, "person LIKE'%" + "Google" + "'", null, "date asc");
Sin embargo, el cursor está vacío.
- Error básico en AndroidManifest.xml para recibir permiso de SMS
- Recepción de SMS en Android Manifest.xml
- ¿Cómo puedo enviar un SMS desde un BroadcastReceiver y comprobar su estado?
- ¿Por qué obtengo NullPointerException al enviar un SMS en un HTC Desire, o lo que es SubmitPdu?
- Diálogo de confirmación de Android SMS
- Obtener el identificador de SMS del receptor de difusión
- Envío y recepción de SMS y MMS en Android (pre Kit Kat Android 4.4)
- ¿Cómo obtener el informe de entrega para el mensaje de texto enviado?
Ya casi has llegado
final String SMS_URI_INBOX = "content://sms/inbox"; Uri uri = Uri.parse(SMS_URI_INBOX); String[] projection = new String[] { "_id", "address", "person", "body", "date", "type" }; Cursor cur = getContentResolver().query(uri, projection, "address LIKE '%Google%'", null, "date asc");
En lugar de consultar "persona", busque "dirección". Las pasarelas de SMS utilizan el nombre como dirección.
Trate de hacer esto –
StringBuilder smsBuilder = new StringBuilder(); final String SMS_URI_INBOX = "content://sms/inbox"; final String SMS_URI_ALL = "content://sms/"; try { Uri uri = Uri.parse(SMS_URI_INBOX); String[] projection = new String[] { "_id", "address", "person", "body", "date", "type" }; Cursor cur = getContentResolver().query(uri, projection, "address LIKE '%Google%'", null, "date desc"); if (cur.moveToFirst()) { int index_Address = cur.getColumnIndex("address"); int index_Person = cur.getColumnIndex("person"); int index_Body = cur.getColumnIndex("body"); int index_Date = cur.getColumnIndex("date"); int index_Type = cur.getColumnIndex("type"); do { String strAddress = cur.getString(index_Address); int intPerson = cur.getInt(index_Person); String strbody = cur.getString(index_Body); long longDate = cur.getLong(index_Date); int int_Type = cur.getInt(index_Type); smsBuilder.append("[ "); smsBuilder.append(strAddress + ", "); smsBuilder.append(intPerson + ", "); smsBuilder.append(strbody + ", "); smsBuilder.append(longDate + ", "); smsBuilder.append(int_Type); smsBuilder.append(" ]\n\n"); } while (cur.moveToNext()); if (!cur.isClosed()) { cur.close(); cur = null; } } else { smsBuilder.append("no result!"); } // end if } } catch (SQLiteException ex) { Log.d("SQLiteException", ex.getMessage()); }
AndroidManifest.xml:
<uses-permission android:name="android.permission.READ_SMS" />
`Try this Esto se utiliza para obtener el último mensaje recibido de una dirección. si desea leer todos los mensajes iterar este cursor.
Uri mSmsinboxQueryUri = Uri.parse("content://sms/inbox"); Cursor cursor1 = getContentResolver().query(mSmsinboxQueryUri, new String[] { "body", "address" }, null, null, null); if (cursor1.getCount() > 0) { cursor1.moveToFirst(); String address = cursor1.getString(1); if (address.contains("Google")) { String body = cursor1.getString(0); } }
“
- Anotación @InjectView no funciona después de importar Butterknife en Android Studio?
- utilizando el almacenamiento de firebased de google sin autenticación