我已经在我发布的应用程序中实现了接收广播意图,实际上将在不久的将来完成发送。但是,已经收到了意图,并且由于缺少必需的Bundle Extras,它可能会崩溃。看到此崩溃后,我将使用LocalBroadcastManager
,因此此问题仅出于理解的目的。
BroadcastReceiver
未在清单中注册,但在Application
类中:
class App : Application() {
override fun onCreate() {
super.onCreate()
registerReceiver(NotificationBroadcastReceiver(), IntentFilter("com.me.my_app.REUPLOAD_REQUESTED.open_notification"))
}
}
现在,我在Crashlytics中收到了一个用户的崩溃信息,每小时发生25次:
Fatal Exception: java.lang.RuntimeException
Error receiving broadcast Intent { act=com.me.my_app.REUPLOAD_REQUESTED.open_notification flg=0x10 pkg=com.me.my_app (has extras) } in d.a.a.a.v.b.a@41e45b2
然后,什么或谁发送这些意图?可以由用户自己完成吗?
看到此崩溃后,我将使用LocalBroadcastManager
LocalBroadcastManager
已弃用。某些人认为这种用于过程内部通信的“事件总线”模式是一种不良的编程实践。
然后,什么或谁发送这些意图?可以由用户自己完成吗?
当然。攻击者将发起攻击。可能是通过adb shell
或攻击者编写的某些自定义应用程序,也可能是通过某些自动安全扫描应用程序。
请勿在应用程序进程中使用IPC(registerReceiver()
上的Context
)进行通信。