致命异常:MQTT 建议: 当接收器未专门注册用于系统广播时,应指定 RECEIVER_EXPORTED 或 RECEIVER_NOT_EXPORTED 之一
我在从 MQTT 接收数据时遇到致命异常 我已将所有旧代码更改为新代码,其中我传递了 RECEIVER_NOT_EXPORTED 但仍然面临同样的问题。
ContextCompat.registerReceiver(this,mMessageReceiver,
new IntentFilter(AppConstants.INTENT_FILTERS.DASHBOARD_MESSAGE),
ContextCompat.RECEIVER_NOT_EXPORTED);
相同的代码在 14 以下版本中运行良好。
有人可以帮我吗?
我尝试在注册广播接收器时传递 RECEIVER_NOT_EXPORTED 但仍然面临同样的问题
如果它是一个 Activity,请使用
this
,而不是使用 contextCompat;如果它是一个片段,请使用 requireContext()
。
然后像这样使用它。
requireContext().registerReceiver(mMessageReceiver,
new IntentFilter(AppConstants.INTENT_FILTERS.DASHBOARD_MESSAGE),RECEIVER_NOT_EXPORTED);
确保导入正确的。您需要导入上下文。
您甚至可以添加 sdk 检查。
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
requireContext().registerReceiver(mMessageReceiver,
new IntentFilter(AppConstants.INTENT_FILTERS.DASHBOARD_MESSAGE),RECEIVER_NOT_EXPORTED);
}else {
requireContext().registerReceiver(mMessageReceiver,
new IntentFilter(AppConstants.INTENT_FILTERS.DASHBOARD_MESSAGE));
}