2012-02-12 15 views
0

私は、BroadcastReceiverを拡張し、すべての新しいSMSを取得するクラスを持っています。Android:ContentResolverをバックグラウンドで使用する方法

新しい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

関連する問題