Catch exceptions thrown by Context.registerReceiver to prevent rare crashes #1240
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Goal
Catches exceptions thrown by Context.registerReceiver to prevent rare crashes.
Specifically this catches
SecurityException
, which might be thrown by the OS if it cannot verify that the package registering the receiver has permission to do so,DeadSystemException
, which is thrown when the OS is about to restart, andIllegalArgumentException
, which is thrown when the process UID does not match the caller ID.Receivers are used to check network connectivity, collect device metadata, and listen to orientation changes, so the effect of catching these exceptions is that Bugsnag's behaviour may degrade in the rare case where
registerReceiver()
fails. However, this is seen as preferable to Bugsnag causing process termination.Testing
Added unit tests to verify new methods catch exceptions appropriately.