我创建了一个服务,在其中放置了一个广播接收器(它应该跟踪传入的 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
}
}
如何让我的广播接收器工作?