0

BroadcastReceiver私はすべての新しいSMSを拡張して取得するクラスを持っています。

新しいSMSを入手したら、電話帳を検索して、このメッセージ内の電話番号が電話帳にあるかどうかを確認し、ある場合は、結果を含むSMSを別の電話に送信します。

ContentResolverは電話番号をチェックするために使用しますが、それを使用するには、Activity内で使用するか、アクティビティへのポインターを持っている必要がありますが、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を送信します。

4

1 に答える 1

0

有効なContextオブジェクトが必要です(たとえば、アクティビティまたはサービス、これらはContextのサブクラスです)。これらはAndroidによって作成されます。これらのオブジェクトを作成するために、コンストラクターを使用しないでください。

BroadcastReceiverで必要なコンテキストを取得するには、https ://stackoverflow.com/a/6074829/1127492で説明されています。これは、onReceive()の最初のパラメーターです。

于 2012-02-12T17:11:10.627 に答える