当前位置: 代码迷 >> Android >> android监听缺息
  详细解决方案

android监听缺息

热度:93   发布时间:2016-05-01 09:48:35.0
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"};        
  相关解决方案