在Flutter文档here下
如何处理Flutter中外部应用程序的传入Intent
清单显示android:launchMode="singleTop"
,共享文本在状态变量中使用void initState()
方法在颤动getSharedText();
中传输。
无论如何,每当我与应用程序共享文本时,都会创建一个新的应用程序实例。
所以我将清单更改为清单android:launchMode="singleInstance"
(或singleTask)。
在这种情况下,void initState()
仅被调用一次,不能再用于调用getSharedText();
。我尝试使用AppLifecycleState.resumed
来调用getSharedText();
,但数据始终为空。我希望扑腾有这样的示例项目。我找不到他们。任何提示?
答案 0 :(得分:1)
这个问题的答案可能是uni_links package。
您只需为传入的App / Deep链接设置一个侦听器,然后调用所需的任何方法即可:)
我这样做是这样的:
_linkStream = getUriLinksStream().listen((uri) {
if (uri.host == 'redirect' && uri.queryParameters.containsKey('code')) { // Checking the url
// Do my stuff here
_linkStream.cancel();
}
});
_linkStream
是我班上的StreamSubscription<Uri>
属性。另外,请不要忘记在dispose()
方法中dispose()
进行订阅!
答案 1 :(得分:0)
通过此插件receive_sharing_intent,我设法达到了android:launchMode="singleInstance"
(或singleTask)的意图。
此方法适用于文本:
ReceiveSharingIntent.getTextStream().listen((String value) {
setState(() {
_sharedText = value;
});
}, onError: (err) {
print("getLinkStream error: $err");
});
当前(9月24日),该插件还支持图片和视频。
但是,我没有进一步研究该插件,所以我不能说如何直接用Java / Kotlin实现它。