Android: как использовать ContentResolver в фоновом режиме - PullRequest
0 голосов
/ 12 февраля 2012

У меня есть класс, который расширяет BroadcastReceiver и получает все новые смс.

Когда я получаю новые смс, я хочу найти телефонную книгу, чтобы проверить, есть ли номера телефонов в этом сообщении в телефонной книге, и если они есть, отправить смс с результатом на другой телефон.

Я использую ContentResolver для проверки телефонных номеров, но чтобы использовать его, мне нужно использовать его внутри Activity или иметь указатель на активность, но мой слушатель 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();

но это не работает: P В DBManager я ищу телефоны, а в SmsSender отправляю новые смс.

1 Ответ

0 голосов
/ 12 февраля 2012

Вам необходим действительный объект Context (например, действие или служба, это подклассы Context). Они созданы Android, не используйте конструктор для создания этих объектов!

Чтобы получить необходимый контекст в BroadcastReceiver, объясните здесь: https://stackoverflow.com/a/6074829/1127492, это первый параметр onReceive ().

...