Android:如何在后台使用ContentResolver
我有一个类扩展了Android:如何在后台使用ContentResolver,android,android-activity,android-contentresolver,Android,Android Activity,Android Contentresolver,我有一个类扩展了BroadcastReceiver,并获得了所有新的sms 当我收到新的短信息时,我想搜索电话簿,以检查此消息中的电话号码是否在电话簿中,如果在电话簿中,则将带有结果的短信息发送到另一部手机 我使用ContentResolver来检查电话号码,但要使用它,我需要在活动中使用它,或者使用指向活动的指针,但我的sms侦听器在后台工作 有没有办法在没有活动的情况下搜索电话簿,或者从收到新短信时获得的上下文或意图中获取有效的活动 我试着用这样的方法:
BroadcastReceiver
,并获得了所有新的sms
当我收到新的短信息时,我想搜索电话簿,以检查此消息中的电话号码是否在电话簿中,如果在电话簿中,则将带有结果的短信息发送到另一部手机
我使用ContentResolver
来检查电话号码,但要使用它,我需要在活动中使用它,或者使用指向活动的指针,但我的sms侦听器在后台工作
有没有办法在没有活动的情况下搜索电话簿,或者从收到新短信时获得的上下文或意图中获取有效的活动
我试着用这样的方法:
Activity act = new Activity();
DBManager dbm = new DBManager(act);
ArrayList<MyContact> res = dbm.phoneSearch(sms_ar[1]);
SmsSender sms = new SmsSender(act);
if(res.size() > 0){
String answer = res.get(0).getName()+CSStatic.SMS_SEPARATOR+res.get(0).getPhone();
for(int z = 1; z < res.size(); z++){
answer = answer+CSStatic.SMS_SEPARATOR+res.get(z).getName()+CSStatic.SMS_SEPARATOR+res.get(z).getPhone();
}
Log.d("sms", "Answer: "+answer);
sms.smsAnswer(answer, sms_ar[2]);
} else {
String phone = dbm.getPhoneToQuery(sms_txt);
sms.smsQueryNext(sms_txt, phone);
}
act.finish();
Activity act=新活动();
DBManager dbm=新的DBManager(act);
arraylistres=dbm.phoneSearch(sms_ar[1]);
SmsSender sms=新SmsSender(act);
如果(res.size()>0){
String answer=res.get(0.getName()+CSStatic.SMS_分隔符+res.get(0.getPhone();
对于(intz=1;z
但它不起作用:p
在DBManager中,我搜索手机,在SmsSender中,我发送新短信。您需要一个有效的上下文对象(例如活动或服务,它们是上下文的子类)。这些是由android创建的,不要使用构造函数来创建这些对象 要在BroadcastReceiver中获取所需的上下文,请在此处进行说明:,它是onReceive()的第一个参数