2010-04-07 5 views
5

मेरे पास एक सामग्री पर्यवेक्षक है जो चुनाव सामग्री: // एसएमएस/एंड्रॉइड 1.5 में है ताकि मुझे एसएमएस डेटाबेस में परिवर्तनों की अधिसूचना मिल सके और तदनुसार उनके प्रति प्रतिक्रिया दे सके।सामग्री पर सामग्री ऑब्सर्वर: // एसएमएस/1.6+ में?

हालांकि 1.6 में यह काम नहीं करता है, क्या यूरी सामग्री से बदल गया है: // एसएमएस/कुछ और?

मैंने सामग्री को देखा है: // एमएमएस-एसएमएस/मेरे 1.6 डिवाइस पर लॉगकैट में पॉप अप करना लेकिन मैंने कोशिश की है और यह काम नहीं करता है।

यहाँ मेरी कोड

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

    } 

} 

उत्तर

5

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

कृपया सुनिश्चित करें कि प्रक्रिया में परिवर्तन की निगरानी के लिए चल रहा है है।

मेरा डिवाइस मील का पत्थर है (2.1 अपडेट 1)