2010-01-01 21 views
8

Uygulamamda, gelen ve giden tüm iletilerin geçmişini almak için SMS ve MMS günlüğünü sorgulamam gerekir. Bu kod SMS için harika çalıştı:Android'de MMS Günlüğü nasıl sorgulanır

Cursor c = cr.query(Uri.parse("content://sms"), null, null, null, null); 

Ama çalıştığımda tamamen farklı sonuçlar elde aşağıdadır:

Cursor c = cr.query(Uri.parse("content://mms"), null, null, null, null); 

SMS sorgu mesajı adresi (telefon numarası) içeren veri döndürür iletişim isim, mesaj konusu, mesaj gövdesi, vb ... MMS için aynı sorgu, herhangi bir anlam ifade edemediğim null veya sayısal değer alanlarını döndürür. Telefon numarası veya telefon numarasıyla ilişkili kişi kimliğine sahip telefondaki tüm MMS mesajlarının bir listesine ve mesajın gelen veya giden bir mesaj olmasına gerçekten ihtiyacım var. SMS sorgusu sonuçlarında, address alanından telefon numarası ve type alanından gelen/giden türünü alabilirim, ancak bunların hiçbiri MMS için sorguladığımda mevcut değil.

Bu tür MMS verileri için sorgulamam gereken farklı bir içerik Uri var mı? Herhangi bir yardım büyük takdir edilecektir.

Düzenleme: Sadece açıklığa kavuşturmak için, bunun desteklenmeyen bir içerik sağlayıcısı olduğunun tamamen farkındayım. Ancak, bunu desteklenen bir şekilde desteklemediğinden, bunu her telefon başına/OS sürüm temelinde test etme ve desteklemeye tamamen hazırım. Sadece tartışmayı yolda tutmak için bu sorunun bir HTC Dream (G1) veya HTC Magic (MyTouch) üzerindeki Android 1.6'ya özgü olduğunu söyleyelim. Bu görevi belirli telefon ve işletim sistemi sürümünde nasıl başardınız? Ya da bu mümkün değilse, ama bir Motorola Droid üzerinde Android 2.0 mümkün, o zaman ben de bu bilgileri çok yararlı bulabilirsiniz. Ancak, ne olursa olsun, bu görevin desteklenmiş ya da desteklenmeyen bir şekilde nasıl gerçekleştirileceğine ilişkin tartışmalara sadık kaldık ve bunların API tarafından desteklenmeyen şeylerden nasıl uzak durmamız gerektiğine dair bir tartışmaya dönüşmesine izin vermeyelim. Android tartışma gruplarını bulmak ve bilmediğim bir şey olduğunu düşünüyorum. Desteklenmeyen bir yöntem kullanıyorum, sorun değil, bana bu görevi yerine getirmenin desteklenen yöntemini göster. Desteklenen bir yöntem yoksa, neden API desteği android.permission.READ_SMS üzerinden SMS okuma izni istememe izin veriyor?

+2

Bu iki seçenek de desteklenmektedir ve başvurunuzun çeşitli cihazlarda veya gelecekteki Android sürümleri ile çıkabileceğinden unutmayınız. SMS içerik sağlayıcısı Android SDK'nın bir parçası değildir, bu nedenle cihaz üreticileri onu kaldırmaya, gözden geçirmeye veya başka bir şekilde dağıtmaya hazırdır ve çekirdek Android ekibi aynı şeyi yapmaya hazırdır. – CommonsWare

+0

Bunu kesinlikle anlıyorum. SMS günlüğünü sorgulama konusunda resmi olarak desteklenen bir yönteminiz varsa, buna geçiş yapmaktan memnuniyet duyarız. Bu arada, sadece bana uygun olanlarla çalışıyorum. –

+0

Ayrıca bkz .: http://stackoverflow.com/questions/2591530/contentobserver-on-content-sms-in-1-6 –

cevap

5

Bunlar, geçmişte kullandığım içeriklerdir. Geri aldığınız değerlerle uğraşmanız gerekecek ve bir MMS'in parçalarını almanın uzun bir yoludur, ancak umarım yardımcı olacaktır.

// root URI for MMS messages 
static final String MMS_CONTENT_URI = "content://mms"; 

// root URI for MMS and SMS threads 
public static final String MMS_SMS_CONTENT_URI = "content://mms-sms"; 

// URI of MMS inbox 
public static final String RECEIVED_MMS_CONTENT_URI = MMS_CONTENT_URI + "/inbox"; 

// URI where sent MMSes are stored 
public static final String SENT_MMS_CONTENT_URI = MMS_CONTENT_URI + "/sent"; 

// URI where sent MMSes are stored 
public static final String MMS_PART_URI = MMS_CONTENT_URI + "/part"; 

// URI for incoming SMSes (also triggers on MMSes) 
public static final String SMS_INBOX_URI = "content://sms/inbox"; 
+0

Bekleyin, SENT_MMS_CONTENT_URI ile "MMS_PART_URI" arasındaki fark nedir? –