2010-04-07 6 views
5

J'ai un observateur de contenu qui interroge le contenu: // sms/in android 1.5 afin que je sois averti des changements dans la base de données SMS et que je puisse réagir en conséquence.ContentObserver sur le contenu: // sms/in 1.6+?

Cependant, dans la version 1.6 cela ne fonctionne pas, l'uri a-t-il été changé de contenu: // sms/en quelque chose d'autre?

J'ai vu contenu: // mms-sms/apparaître dans le logcat sur mon périphérique 1.6 mais j'ai essayé cela et cela ne fonctionne pas.

Voici mon code

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"); 

    } 

} 

Répondre

5

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

S'il vous plaît assurer que le processus est en cours d'exécution pour le suivi des changements.

Mon appareil est un jalon (2.1 mise à jour1)