0

我有扩展BroadcastReceiver并获取所有新短信的课程。

当我收到新短信时,我想搜索电话簿以检查此消息中的电话号码是否在电话簿中,如果是,则将带有结果的短信发送到另一部手机。

ContentResolver用来检查电话号码,但要使用它,我需要在 Activity 中使用它或有指向 Activity 的指针,但我的短信监听器在后台工作。

有没有办法在没有活动的情况下搜索电话簿或从接收新短信时获得的上下文或意图中获取有效活动?

我尝试使用类似的东西:

                    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();

但它不起作用:P 在 DBManager 中我搜索电话,在 SmsSender 中我发送新的短信。

4

1 回答 1

0

您需要一个有效的 Context 对象(例如,一个活动或服务,它们是 Context 的子类)。这些都是android创建的,不要使用构造函数来创建这些对象!

此处解释了要在 BroadcastReceiver 中获取所需的上下文:https ://stackoverflow.com/a/6074829/1127492 ,它是 onReceive() 的第一个参数。

于 2012-02-12T17:11:10.627 回答