1. ホーム
  2. android

[解決済み] サービス内放送受信機

2023-03-17 14:58:39

質問

を起動しようとしています。 BroadcastReceiver の中で Service . 私が行おうとしているのは、バックグラウンドで動作している service をバックグラウンドで動作させ、受信したテキストメッセージを収集し、電話の着信をログに記録することです。私は、これを行う最良の方法として service ブロードキャスト レシーバーを組み込んで、どちらかをカタログ化することです。

これを行うにはどうすればよいのでしょうか。私はすでに自分のサービスを立ち上げています。

どのように解決するのですか?

のように、既に設定されているサービスに、放送受信機を追加するだけです。

private final BroadcastReceiver receiver = new BroadcastReceiver() {
   @Override
   public void onReceive(Context context, Intent intent) {
      String action = intent.getAction();
      if(action.equals("android.provider.Telephony.SMS_RECEIVED")){
        //action for sms received
      }
      else if(action.equals(android.telephony.TelephonyManager.ACTION_PHONE_STATE_CHANGED)){
           //action for phone state changed
      }     
   }
};

をサービスの onCreate をこうしてください。

IntentFilter filter = new IntentFilter();
filter.addAction("android.provider.Telephony.SMS_RECEIVED");
filter.addAction(android.telephony.TelephonyManager.ACTION_PHONE_STATE_CHANGED);
filter.addAction("your_action_strings"); //further more
filter.addAction("your_action_strings"); //further more

registerReceiver(receiver, filter);

で、あなたのサービスの onDestroy :

unregisterReceiver(receiver);

で指定したフィルタのブロードキャストを受信できるようになります。 onCreate . 必要であれば、パーミッションを追加してください。

<uses-permission android:name="android.permission.RECEIVE_SMS" />