在清单中注册的SMS_RECIEVED_ACTION的BroadcastReciver不工作



在清单中注册SMS广播接收器似乎不再有效。

我知道Android最近锁定了清单广播接收器,但SMS_RECEIVED_ACTION似乎在例外列表上。

我的接收器是这样的:

class SmsReceiver : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
if (intent.action != SMS_RECEIVED_ACTION) return
val messages = getMessagesFromIntent(intent)
for (s in messages) {
Log.i("SmsReceiver", s.displayMessageBody)
Toast.makeText(context, s.displayMessageBody, Toast.LENGTH_LONG).show()
}
}
}

并在舱单中登记:

<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.READ_SMS" />
<application
...
tools:targetApi="33"
android:enabled="true">
<receiver
android:name=".SmsReceiver"
android:enabled="true"
android:exported="false"
android:permission="android.permission.BROADCAST_SMS,android.permission.RECEIVE_SMS">
<intent-filter android:priority="2147483647">
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>

正如你所看到的,我已经结合SO的技巧有一段时间了,但还没有一个被证明是富有成效的。希望这是一件愚蠢的事情,感谢帮助:(

删除android:permission="android.permission.BROADCAST_SMS,android.permission.RECEIVE_SMS"

没有名为android.permission.BROADCAST_SMS,android.permission.RECEIVE_SMS的权限。android:permission不采用逗号分隔的列表。而且,你不需要这个属性。

我想你应该更改android:exported="真";

相关内容

  • 没有找到相关文章

最新更新