Ответ 1
Вам нужно создать новый thread_id
вручную, обычный contentResolver.insert(...)
не будет использоваться для нескольких сообщений получателей. Чтобы создать новый thread_id
, вы запрашиваете следующий uri
content://mms-sms/threadID
и к нему добавьте необходимых получателей, чтобы в итоге это выглядело как
content://mms-sms/threadID?recipient=9808&recipient=8808
Таким образом, полный пример будет выглядеть так. Скажем, что получатели 9808
и 8808
Uri threadIdUri = Uri.parse('content://mms-sms/threadID');
Uri.Builder builder = threadIdUri.buildUpon();
String[] recipients = {"9808","8808"};
for(String recipient : recipients){
builder.appendQueryParameter("recipient", recipient);
}
Uri uri = builder.build();
Теперь вы можете запросить uri
обычным способом, и это даст вам thread_id
, который вы можете использовать для указанных получателей, он создаст новый идентификатор, если он не существует или не возвращает существующий.
Long threadId = 0;
Cursor cursor = getContentResolver().query(uri, new String[]{"_id"}, null, null, null);
if (cursor != null) {
try {
if (cursor.moveToFirst()) {
threadId = cursor.getLong(0);
}
} finally {
cursor.close();
}
}
Теперь используйте threadId
для вставки ваших SMS-сообщений.
Несколько замечаний.
Не используйте этот threadId
для вставки сообщений одного получателя для 9908
или 8808
, создайте новый thread_id для каждого или просто выполните insert
без указания thread_id
.
Кроме того, будьте очень осторожны с частью builder.appendQueryParameter(...)
, убедитесь, что ключ recipient
, а не recipients
, если вы используете recipients
, он все равно будет работать, но вы всегда будете получать те же thread_id
и все ваши SMS-сообщения попадут в один поток.