我正在做一个监听短信,获取短信内容的应用,我注册了一个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"};