2010-04-07 18 views
5

İçeriği inceleyen bir içerik gözlemcisine sahibim: // sms/android 1.5 içinde sms veritabanındaki değişiklikleri bildirir ve buna göre bunlara tepki verebilirim.ContentObserver içeriği: // sms/in 1.6+?

Ancak 1.6'da bu işe yaramıyor, uri içeriği değiştirildi: // sms/başka bir şeye mi?

İçeriği gördüm: // mms-sms/1,6 aygıtımdaki logcat'ta haşhaş ama bunu denedim ve işe yaramadı.

İşte benim kod

String url = "content://sms/"; 
     Uri uri = Uri.parse(url); 
     getContentResolver().registerContentObserver(uri, true, new MyContentObserver(handler)); 


} 

class MyContentObserver extends ContentObserver { 

    public MyContentObserver(Handler handler) { 

     super(handler); 

    } 

@Override public boolean deliverSelfNotifications() { 
    return false; 
    } 

ContentValues values = new ContentValues(); 


@Override public void onChange(boolean arg0) { 
    super.onChange(arg0); 

    Log.v("SMS", "Notification on SMS observer"); 
    values.put("status", 5); 
    Message msg = new Message(); 
    msg.obj = "xxxxxxxxxx"; 
    int threadId = 0; 
    handler.sendMessage(msg); 

    Uri uriSMSURI = Uri.parse("content://sms/"); 
    Cursor cur = getContentResolver().query(uriSMSURI, null, null, 
       null, null); 
    cur.moveToNext(); 
    String protocol = cur.getString(cur.getColumnIndex("protocol")); 
    Log.d("SMS", "SMS PROTOCOL = " + protocol); 

    if(protocol == null){ 
      Log.d("SMS", "SMS SEND"); 
      threadId = cur.getInt(cur.getColumnIndex("thread_id")); 
      int status = cur.getInt(cur.getColumnIndex("status")); 
      Log.d("SMS", "STATUS = " + status); 


      if(status != 5){ 
      Uri updateUri = ContentUris.withAppendedId(Uri.parse("content://sms/conversations/"), threadId); 
      int rows = getContentResolver().update(updateUri, values, null, null); 
      Log.d("SMS", "ROWS UPDATED = " + rows); 
      Log.d("SMS 2", "STATUS = " + status); 
      } 


      Log.d("SMS", "SMS SEND ID = " + threadId); 

      String textBody = cur.getString(cur.getColumnIndex("body")); 
      String textAddress = cur.getString(cur.getColumnIndex("address")); 
      Log.d("SMS", "SMS SEND ADDRESS= " + textAddress); 
      Log.d("SMS", "SMS SEND BODY= " + textBody); 


    } 
    else{ 
     Log.d("SMS", "SMS RECIEVE"); 

    } 

} 

cevap

5

Uri.parse("content://mms-sms")

süreç değişiklikleri izlemek için çalıştığından emin olun olduğunu. Cihazım dönme noktası (2.1 güncelleme1)