OnNewIntent 未调用,而是打开了新的活动实例
Posted
技术标签:
【中文标题】OnNewIntent 未调用,而是打开了新的活动实例【英文标题】:OnNewIntent in not called, Instead new instance of activity is opened 【发布时间】:2021-12-18 16:16:05 【问题描述】:以下是我的流程
我有一个 BrowserActivity,它在 WebView 中运行一个 Angular 应用程序。
-
BrowserActivity通过js方法
window.location.href = redirectUrl;
打开一个外部网页,这个链接在chrome tab里面打开。我也尝试过打开意图链接,结果相同。
在 chrome 选项卡中完成了一些工作,它为您提供了返回原始应用的链接。
按下该链接后,将启动一个新活动,而不是返回旧活动,这意味着不会调用 onNewIntent。
奇怪的是,如果我在新打开的活动中重复相同的过程,它会调用 neNewIntent 而不是打开新活动。
这是我的 BrowserActivity 清单代码
<activity android:name=".activities.BrowserActivity" android:theme="@style/AppTheme" android:screenOrientation="fullUser" android:launchMode="singleTop">
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data android:host="host.mysite.com" android:scheme="https"/>
<data android:host="host-dev.mysite.net" android:scheme="https"/>
<data android:scheme="mysite-host"/>
<data android:scheme="mysite-callback"/>
</intent-filter>
</activity>
第一次以以下意图启动 BrowserActivity。
注意:我在这里记录了这个方案。该方案为空。
Intent intent = new Intent(context, BrowserActivity.class);
intent.putExtra(URL, url);
intent.putExtra(TITLE, title);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
第一次 BrowserActivity 加载 'mysite-host://host-dev.mysite.net/link1' 并从浏览器返回时提供以下链接 'mysite-callback:/ /host-dev.mysite.net/link1/login/done'.
我的问题是为什么第一次从浏览器返回时没有触发 onNewIntent。
【问题讨论】:
【参考方案1】:这是因为 onNewIntent 没有被调用!!!
我把它放在调用这个活动的地方。
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP);
那么它的作用就像一个魅力!!。
这是因为调用了新的活动。并且FLAG_ACTIVITY_SINGLE_TOP 使onNewIntent
被调用。这个FLAG_ACTIVITY_SINGLE_TOP 不会启动新的活动。
参考: https://***.com/a/23446196
【讨论】:
嗨@BDSHAH,这可以解决原始问题。但现在有一个新问题。现在它在新实例中首次打开浏览器活动。如何阻止它? 你可以添加标志> Intent.FLAG_ACTIVITY_CLEAR_TASK以上是关于OnNewIntent 未调用,而是打开了新的活动实例的主要内容,如果未能解决你的问题,请参考以下文章