Решение этой проблемы для любого телефона, который поддерживает контент: // sms (не совсем уверен, что нет, но большинство делают), состоит в том, чтобы проверить, является ли «адрес» не нулевым, и не является ли он нулевым , также проверьте, отличается ли последний проверенный «_id» сообщения, потому что content: // sms иногда дает одно и то же сообщение 3-4 раза, и только один из них имеет «адрес» в качестве реального значения, а не ноль. Вот мой окончательный код в моем ContentObserver onChange:
Cursor cur = contentResolver.query(Uri.parse("content://sms"), null, null, null, null);
cur.moveToNext();
String id = cur.getString(cur.getColumnIndex("_id"));
final String user_id = settings.getString("user_id", "0");
if(!cur.getString(cur.getColumnIndex("address")).equals("null") && !id.equals(lastId)) {
for(int i =0; i < cur.getColumnNames().length; i++) {
Log.i("WOWOW", cur.getColumnName(i) + ": " + cur.getString(cur.getColumnIndex(cur.getColumnName(i))));
}
Log.i("WOWOW", "*****************************************************");
lastId = id;
}