2012-02-12 4 views
0

나는 BroadcastReceiver을 확장하고 새로운 SMS를 모두받는 클래스가 있습니다.Android : 백그라운드에서 ContentResolver를 사용하는 방법

내가 새 SMS를 받았을 때이 메시지의 전화 번호가 전화 번호부에 있는지 확인하기 위해 전화 번호부를 검색하고 그럴 경우 결과가 포함 된 SMS를 다른 전화로 보냅니다.

나는 전화 번호를 확인하기 위해 ContentResolver을 사용하지만, 그것을 활동 내에서 사용하거나 활동에 대한 포인터가 있어야하지만, 내 sms 수신기는 백그라운드에서 작동해야합니다.

활동이없는 전화 번호부를 검색하거나 새로운 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에 나는 새 SMS를 보낼 수 있습니다.

답변

0

유효한 Context 객체 (예 : 활동 또는 서비스, Context의 서브 클래스)가 필요합니다. 이들은 안드로이드에 의해 생성되며, 생성자를 사용하여 이러한 객체를 생성하지 마십시오!

BroadcastReceiver에서 필요한 컨텍스트를 얻으려면 여기에서 설명하십시오. https://stackoverflow.com/a/6074829/1127492, onReceive()의 첫 번째 매개 변수입니다.

+0

Thx, 나에게 많은 도움이되었습니다. :) – JavaEverywhere

관련 문제