Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android:如何在后台使用ContentResolver_Android_Android Activity_Android Contentresolver - Fatal编程技术网

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()的第一个参数