服务内的广播接收器没有被触发

时间:2021-07-30 10:29:25

标签: android broadcastreceiver sms android-service

我创建了一个服务,在其中放置了一个广播接收器(它应该跟踪传入的 SMS)。但是我的广播接收器永远不会被触发。我使用了调试器,执行点永远不会进入广播接收器内部。

我的清单中有这些权限:

<uses-permission
    android:name="android.permission.WRITE_SMS" />
<uses-permission
    android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

我已将我的服务注册为:

<service android:enabled="true" android:name=".SMSReceiverService" />

我的服务代码是:

 class SMSReceiverService : Service() {
        private var smsReceiver: BroadcastReceiver? = null
        private var mIntentFilter: IntentFilter? = null
    
        override fun onBind(arg0: Intent?): IBinder? {
            return null
        }
    
        override fun onCreate() {
        }
    
        override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
            registerSMSReceiver()
            return super.onStartCommand(intent, flags, startId)
        }
    
        override fun onDestroy() {
            unregisterReceiver(smsReceiver)
            smsReceiver = null
        }
    
        private fun registerSMSReceiver() {
            //SMS event receiver
            mIntentFilter = IntentFilter()
            mIntentFilter!!.addAction("android.provider.Telephony.SMS_RECEIVED")
    
            smsReceiver = object : BroadcastReceiver() {
                override fun onReceive(context: Context, intent: Intent) {
                onReceiveCodeBroadcast(context, intent)
                }
            }
            registerReceiver(smsReceiver, mIntentFilter)
        }
    
        private fun onReceiveCodeBroadcast(context: Context, intent: Intent) {
        //CODE TO READ INCOMING SMS
       }
    }

如何让我的广播接收器工作?

0 个答案:

没有答案
相关问题