android监听短息 我正在做一个监听短信,获取短信内容的应用,我注册了一个Broadcastreceive来监听接收短信,但是应用在有的手机上可以运行,在有的机子上不能运行,不知道怎么回事?我怀疑是有的手机把系统的短信应用重写了,广播的优先级比较高,所以我的应用接收不到了。各位大神有没有什么好的解决方法?android短信 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你所谓的不能运行是指什么?一运行就死掉还是不能监听到短信?一般来说不会重写应用,看看手机有没有被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"); }} 很可能是硬件厂商修改了android源码,例如小米手机改的就比较多,但一般很少去改短信监控相关接口的实现。那有一种可能就是某些手机安装了360类似的安全软件,他们的短信监控优先级比较高,而且有些预处理,以至于你的程序无法监控。 同意六楼的,监听短信直接用广播接收器来做,显然是不成熟的想法,众多的短信拦截功能的App早在你之前就已经使用了该功能,时时的去监控系统短信数据库的数据变化,对你来说是最准确,最及时的做法了 哥们,这个你测试过了吗?我测试的不行,好像手机必须要root才能操作数据库。 如何监控未读短信的更改状态 求助,如何获得Google Map API key? 关于JNI调用返回结构体数组的问题! Android录制视频能以流的形式输出吗? 怎么在透明图片上加颜色 android 的游戏开发,是不是就是:各种类型的游戏算法啊 ? 菜鸟提问,如何把android的DDMS放在控制台。我这老是在右上角 ApiDemos程序的入口在哪里?? fragment 父类引用指向子类引用报错 Android 新手求教监听器问题 大家都用的是哪家的广告投放? 关于程序设置android:layout_weight
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");
}
}
那有一种可能就是某些手机安装了360类似的安全软件,他们的短信监控优先级比较高,而且有些预处理,以至于你的程序无法监控。