Skip to content

fix(messaging, android): stop app from crashing when DartCallback or Context is null #12842

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 5 commits into from
May 29, 2024

Conversation

russellwheatley
Copy link
Member

@russellwheatley russellwheatley commented May 29, 2024

Description

issue 9345

This crash occurs because the DartCallback is null in some instances when retrieving.

Other notification plugins appear to check if the DartCallback instance is null or not:

See awesome notifications

See flutter local notifications

This fixes this issue.

issue 12840

This crash occurs because Context.getSharedPreferences() is called when the context object is null.

This is fixed by checking if context is null before calling getSharedPreferences().

Upon further investigation, I noticed that this class doesn't appear to be instantiated or called at least from my local testing which is one of two methods we set context for the plugin.

The other method, is here. What is interesting about this occurrence is we don't actually check whether context.getApplicationContext() actually has a Context object. It seems that in some occurrences this must be null which makes the application crash in rare instances when calling Context.getSharedPreferences().

I've added a speculative way to set context on plugin initialisation here to ensure there is a context object set.

Also safeguard that there is a context object here.

Related Issues

closes #9345
closes #12840

Checklist

Before you create this PR confirm that it meets all requirements listed below by checking the relevant checkboxes ([x]).
This will ensure a smooth and quick review process. Updating the pubspec.yaml and changelogs is not required.

  • I read the Contributor Guide and followed the process outlined there for submitting PRs.
  • My PR includes unit or integration tests for all changed/updated/fixed behaviors (See Contributor Guide).
  • All existing and new tests are passing.
  • I updated/added relevant documentation (doc comments with ///).
  • The analyzer (melos run analyze) does not report any problems on my PR.
  • I read and followed the Flutter Style Guide.
  • I signed the CLA.
  • I am willing to follow-up on review comments in a timely manner.

Breaking Change

Does your PR require plugin users to manually update their apps to accommodate your change?

  • Yes, this is a breaking change.
  • No, this is not a breaking change.

@russellwheatley russellwheatley changed the title fix(messaging, android): stop app from crashing when flutterCallback is null fix(messaging, android): stop app from crashing when DartCallback or Context is null May 29, 2024
@russellwheatley russellwheatley merged commit 1424757 into master May 29, 2024
23 of 24 checks passed
@russellwheatley russellwheatley deleted the messaging-fix-crashes branch May 29, 2024 12:48
@firebase firebase locked and limited conversation to collaborators Jul 9, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
4 participants