[英]BroadcastReciever for SMS_RECEIVED_ACTION registered in manifest not working
在 Manifest 中注册 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="true"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.