Je crée une application qui détectera quand un message mms est envoyé ou reçu et capturera le contenu. Je le fais en utilisant un contentResolver pour "content: // mms-sms/conversations". Quand cela est déclenché, je parcourt les conversations pour trouver le dernier (juste envoyé). Parce que "content: // mms-sms/conversations" ne fonctionnait pas lorsque je posais mon curseur sur tous les appareils, j'utilise "content: // mms-sms/conversations? Simple = true". Je itère, trouve la première conversation dans la liste (la liste est ordonnée par date desc), puis passe le _id pour obtenir le contenu réel, en utilisant contentResolver.query (uri, Uri.Parse ("content: // mms/part" , selectionPart, null, null); Cependant, lorsque j'essaie d'itérer en utilisant ce curseur, aucun enregistrement n'est trouvé pour l'identifiant de la conversation, j'essaye simplement de détecter quand un mms est envoyé ou reçu et d'obtenir l'information dessus. avons vu de nombreux sujets sur cela, mais rien n'a semblé résoudre le problème. des idées? MerciProblèmes avec mms capturant dans android en utilisant contentResolver
public void getMMS(Context context)
{
SentinelService.grabbingMMS = false;
boolean sent, startup;
final String[] projection = new String[] { "*" };
Uri uri = Uri.parse("content://mms-sms/conversations?simple=true");
Cursor cursor = contentResolver.query(uri, null, null, null, "_date DESC");
if (cursor.moveToFirst()) {
do
{
String id = cursor.getString(cursor.getColumnIndex("_id"));
String d = cursor.getString(cursor.getColumnIndex("date"));
MMSLog mmsLog = buildMMSLog(id, sent);
} while (cursor.moveToNext());
}
private MMSLog buildMMSLog(String mmsID, boolean sent)
{
String body = "", partID = "", imageString = null, type = "", tempType = "", selectionPart = "mid=" + mmsID;
Bitmap bitmap = null;
Uri uri = Uri.parse(MMS_PART);
Cursor cursor = contentResolver.query(uri, null, selectionPart, null,
null);
if (!cursor.isAfterLast()) {
String[] s = cursor.getColumnNames();
partID = cursor.getString(cursor.getColumnIndex("_id"));
tempType = cursor.getString(cursor.getColumnIndex("ct"));
if ("text/plain".equals(tempType)) {
String data = cursor.getString(cursor.getColumnIndex("_data"));
if (data != null) {
body = getMMSText(partID);
} else {
body = cursor.getString(cursor.getColumnIndex("text"));
}
} else if ("image/jpg".equals(tempType)
|| "image/gif".equals(tempType)
|| "image/jpeg".equals(tempType)
|| "image/bmp".equals(tempType)
|| "image/png".equals(tempType)) {
bitmap = getMMSImage(partID);
type = tempType;
}
}
try {
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(CompressFormat.JPEG, 50, stream);
bitmap.recycle();
byte[] byteArray = stream.toByteArray();
stream = new ByteArrayOutputStream();
imageString = new String(Base64.encodeBase64(byteArray));
}
catch (Exception ex) {
}
return new MMSLog(getAddressNumber(mmsID, sent), body, imageString,
type, sent);
}