为了账号安全,请及时绑定邮箱和手机立即绑定

服务中的广播接收器

服务中的广播接收器

12345678_0001 2019-10-25 10:11:46
我正在尝试BroadcastReceiver在内启动Service。我正在尝试做的是后台运行service,该后台会收集传入的短信并记录传入的电话。我认为最好的方法是让service跑步机与可以编录其中一个节目的广播接收器合并。我该怎么做?我已经启动并运行了我的服务。
查看完整描述

3 回答

?
炎炎设计

TA贡献1808条经验 获得超4个赞

由于您的服务已经设置,只需在您的服务中添加广播接收器:


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" />


查看完整回答
反对 回复 2019-10-25
?
慕田峪7331174

TA贡献1828条经验 获得超13个赞

Service如果尚未运行,则此实现将启动,如果已运行,Intent则将传递新的(用于检索onStartCommand)。如果你只希望它运行的时候Service是实时的,你可以以编程方式启用/禁用Receiver通过组件PackageManagersetComponentEnabledSetting()

查看完整回答
反对 回复 2019-10-25
  • 3 回答
  • 0 关注
  • 382 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信