首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

android监听缺息

2013-09-06 
android监听短息我正在做一个监听短信,获取短信内容的应用,我注册了一个Broadcastreceive来监听接收短信,

android监听短息
我正在做一个监听短信,获取短信内容的应用,我注册了一个Broadcastreceive来监听接收短信,但是应用在有的手机上可以运行,在有的机子上不能运行,不知道怎么回事?我怀疑是有的手机把系统的短信应用重写了,广播的优先级比较高,所以我的应用接收不到了。各位大神有没有什么好的解决方法? android 短信
[解决办法]
你所谓的不能运行是指什么?一运行就死掉还是不能监听到短信?一般来说不会重写应用,看看手机有没有被root过,如果root过,会有些权限的影响。
[解决办法]
有的手机厂商改过源码,所以你获取不到
[解决办法]
Android手机上监听短信有两种方式 

1、 接受系统的短信广播,操作短信内容。 <action android:name="android.provider.Telephony.SMS_RECEIVED" /

2、 应用观察者模式,监听短信数据库,操作短信内容。


[解决办法]
监听短信数据库的操作   下面是我写的监听读短信
public class MySmsObserver extends ContentObserver {

Context context;
Cursor cur;

public MySmsObserver(Handler handler) {
super(handler);
// TODO Auto-generated constructor stub 
}

public MySmsObserver(Context ctx, Handler handler) {
// TODO Auto-generated constructor stub
super(handler);
context = ctx;
}

@Override
public void onChange(boolean selfChange) {
// TODO Auto-generated method stub
super.onChange(selfChange);
queryNotReadSms();
int count = cur.getCount(); 

        if(count == 0)
        {
        ///
        }
        cur.close();
}

private void queryNotReadSms()
{
Uri myUri = Uri.parse("content://sms/inbox");
ContentResolver resolver = context.getContentResolver();
        String[] projection =new String[]{"_id","address","thread_id","read"};

        String selection = "read=? and address=?";
        String[] args = new String[]{"0","10086"};        


        cur = resolver.query(myUri, projection, selection , args, "date desc");
}
}

热点排行