Flutter App 在另一个应用程序中打开(重复应用程序)

Flutter App opens in another application(duplicate application)

我在 flutter 应用程序中使用 app linksuni_links 库。

有个问题 每当我在另一个应用程序(如 Google 日历)中单击我的应用程序 link 时,OS 会再次打开我的应用程序。

不知怎的,我有一个副本。 这是我的屏幕截图,说明究竟发生了什么:

我只想打开我最后一个存在于后台的应用程序。

我应该怎么做才能解决这个问题?

嗯根据this answer,

我应该将 manifest.xml 中的 MainActivityandroid:launchMode="singleTop" 更改为 android:launchMode="singleTask"

如果您使用 uni_links,对于 android:launchMode="singleTask",您必须使用 _handleIncomingLinks 来接收新的 intent

StreamSubscription? _sub;
void _handleIncomingLinks() {
if (!kIsWeb) {
  // It will handle app links while the app is already started - be it in
  // the foreground or in the background.
  _sub = uriLinkStream.listen((Uri? uri) {
    if (!mounted) return;
    print('got uri: $uri');
    
  }, onError: (Object err) {
    if (!mounted) return;
    print('got err: $err');
  });
 }
}

如果使用 android:launchMode="singleTop",您必须使用 _handleInitialUri 来接收新的 intent

bool _initialUriIsHandled = false;


Future<void> _handleInitialUri() async {

if (!_initialUriIsHandled) {
  _initialUriIsHandled = true;
  try {
    if (!mounted) return;
    final uri = await getInitialUri();

    if (uri != null) {
      //todo
    }
  } on PlatformException {
    // Platform messages may fail but we ignore the exception
    print('falied to get initial uri');
  } on FormatException catch (err) {
    if (!mounted) return;
    print('malformed initial uri');
  }
 }
}

有关方法的更多详细信息,请查看 this sample