From 0be4fe73978159273355cb32d58c20d239f25908 Mon Sep 17 00:00:00 2001 From: hangyujin <108393416+hangyujin@users.noreply.github.com> Date: Wed, 17 Apr 2024 17:24:04 -0700 Subject: [PATCH 01/12] shouldHandleDeeplinking defaults to true --- .../android/io/flutter/embedding/android/FlutterActivity.java | 4 ++-- .../io/flutter/embedding/android/FlutterFragmentActivity.java | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/shell/platform/android/io/flutter/embedding/android/FlutterActivity.java b/shell/platform/android/io/flutter/embedding/android/FlutterActivity.java index d536fed70dd06..3fb2887e4a280 100644 --- a/shell/platform/android/io/flutter/embedding/android/FlutterActivity.java +++ b/shell/platform/android/io/flutter/embedding/android/FlutterActivity.java @@ -1405,10 +1405,10 @@ public boolean shouldHandleDeeplinking() { try { Bundle metaData = getMetaData(); boolean shouldHandleDeeplinking = - metaData != null ? metaData.getBoolean(HANDLE_DEEPLINKING_META_DATA_KEY) : false; + metaData != null ? metaData.getBoolean(HANDLE_DEEPLINKING_META_DATA_KEY) : true; return shouldHandleDeeplinking; } catch (PackageManager.NameNotFoundException e) { - return false; + return true; } } diff --git a/shell/platform/android/io/flutter/embedding/android/FlutterFragmentActivity.java b/shell/platform/android/io/flutter/embedding/android/FlutterFragmentActivity.java index fda8a7c21da97..6d23d3da526ed 100644 --- a/shell/platform/android/io/flutter/embedding/android/FlutterFragmentActivity.java +++ b/shell/platform/android/io/flutter/embedding/android/FlutterFragmentActivity.java @@ -696,10 +696,10 @@ protected boolean shouldHandleDeeplinking() { try { Bundle metaData = getMetaData(); boolean shouldHandleDeeplinking = - metaData != null ? metaData.getBoolean(HANDLE_DEEPLINKING_META_DATA_KEY) : false; + metaData != null ? metaData.getBoolean(HANDLE_DEEPLINKING_META_DATA_KEY) : true; return shouldHandleDeeplinking; } catch (PackageManager.NameNotFoundException e) { - return false; + return true; } } From 4653527d2c9978611baf798ab75d72ef2f6d1f3c Mon Sep 17 00:00:00 2001 From: hangyujin <108393416+hangyujin@users.noreply.github.com> Date: Tue, 23 Apr 2024 18:19:33 -0700 Subject: [PATCH 02/12] update flag default value --- .../embedding/android/FlutterActivity.java | 17 +++++++++-------- .../android/FlutterFragmentActivity.java | 14 ++++++++------ .../ios/framework/Source/FlutterAppDelegate.mm | 4 ++-- 3 files changed, 19 insertions(+), 16 deletions(-) diff --git a/shell/platform/android/io/flutter/embedding/android/FlutterActivity.java b/shell/platform/android/io/flutter/embedding/android/FlutterActivity.java index 3fb2887e4a280..a47e0e55e3f0d 100644 --- a/shell/platform/android/io/flutter/embedding/android/FlutterActivity.java +++ b/shell/platform/android/io/flutter/embedding/android/FlutterActivity.java @@ -1399,15 +1399,16 @@ public boolean shouldAttachEngineToActivity() { *

The default implementation looks {@code } called {@link * FlutterActivityLaunchConfigs#HANDLE_DEEPLINKING_META_DATA_KEY} within the Android manifest * definition for this {@code FlutterActivity}. + *

Defaults to {@code true}. */ - @Override - public boolean shouldHandleDeeplinking() { - try { - Bundle metaData = getMetaData(); - boolean shouldHandleDeeplinking = - metaData != null ? metaData.getBoolean(HANDLE_DEEPLINKING_META_DATA_KEY) : true; - return shouldHandleDeeplinking; - } catch (PackageManager.NameNotFoundException e) { + @VisibleForTesting + protected boolean shouldHandleDeeplinking() { + Bundle metaData = getMetaData(); + // Check if metadata is not null and contains the HANDLE_DEEPLINKING_META_DATA_KEY. + if (metaData != null && metaData.containsKey(HANDLE_DEEPLINKING_META_DATA_KEY)) { + return metaData.getBoolean(HANDLE_DEEPLINKING_META_DATA_KEY); + } else { + // Return true if the deep linking flag is not found in metadata. return true; } } diff --git a/shell/platform/android/io/flutter/embedding/android/FlutterFragmentActivity.java b/shell/platform/android/io/flutter/embedding/android/FlutterFragmentActivity.java index 6d23d3da526ed..c7c61a8952775 100644 --- a/shell/platform/android/io/flutter/embedding/android/FlutterFragmentActivity.java +++ b/shell/platform/android/io/flutter/embedding/android/FlutterFragmentActivity.java @@ -690,15 +690,17 @@ protected boolean shouldAttachEngineToActivity() { *

The default implementation looks {@code } called {@link * FlutterActivityLaunchConfigs#HANDLE_DEEPLINKING_META_DATA_KEY} within the Android manifest * definition for this {@code FlutterFragmentActivity}. + * + *

Defaults to {@code true}. */ @VisibleForTesting protected boolean shouldHandleDeeplinking() { - try { - Bundle metaData = getMetaData(); - boolean shouldHandleDeeplinking = - metaData != null ? metaData.getBoolean(HANDLE_DEEPLINKING_META_DATA_KEY) : true; - return shouldHandleDeeplinking; - } catch (PackageManager.NameNotFoundException e) { + Bundle metaData = getMetaData(); + // Check if metadata is not null and contains the HANDLE_DEEPLINKING_META_DATA_KEY. + if (metaData != null && metaData.containsKey(HANDLE_DEEPLINKING_META_DATA_KEY)) { + return metaData.getBoolean(HANDLE_DEEPLINKING_META_DATA_KEY); + } else { + // Return true if the deep linking flag is not found in metadata. return true; } } diff --git a/shell/platform/darwin/ios/framework/Source/FlutterAppDelegate.mm b/shell/platform/darwin/ios/framework/Source/FlutterAppDelegate.mm index 4c2d0cecc2554..6f784e7de374f 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterAppDelegate.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterAppDelegate.mm @@ -137,8 +137,8 @@ - (void)userNotificationCenter:(UNUserNotificationCenter*)center - (BOOL)isFlutterDeepLinkingEnabled { NSNumber* isDeepLinkingEnabled = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"FlutterDeepLinkingEnabled"]; - // if not set, return NO - return isDeepLinkingEnabled ? [isDeepLinkingEnabled boolValue] : NO; + // if not set, return YES + return isDeepLinkingEnabled ? [isDeepLinkingEnabled boolValue] : YES; } // This method is called when opening an URL with custom schemes. From 4a05924851acfe2c827b6788c6ebd4014ba6fee0 Mon Sep 17 00:00:00 2001 From: hangyujin <108393416+hangyujin@users.noreply.github.com> Date: Tue, 23 Apr 2024 18:20:52 -0700 Subject: [PATCH 03/12] lint --- .../android/io/flutter/embedding/android/FlutterActivity.java | 1 + .../io/flutter/embedding/android/FlutterFragmentActivity.java | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/shell/platform/android/io/flutter/embedding/android/FlutterActivity.java b/shell/platform/android/io/flutter/embedding/android/FlutterActivity.java index a47e0e55e3f0d..60ab1c8f45df5 100644 --- a/shell/platform/android/io/flutter/embedding/android/FlutterActivity.java +++ b/shell/platform/android/io/flutter/embedding/android/FlutterActivity.java @@ -1399,6 +1399,7 @@ public boolean shouldAttachEngineToActivity() { *

The default implementation looks {@code } called {@link * FlutterActivityLaunchConfigs#HANDLE_DEEPLINKING_META_DATA_KEY} within the Android manifest * definition for this {@code FlutterActivity}. + * *

Defaults to {@code true}. */ @VisibleForTesting diff --git a/shell/platform/android/io/flutter/embedding/android/FlutterFragmentActivity.java b/shell/platform/android/io/flutter/embedding/android/FlutterFragmentActivity.java index c7c61a8952775..5a272efa5eb62 100644 --- a/shell/platform/android/io/flutter/embedding/android/FlutterFragmentActivity.java +++ b/shell/platform/android/io/flutter/embedding/android/FlutterFragmentActivity.java @@ -690,7 +690,7 @@ protected boolean shouldAttachEngineToActivity() { *

The default implementation looks {@code } called {@link * FlutterActivityLaunchConfigs#HANDLE_DEEPLINKING_META_DATA_KEY} within the Android manifest * definition for this {@code FlutterFragmentActivity}. - * + * *

Defaults to {@code true}. */ @VisibleForTesting From 96e87e304ed53d2916e86072c352ec038b44467b Mon Sep 17 00:00:00 2001 From: hangyujin <108393416+hangyujin@users.noreply.github.com> Date: Tue, 23 Apr 2024 18:25:09 -0700 Subject: [PATCH 04/12] update --- .../embedding/android/FlutterActivity.java | 22 +++++++++++-------- .../android/FlutterFragmentActivity.java | 18 +++++++++------ 2 files changed, 24 insertions(+), 16 deletions(-) diff --git a/shell/platform/android/io/flutter/embedding/android/FlutterActivity.java b/shell/platform/android/io/flutter/embedding/android/FlutterActivity.java index 60ab1c8f45df5..16a7537d35ca8 100644 --- a/shell/platform/android/io/flutter/embedding/android/FlutterActivity.java +++ b/shell/platform/android/io/flutter/embedding/android/FlutterActivity.java @@ -1402,15 +1402,19 @@ public boolean shouldAttachEngineToActivity() { * *

Defaults to {@code true}. */ - @VisibleForTesting - protected boolean shouldHandleDeeplinking() { - Bundle metaData = getMetaData(); - // Check if metadata is not null and contains the HANDLE_DEEPLINKING_META_DATA_KEY. - if (metaData != null && metaData.containsKey(HANDLE_DEEPLINKING_META_DATA_KEY)) { - return metaData.getBoolean(HANDLE_DEEPLINKING_META_DATA_KEY); - } else { - // Return true if the deep linking flag is not found in metadata. - return true; + @Override + public boolean shouldHandleDeeplinking() { + try { + Bundle metaData = getMetaData(); + // Check if metadata is not null and contains the HANDLE_DEEPLINKING_META_DATA_KEY. + if (metaData != null && metaData.containsKey(HANDLE_DEEPLINKING_META_DATA_KEY)) { + return metaData.getBoolean(HANDLE_DEEPLINKING_META_DATA_KEY); + } else { + // Return true if the deep linking flag is not found in metadata. + return true; + } + } catch (PackageManager.NameNotFoundException e) { + return false; } } diff --git a/shell/platform/android/io/flutter/embedding/android/FlutterFragmentActivity.java b/shell/platform/android/io/flutter/embedding/android/FlutterFragmentActivity.java index 5a272efa5eb62..1328da914daf0 100644 --- a/shell/platform/android/io/flutter/embedding/android/FlutterFragmentActivity.java +++ b/shell/platform/android/io/flutter/embedding/android/FlutterFragmentActivity.java @@ -695,13 +695,17 @@ protected boolean shouldAttachEngineToActivity() { */ @VisibleForTesting protected boolean shouldHandleDeeplinking() { - Bundle metaData = getMetaData(); - // Check if metadata is not null and contains the HANDLE_DEEPLINKING_META_DATA_KEY. - if (metaData != null && metaData.containsKey(HANDLE_DEEPLINKING_META_DATA_KEY)) { - return metaData.getBoolean(HANDLE_DEEPLINKING_META_DATA_KEY); - } else { - // Return true if the deep linking flag is not found in metadata. - return true; + try { + Bundle metaData = getMetaData(); + // Check if metadata is not null and contains the HANDLE_DEEPLINKING_META_DATA_KEY. + if (metaData != null && metaData.containsKey(HANDLE_DEEPLINKING_META_DATA_KEY)) { + return metaData.getBoolean(HANDLE_DEEPLINKING_META_DATA_KEY); + } else { + // Return true if the deep linking flag is not found in metadata. + return true; + } + } catch (PackageManager.NameNotFoundException e) { + return false; } } From 8ea2d1ba91bfa5c36c5e25f78ce3b62780070973 Mon Sep 17 00:00:00 2001 From: hangyujin <108393416+hangyujin@users.noreply.github.com> Date: Tue, 23 Apr 2024 18:36:39 -0700 Subject: [PATCH 05/12] add tests --- .../io/flutter/embedding/android/FlutterActivityTest.java | 4 ++-- .../embedding/android/FlutterFragmentActivityTest.java | 6 ++++-- .../darwin/ios/framework/Source/FlutterAppDelegateTest.mm | 6 ++++-- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/shell/platform/android/test/io/flutter/embedding/android/FlutterActivityTest.java b/shell/platform/android/test/io/flutter/embedding/android/FlutterActivityTest.java index f660e32ebabdf..8dfbd4a0ce40f 100644 --- a/shell/platform/android/test/io/flutter/embedding/android/FlutterActivityTest.java +++ b/shell/platform/android/test/io/flutter/embedding/android/FlutterActivityTest.java @@ -332,8 +332,8 @@ public void itReturnsValueFromMetaDataWhenCallsShouldHandleDeepLinkingCase3() Bundle bundle = new Bundle(); FlutterActivity spyFlutterActivity = spy(flutterActivity); when(spyFlutterActivity.getMetaData()).thenReturn(bundle); - // Empty bundle should return false. - assertFalse(spyFlutterActivity.shouldHandleDeeplinking()); + // Empty bundle should return true. + assertTrue(spyFlutterActivity.shouldHandleDeeplinking()); } @Test diff --git a/shell/platform/android/test/io/flutter/embedding/android/FlutterFragmentActivityTest.java b/shell/platform/android/test/io/flutter/embedding/android/FlutterFragmentActivityTest.java index 17960263e996a..3dbf140d1f5a4 100644 --- a/shell/platform/android/test/io/flutter/embedding/android/FlutterFragmentActivityTest.java +++ b/shell/platform/android/test/io/flutter/embedding/android/FlutterFragmentActivityTest.java @@ -23,6 +23,8 @@ import androidx.test.ext.junit.runners.AndroidJUnit4; import io.flutter.FlutterInjector; import io.flutter.embedding.android.FlutterActivityLaunchConfigs.BackgroundMode; +import io.flutter.embedding.android.FlutterFragmentActivityTest.FlutterFragmentActivityWithProvidedEngine; +import io.flutter.embedding.android.FlutterFragmentActivityTest.FlutterFragmentActivityWithRootLayout.CustomLayout; import io.flutter.embedding.engine.FlutterEngine; import io.flutter.embedding.engine.FlutterJNI; import io.flutter.embedding.engine.loader.FlutterLoader; @@ -180,8 +182,8 @@ public void itReturnsValueFromMetaDataWhenCallsShouldHandleDeepLinkingCase3() Bundle bundle = new Bundle(); FlutterFragmentActivity spyFlutterActivity = spy(activity); when(spyFlutterActivity.getMetaData()).thenReturn(bundle); - // Empty bundle should return false. - assertFalse(spyFlutterActivity.shouldHandleDeeplinking()); + // Empty bundle should return true. + assertTrue(spyFlutterActivity.shouldHandleDeeplinking()); } @Test diff --git a/shell/platform/darwin/ios/framework/Source/FlutterAppDelegateTest.mm b/shell/platform/darwin/ios/framework/Source/FlutterAppDelegateTest.mm index 3caddbc53254a..ba6aefe6826ac 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterAppDelegateTest.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterAppDelegateTest.mm @@ -84,8 +84,10 @@ - (void)testLaunchUrlWithDeepLinkingNotSet { [self.appDelegate application:[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://myApp/custom/route?query=test"] options:@{}]; - XCTAssertFalse(result); - OCMReject([self.mockNavigationChannel invokeMethod:OCMOCK_ANY arguments:OCMOCK_ANY]); + XCTAssertTrue(result); + OCMVerify([self.mockNavigationChannel + invokeMethod:@"pushRouteInformation" + arguments:@{@"location" : @"http://myApp/custom/route?query=test"}]); } - (void)testLaunchUrlWithDeepLinkingDisabled { From 8f1b9c5c6d6193158c5231c8587e6c44c489a128 Mon Sep 17 00:00:00 2001 From: hangyujin <108393416+hangyujin@users.noreply.github.com> Date: Wed, 24 Apr 2024 13:28:51 -0700 Subject: [PATCH 06/12] Update FlutterFragmentActivityTest.java --- .../flutter/embedding/android/FlutterFragmentActivityTest.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/shell/platform/android/test/io/flutter/embedding/android/FlutterFragmentActivityTest.java b/shell/platform/android/test/io/flutter/embedding/android/FlutterFragmentActivityTest.java index 3dbf140d1f5a4..2ecb7aeea8f52 100644 --- a/shell/platform/android/test/io/flutter/embedding/android/FlutterFragmentActivityTest.java +++ b/shell/platform/android/test/io/flutter/embedding/android/FlutterFragmentActivityTest.java @@ -23,8 +23,6 @@ import androidx.test.ext.junit.runners.AndroidJUnit4; import io.flutter.FlutterInjector; import io.flutter.embedding.android.FlutterActivityLaunchConfigs.BackgroundMode; -import io.flutter.embedding.android.FlutterFragmentActivityTest.FlutterFragmentActivityWithProvidedEngine; -import io.flutter.embedding.android.FlutterFragmentActivityTest.FlutterFragmentActivityWithRootLayout.CustomLayout; import io.flutter.embedding.engine.FlutterEngine; import io.flutter.embedding.engine.FlutterJNI; import io.flutter.embedding.engine.loader.FlutterLoader; From eb0a4ef102c3d0a017cdecbc845cee9611d1c5f0 Mon Sep 17 00:00:00 2001 From: hangyu Date: Fri, 26 Jul 2024 13:15:56 -0700 Subject: [PATCH 07/12] fix testing failure --- .../ios/framework/Source/FlutterAppDelegateTest.mm | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/shell/platform/darwin/ios/framework/Source/FlutterAppDelegateTest.mm b/shell/platform/darwin/ios/framework/Source/FlutterAppDelegateTest.mm index ba6aefe6826ac..79352d6589b36 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterAppDelegateTest.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterAppDelegateTest.mm @@ -80,14 +80,18 @@ - (void)testLaunchUrlWithDeepLinkingNotSet { OCMStub([self.mockMainBundle objectForInfoDictionaryKey:@"FlutterDeepLinkingEnabled"]) .andReturn(nil); + OCMStub([self.mockNavigationChannel + invokeMethod:@"pushRouteInformation" + arguments:@{@"location" : @"http://myApp/custom/route?query=test"}]) + .andReturn(@YES); + BOOL result = [self.appDelegate application:[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://myApp/custom/route?query=test"] options:@{}]; + XCTAssertTrue(result); - OCMVerify([self.mockNavigationChannel - invokeMethod:@"pushRouteInformation" - arguments:@{@"location" : @"http://myApp/custom/route?query=test"}]); + OCMVerifyAll(self.mockNavigationChannel); } - (void)testLaunchUrlWithDeepLinkingDisabled { From 5a1ddc6543246c3fc8d61e1d60a4e6a79c0d5eb5 Mon Sep 17 00:00:00 2001 From: hangyu Date: Mon, 29 Jul 2024 13:22:26 -0700 Subject: [PATCH 08/12] move duplicated code to shared place --- .../embedding/android/FlutterActivity.java | 9 ++------ .../android/FlutterActivityLaunchConfigs.java | 21 +++++++++++++++++++ .../android/FlutterFragmentActivity.java | 9 ++------ 3 files changed, 25 insertions(+), 14 deletions(-) diff --git a/shell/platform/android/io/flutter/embedding/android/FlutterActivity.java b/shell/platform/android/io/flutter/embedding/android/FlutterActivity.java index 16a7537d35ca8..25f708db3a316 100644 --- a/shell/platform/android/io/flutter/embedding/android/FlutterActivity.java +++ b/shell/platform/android/io/flutter/embedding/android/FlutterActivity.java @@ -21,6 +21,7 @@ import static io.flutter.embedding.android.FlutterActivityLaunchConfigs.HANDLE_DEEPLINKING_META_DATA_KEY; import static io.flutter.embedding.android.FlutterActivityLaunchConfigs.INITIAL_ROUTE_META_DATA_KEY; import static io.flutter.embedding.android.FlutterActivityLaunchConfigs.NORMAL_THEME_META_DATA_KEY; +import static io.flutter.embedding.android.FlutterActivityLaunchConfigs.deepLinkEnabled; import android.annotation.TargetApi; import android.app.Activity; @@ -1406,13 +1407,7 @@ public boolean shouldAttachEngineToActivity() { public boolean shouldHandleDeeplinking() { try { Bundle metaData = getMetaData(); - // Check if metadata is not null and contains the HANDLE_DEEPLINKING_META_DATA_KEY. - if (metaData != null && metaData.containsKey(HANDLE_DEEPLINKING_META_DATA_KEY)) { - return metaData.getBoolean(HANDLE_DEEPLINKING_META_DATA_KEY); - } else { - // Return true if the deep linking flag is not found in metadata. - return true; - } + return deepLinkEnabled(metaData); } catch (PackageManager.NameNotFoundException e) { return false; } diff --git a/shell/platform/android/io/flutter/embedding/android/FlutterActivityLaunchConfigs.java b/shell/platform/android/io/flutter/embedding/android/FlutterActivityLaunchConfigs.java index 3f775af65d38b..518468b3c8eaf 100644 --- a/shell/platform/android/io/flutter/embedding/android/FlutterActivityLaunchConfigs.java +++ b/shell/platform/android/io/flutter/embedding/android/FlutterActivityLaunchConfigs.java @@ -4,6 +4,8 @@ package io.flutter.embedding.android; +import javax.naming.Context; + /** Collection of Flutter launch configuration options. */ // This class is public so that Flutter app developers can reference // BackgroundMode @@ -41,5 +43,24 @@ public enum BackgroundMode { transparent } + /** + * Whether to handle the deeplinking. + * + *

The default implementation looks {@code } called {@link + * FlutterActivityLaunchConfigs#HANDLE_DEEPLINKING_META_DATA_KEY} within the Android manifest + * definition for this {@code FlutterActivity}. + * + *

Defaults to {@code true}. + */ + public static boolean deepLinkEnabled(Bundle metaData) { + // Check if metadata is not null and contains the HANDLE_DEEPLINKING_META_DATA_KEY. + if (metaData != null && metaData.containsKey(HANDLE_DEEPLINKING_META_DATA_KEY)) { + return metaData.getBoolean(HANDLE_DEEPLINKING_META_DATA_KEY); + } else { + // Return true if the deep linking flag is not found in metadata. + return true; + } + } + private FlutterActivityLaunchConfigs() {} } diff --git a/shell/platform/android/io/flutter/embedding/android/FlutterFragmentActivity.java b/shell/platform/android/io/flutter/embedding/android/FlutterFragmentActivity.java index 1328da914daf0..8596135514e2b 100644 --- a/shell/platform/android/io/flutter/embedding/android/FlutterFragmentActivity.java +++ b/shell/platform/android/io/flutter/embedding/android/FlutterFragmentActivity.java @@ -19,6 +19,7 @@ import static io.flutter.embedding.android.FlutterActivityLaunchConfigs.HANDLE_DEEPLINKING_META_DATA_KEY; import static io.flutter.embedding.android.FlutterActivityLaunchConfigs.INITIAL_ROUTE_META_DATA_KEY; import static io.flutter.embedding.android.FlutterActivityLaunchConfigs.NORMAL_THEME_META_DATA_KEY; +import static io.flutter.embedding.android.FlutterActivityLaunchConfigs.deepLinkEnabled; import android.content.Context; import android.content.Intent; @@ -697,13 +698,7 @@ protected boolean shouldAttachEngineToActivity() { protected boolean shouldHandleDeeplinking() { try { Bundle metaData = getMetaData(); - // Check if metadata is not null and contains the HANDLE_DEEPLINKING_META_DATA_KEY. - if (metaData != null && metaData.containsKey(HANDLE_DEEPLINKING_META_DATA_KEY)) { - return metaData.getBoolean(HANDLE_DEEPLINKING_META_DATA_KEY); - } else { - // Return true if the deep linking flag is not found in metadata. - return true; - } + return deepLinkEnabled(metaData); } catch (PackageManager.NameNotFoundException e) { return false; } From 318ab2545cea704df744f45d6ee7b43209a8b325 Mon Sep 17 00:00:00 2001 From: hangyu Date: Mon, 29 Jul 2024 13:23:51 -0700 Subject: [PATCH 09/12] lint --- .../android/io/flutter/embedding/android/FlutterActivity.java | 1 - .../embedding/android/FlutterActivityLaunchConfigs.java | 3 +-- .../io/flutter/embedding/android/FlutterFragmentActivity.java | 1 - 3 files changed, 1 insertion(+), 4 deletions(-) diff --git a/shell/platform/android/io/flutter/embedding/android/FlutterActivity.java b/shell/platform/android/io/flutter/embedding/android/FlutterActivity.java index 25f708db3a316..a92aa7d9dc526 100644 --- a/shell/platform/android/io/flutter/embedding/android/FlutterActivity.java +++ b/shell/platform/android/io/flutter/embedding/android/FlutterActivity.java @@ -18,7 +18,6 @@ import static io.flutter.embedding.android.FlutterActivityLaunchConfigs.EXTRA_DESTROY_ENGINE_WITH_ACTIVITY; import static io.flutter.embedding.android.FlutterActivityLaunchConfigs.EXTRA_ENABLE_STATE_RESTORATION; import static io.flutter.embedding.android.FlutterActivityLaunchConfigs.EXTRA_INITIAL_ROUTE; -import static io.flutter.embedding.android.FlutterActivityLaunchConfigs.HANDLE_DEEPLINKING_META_DATA_KEY; import static io.flutter.embedding.android.FlutterActivityLaunchConfigs.INITIAL_ROUTE_META_DATA_KEY; import static io.flutter.embedding.android.FlutterActivityLaunchConfigs.NORMAL_THEME_META_DATA_KEY; import static io.flutter.embedding.android.FlutterActivityLaunchConfigs.deepLinkEnabled; diff --git a/shell/platform/android/io/flutter/embedding/android/FlutterActivityLaunchConfigs.java b/shell/platform/android/io/flutter/embedding/android/FlutterActivityLaunchConfigs.java index 518468b3c8eaf..6006621654111 100644 --- a/shell/platform/android/io/flutter/embedding/android/FlutterActivityLaunchConfigs.java +++ b/shell/platform/android/io/flutter/embedding/android/FlutterActivityLaunchConfigs.java @@ -4,7 +4,6 @@ package io.flutter.embedding.android; -import javax.naming.Context; /** Collection of Flutter launch configuration options. */ // This class is public so that Flutter app developers can reference @@ -52,7 +51,7 @@ public enum BackgroundMode { * *

Defaults to {@code true}. */ - public static boolean deepLinkEnabled(Bundle metaData) { + public static boolean deepLinkEnabled(Bundle metaData) { // Check if metadata is not null and contains the HANDLE_DEEPLINKING_META_DATA_KEY. if (metaData != null && metaData.containsKey(HANDLE_DEEPLINKING_META_DATA_KEY)) { return metaData.getBoolean(HANDLE_DEEPLINKING_META_DATA_KEY); diff --git a/shell/platform/android/io/flutter/embedding/android/FlutterFragmentActivity.java b/shell/platform/android/io/flutter/embedding/android/FlutterFragmentActivity.java index 8596135514e2b..a6f4962c1b4aa 100644 --- a/shell/platform/android/io/flutter/embedding/android/FlutterFragmentActivity.java +++ b/shell/platform/android/io/flutter/embedding/android/FlutterFragmentActivity.java @@ -16,7 +16,6 @@ import static io.flutter.embedding.android.FlutterActivityLaunchConfigs.EXTRA_DART_ENTRYPOINT_ARGS; import static io.flutter.embedding.android.FlutterActivityLaunchConfigs.EXTRA_DESTROY_ENGINE_WITH_ACTIVITY; import static io.flutter.embedding.android.FlutterActivityLaunchConfigs.EXTRA_INITIAL_ROUTE; -import static io.flutter.embedding.android.FlutterActivityLaunchConfigs.HANDLE_DEEPLINKING_META_DATA_KEY; import static io.flutter.embedding.android.FlutterActivityLaunchConfigs.INITIAL_ROUTE_META_DATA_KEY; import static io.flutter.embedding.android.FlutterActivityLaunchConfigs.NORMAL_THEME_META_DATA_KEY; import static io.flutter.embedding.android.FlutterActivityLaunchConfigs.deepLinkEnabled; From 740ffa986da95d66f8f9dd901f9c1df4e77684ec Mon Sep 17 00:00:00 2001 From: hangyu Date: Mon, 29 Jul 2024 13:25:09 -0700 Subject: [PATCH 10/12] lint --- .../flutter/embedding/android/FlutterActivityLaunchConfigs.java | 1 - 1 file changed, 1 deletion(-) diff --git a/shell/platform/android/io/flutter/embedding/android/FlutterActivityLaunchConfigs.java b/shell/platform/android/io/flutter/embedding/android/FlutterActivityLaunchConfigs.java index 6006621654111..d5347d7c9babc 100644 --- a/shell/platform/android/io/flutter/embedding/android/FlutterActivityLaunchConfigs.java +++ b/shell/platform/android/io/flutter/embedding/android/FlutterActivityLaunchConfigs.java @@ -4,7 +4,6 @@ package io.flutter.embedding.android; - /** Collection of Flutter launch configuration options. */ // This class is public so that Flutter app developers can reference // BackgroundMode From 7c09085ff788fc01a8d93a00c8615e30711936d0 Mon Sep 17 00:00:00 2001 From: hangyu Date: Mon, 29 Jul 2024 13:26:58 -0700 Subject: [PATCH 11/12] update comments --- .../android/io/flutter/embedding/android/FlutterActivity.java | 2 -- .../io/flutter/embedding/android/FlutterFragmentActivity.java | 2 -- 2 files changed, 4 deletions(-) diff --git a/shell/platform/android/io/flutter/embedding/android/FlutterActivity.java b/shell/platform/android/io/flutter/embedding/android/FlutterActivity.java index a92aa7d9dc526..f5794335b74f4 100644 --- a/shell/platform/android/io/flutter/embedding/android/FlutterActivity.java +++ b/shell/platform/android/io/flutter/embedding/android/FlutterActivity.java @@ -1399,8 +1399,6 @@ public boolean shouldAttachEngineToActivity() { *

The default implementation looks {@code } called {@link * FlutterActivityLaunchConfigs#HANDLE_DEEPLINKING_META_DATA_KEY} within the Android manifest * definition for this {@code FlutterActivity}. - * - *

Defaults to {@code true}. */ @Override public boolean shouldHandleDeeplinking() { diff --git a/shell/platform/android/io/flutter/embedding/android/FlutterFragmentActivity.java b/shell/platform/android/io/flutter/embedding/android/FlutterFragmentActivity.java index a6f4962c1b4aa..d0562be102b99 100644 --- a/shell/platform/android/io/flutter/embedding/android/FlutterFragmentActivity.java +++ b/shell/platform/android/io/flutter/embedding/android/FlutterFragmentActivity.java @@ -690,8 +690,6 @@ protected boolean shouldAttachEngineToActivity() { *

The default implementation looks {@code } called {@link * FlutterActivityLaunchConfigs#HANDLE_DEEPLINKING_META_DATA_KEY} within the Android manifest * definition for this {@code FlutterFragmentActivity}. - * - *

Defaults to {@code true}. */ @VisibleForTesting protected boolean shouldHandleDeeplinking() { From c22082d54eb72f98bdecc715af2302c510ed77e5 Mon Sep 17 00:00:00 2001 From: hangyu Date: Mon, 29 Jul 2024 13:43:19 -0700 Subject: [PATCH 12/12] fix import --- .../flutter/embedding/android/FlutterActivityLaunchConfigs.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/shell/platform/android/io/flutter/embedding/android/FlutterActivityLaunchConfigs.java b/shell/platform/android/io/flutter/embedding/android/FlutterActivityLaunchConfigs.java index d5347d7c9babc..4f3c5cbf0c555 100644 --- a/shell/platform/android/io/flutter/embedding/android/FlutterActivityLaunchConfigs.java +++ b/shell/platform/android/io/flutter/embedding/android/FlutterActivityLaunchConfigs.java @@ -4,6 +4,8 @@ package io.flutter.embedding.android; +import android.os.Bundle; + /** Collection of Flutter launch configuration options. */ // This class is public so that Flutter app developers can reference // BackgroundMode