繁体   English   中英

在清单中注册的 SMS_RECEIVED_ACTION 的广播接收器不起作用

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM