ContentObserver内容://短信/在1.6+? [英] ContentObserver on content://sms/ in 1.6+?

查看:213
本文介绍了ContentObserver内容://短信/在1.6+?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个内容的观察者认为调查内容://短信/在Android 1.5的让我得到通知的变化在SMS数据库中,可以作出相应的反应给他们

然而,在1.6这不工作,具有URI被更改的内容://短信/别的东西?

我所看到的内容:// MMS,SMS /雨后春笋般冒出来,在logcat中对我的1.6设备,但我已经尝试过这一点,这是行不通的。

下面是我的code

 字符串URL =内容://短信/;
        开放的我们的uri = Uri.parse(URL);
        。getContentResolver()registerContentObserver(URI,真,新MyContentObserver(处理));


}

类MyContentObserver扩展ContentObserver {

    公共MyContentObserver(处理程序处理){

        超(处理);

    }

@覆盖公共布尔deliverSelfNotifications(){
    返回false;
    }

ContentValues​​值=新ContentValues​​();


@覆盖公共无效的onChange(布尔为arg0){
    super.onChange(为arg0);

     Log.v(SMS,短信观察者通知);
     values​​.put(状态,5);
    消息味精=新的Message();
    msg.obj =XXXXXXXXXX;
    INT threadId的= 0;
    handler.sendMessage(MSG);

    乌里uriSMSURI = Uri.parse(内容://短信/);
    光标CUR = getContentResolver()查询(uriSMSURI,NULL,NULL,
                 NULL,NULL);
    cur.moveToNext();
    字符串协议= cur.getString(cur.getColumnIndex(协议));
    Log.d(SMS,短信PROTOCOL =+协议);

    如果(协议== NULL){
           Log.d(SMS,短信发送);
           threadId的= cur.getInt(cur.getColumnIndex(thread_id单));
           INT状态= cur.getInt(cur.getColumnIndex(状态));
           Log.d(SMS,状态=+状态);


           如果(状态!= 5){
           乌里updateUri = ContentUris.withAppendedId(Uri.parse(内容://短信/通话/),threadId的);
           诠释行= getContentResolver()更新(updateUri,价值观,NULL,NULL);
           Log.d(SMS,更新行数=+行);
           Log.d(短信2,状态=+状态);
           }


           Log.d(SMS,手机短信发送ID =+ threadId的);

           字符串的TextBody = cur.getString(cur.getColumnIndex(身体));
           字符串textAddress = cur.getString(cur.getColumnIndex(地址));
           Log.d(SMS,短信发送地址=+ textAddress);
           Log.d(SMS,手机短信发送BODY =+的TextBody);


    }
    其他{
        Log.d(SMS,短信免费获赠);

    }

}
 

解决方案

Uri.parse(内容:// MMS-SMS)

请确保该进程正在运行监测变化。

我的设备是里程碑(2.1 UPDATE1)

I have a content observer that polls content://sms/ in android 1.5 so that I get notified of changes in the sms database and can react to them accordingly.

However in 1.6 this doesn't work, has the uri been changed from content://sms/ to something else?

I have seen content://mms-sms/ popping up in the logcat on my 1.6 device but I have tried that and it doesn't work.

Here is my 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");  

    }

}

解决方案

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

Please ensure the process is running for monitoring the changes.

My device is milestone (2.1 update1)

这篇关于ContentObserver内容://短信/在1.6+?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆