Prueba de esto, es una manera fácil para la lectura de mensajes de la bandeja de entrada .
public class ReadMsg extends AppCompatActivity {
ListView listView;
private static final int PERMISSION_REQUEST_READ_CONTACTS = 100;
ArrayList smsList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_read_msg);
listView = (ListView)findViewById(R.id.idList);
int permissionCheck = ContextCompat.checkSelfPermission(this, Manifest.permission.READ_SMS);
if (permissionCheck == PackageManager.PERMISSION_GRANTED){
showContacts();
}else{
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_SMS},PERMISSION_REQUEST_READ_CONTACTS);
}
}
private void showContacts() {
Uri inboxURI = Uri.parse("content://sms/inbox");
smsList = new ArrayList();
ContentResolver cr = getContentResolver();
Cursor c = cr.query(inboxURI,null,null,null,null);
while (c.moveToNext()){
String Number = c.getString(c.getColumnIndexOrThrow("address")).toString();
String Body= c.getString(c.getColumnIndexOrThrow("body")).toString();
smsList.add("Number: "+ Number + "\n" + "Body: "+ Body);
}
c.close();
ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, smsList);
listView.setAdapter(adapter);
}
}
Añadir este permiso en los manifiestos.
<uses-permission android:name="android.permission.READ_SMS"></uses-permission>
Thanks .. its work like charm ... – amity
¡Funciona muy bien gracias! Incluso probé con la cláusula "IN" y funciona como se esperaba ... pero ... ¿y el formato de dirección? En la declaración "sql where", si busco la dirección "3485152182" funciona, pero si busco "348 5152182" o "348 5152 182" o "+393485152182" (misma dirección con prefijo internacional), la consulta ' fallaré ¿Hay una manera elegante de resolver este tipo de problema? ¡Gracias! – GiveEmTheBoot
@GiveEmTheBoot: creo que no hay una forma común de hacer esto, puedes usar algunos métodos de cadena como "348 5152 182"; en este caso, primero puedes recortar este número y buscarlo o "+393485152182 caso primero quitas" + " firmar desde el número y buscarlo –