Ich entwickle ein SMS-Programm und ich möchte Gespräche zu bekommen.
ich den Code unten geschrieben und es funktioniert gut, aber ich frage mich, ob esAndroid bekommen SMS-Konversation mit Name oder Adresse
Dieses Gespräch für geting fädelt
Uri SMS_INBOX = Uri.parse("content://sms/conversations/");
Cursor c = getContentResolver().query(SMS_INBOX, null, null, null, "date desc");
startManagingCursor(c);
String[] count = new String[c.getCount()];
String[] snippet = new String[c.getCount()];
String[] thread_id = new String[c.getCount()];
c.moveToFirst();
for (int i = 0; i < c.getCount(); i++) {
count[i] = c.getString(c.getColumnIndexOrThrow("msg_count"))
.toString();
thread_id[i] = c.getString(c.getColumnIndexOrThrow("thread_id"))
.toString();
snippet[i] = c.getString(c.getColumnIndexOrThrow("snippet"))
.toString();
//Toast.makeText(getApplicationContext(), count[i] + " - " + thread_id[i]+" - "+snippet[i] , Toast.LENGTH_LONG).show();
c.moveToNext();
}
c.close();
für immer Adressen nach Konversations-Thread
for(int ad = 0; ad < thread_id.length ; ad++)
{
Uri uri = Uri.parse("content://sms/inbox");
String where = "thread_id="+thread_id[ad];
Cursor mycursor= getContentResolver().query(uri, null, where ,null,null);
startManagingCursor(mycursor);
String[] number = new String[mycursor.getCount()];
if(mycursor.moveToFirst()){
for(int i=0;i<mycursor.getCount();i++){
number[i]=mycursor.getString(mycursor.getColumnIndexOrThrow("address")).toString();
mycursor.moveToNext();
}
}
mycursor.close();
effizienter sein könnte
und schließlich die Adressen überprüfen (wenn in Kontaktliste) und zu einer Liste hinzufügen
for(int i =0 ; i < numaralar.length ;i++)
{
String a = numaralar[i].substring(0,1);
if(!a.equals("+")){ kisiismi = numaralar[i]; }
ContentResolver localContentResolver = getApplicationContext().getContentResolver();
Cursor contactLookupCursor =
localContentResolver.query(
Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI,
Uri.encode(numaralar[i])),
new String[] {PhoneLookup.DISPLAY_NAME, PhoneLookup._ID},
null,
null,
null);
try {
while(contactLookupCursor.moveToNext()){
String contactName = contactLookupCursor.getString(contactLookupCursor.getColumnIndexOrThrow(PhoneLookup.DISPLAY_NAME));
kisiismi = contactName;
}
}catch (Exception e) {
kisiismi = numaralar[i].toString();
}
finally {
//Toast.makeText(getApplicationContext(), ad + kisiismi + " " + count[ad], Toast.LENGTH_LONG).show();
myArr.add(kisiismi);
contactLookupCursor.close();
}
}
Gibt es eine Möglichkeit, diesen Prozess zu vereinfachen?
Ist es möglich, die Konversation zwischen den beiden Benutzer (mich und wer sendet mir msg) von Conversations = "content: // sms/conversations". Wenn das so ist, wie ? – Developer
Dies sollte nicht geschlossen sein. Der Benutzer bittet eindeutig um eine effiziente Möglichkeit, die Threads von Nachrichten entsprechend der Kontaktnummer oder dem Namen zu erhalten, genau wie die native Nachrichtenanwendung. Ich möchte auch eine Antwort dafür –
Ich stimme zu, das sollte nicht geschlossen worden sein. Hoffentlich kann jemand zumindest in Form eines Kommentars antworten ... – Pkmmte