versuchen dies, es ist eine einfache Möglichkeit, Nachricht zum Lesen von Posteingang .
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);
}
}
diese Erlaubnis in Manifest hinzufügen.
<uses-permission android:name="android.permission.READ_SMS"></uses-permission>
Danke .. seine Arbeit wie Charme ... – amity
Es funktioniert sehr gut, danke! Ich habe sogar versucht mit der "IN" -Klausel und es funktioniert wie erwartet ... aber ... was ist mit Adressformat? Wenn ich in der "sql wo" -Anweisung die Adresse "3485152182" suche, funktioniert es, aber wenn ich nach "348 5152182" oder "348 5152 182" oder "+393485152182" (dieselbe Adresse mit internationalem Präfix) suche, wird die Abfrage ' Ich scheitere. Gibt es einen eleganten Weg, um diese Art von Problem zu lösen? Vielen Dank! – GiveEmTheBoot
@GiveEmTheBoot: Ich denke, es gibt keine gemeinsame Möglichkeit, dies zu tun, können Sie einfach einige String-Methoden wie "348 5152 182" in diesem Fall können Sie zuerst diese Nummer trimmen dann suchen oder "+393485152182 Fall Sie zuerst entfernen" + " Zeichen von der Nummer dann suchen Sie es –