diff --git a/firebase-dynamic-links/src/main/java/com/google/firebase/dynamiclinks/FirebaseDynamicLinks.java b/firebase-dynamic-links/src/main/java/com/google/firebase/dynamiclinks/FirebaseDynamicLinks.java index dfebe0f9217..4c7243b3768 100644 --- a/firebase-dynamic-links/src/main/java/com/google/firebase/dynamiclinks/FirebaseDynamicLinks.java +++ b/firebase-dynamic-links/src/main/java/com/google/firebase/dynamiclinks/FirebaseDynamicLinks.java @@ -18,6 +18,7 @@ import android.content.Intent; import android.net.Uri; import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import com.google.android.gms.tasks.OnCompleteListener; import com.google.android.gms.tasks.OnFailureListener; import com.google.android.gms.tasks.OnSuccessListener; @@ -99,7 +100,7 @@ public static synchronized FirebaseDynamicLinks getInstance(@NonNull FirebaseApp *

If a dynamic link, the call will also send FirebaseAnalytics dynamic link event. */ @NonNull - public abstract Task getDynamicLink(@NonNull Intent intent); + public abstract Task getDynamicLink(@Nullable Intent intent); /** * Determine if the app has a pending dynamic link and provide access to the dynamic link diff --git a/firebase-dynamic-links/src/main/java/com/google/firebase/dynamiclinks/internal/FirebaseDynamicLinksImpl.java b/firebase-dynamic-links/src/main/java/com/google/firebase/dynamiclinks/internal/FirebaseDynamicLinksImpl.java index d99c756cc2a..c25f8d0a60a 100644 --- a/firebase-dynamic-links/src/main/java/com/google/firebase/dynamiclinks/internal/FirebaseDynamicLinksImpl.java +++ b/firebase-dynamic-links/src/main/java/com/google/firebase/dynamiclinks/internal/FirebaseDynamicLinksImpl.java @@ -104,15 +104,20 @@ public PendingDynamicLinkData getPendingDynamicLinkData(@NonNull Intent intent) } @Override - public Task getDynamicLink(@NonNull final Intent intent) { + public Task getDynamicLink(@Nullable final Intent intent) { + String dynamicLinkDataString = intent != null ? intent.getDataString() : null; Task result = - googleApi.doWrite(new GetDynamicLinkImpl(analytics, intent.getDataString())); - PendingDynamicLinkData pendingDynamicLinkData = getPendingDynamicLinkData(intent); - if (pendingDynamicLinkData != null) { - // DynamicLinkData included in the Intent, return it immediately and allow the Task to run in - // the background to do logging and mark the FDL as returned. - result = Tasks.forResult(pendingDynamicLinkData); + googleApi.doWrite(new GetDynamicLinkImpl(analytics, dynamicLinkDataString)); + + if (intent != null) { + PendingDynamicLinkData pendingDynamicLinkData = getPendingDynamicLinkData(intent); + if (pendingDynamicLinkData != null) { + // DynamicLinkData included in the Intent, return it immediately and allow the Task to run + // in the background to do logging and mark the FDL as returned. + result = Tasks.forResult(pendingDynamicLinkData); + } } + return result; } diff --git a/firebase-dynamic-links/src/test/java/com/google/firebase/dynamiclinks/internal/FirebaseDynamicLinksImplTest.java b/firebase-dynamic-links/src/test/java/com/google/firebase/dynamiclinks/internal/FirebaseDynamicLinksImplTest.java index dabb358e9a8..e9f613b4854 100644 --- a/firebase-dynamic-links/src/test/java/com/google/firebase/dynamiclinks/internal/FirebaseDynamicLinksImplTest.java +++ b/firebase-dynamic-links/src/test/java/com/google/firebase/dynamiclinks/internal/FirebaseDynamicLinksImplTest.java @@ -159,6 +159,13 @@ public void testGetDynamicLink_Intent() { .doWrite(ArgumentMatchers.>any()); } + @Test + public void testGetDynamicLink_NullIntent() { + api.getDynamicLink((Intent) null); + verify(mockGoogleApi) + .doWrite(ArgumentMatchers.>any()); + } + @Test public void testGetDynamicLink_IntentWithDynamicLinkData() { Bundle extensions = new Bundle();