防止应用在导航栏上按下 Home 时返回 BootActivity
Posted
技术标签:
【中文标题】防止应用在导航栏上按下 Home 时返回 BootActivity【英文标题】:Prevent app from returning to BootActivity when Home is pressed on the navigation bar 【发布时间】:2020-12-09 19:13:44 【问题描述】:我正在构建一个启动 3rd 方应用程序的 android 应用程序 - 这两个应用程序都以全屏模式运行。
当第 3 方应用程序启动时,如果我从底部向上滑动,我会看到 Android 导航栏(很好) - 但是,如果我随后按下此导航栏上的 Android 主页按钮,第 3 方应用程序将退出(好),但我的应用程序返回到主启动活动,而不是我从中启动应用程序的活动。
我的应用程序清单包含..
<activity android:name=".boot.BootActivity"
android:configChanges="keyboardHidden|locale|layoutDirection"
android:excludeFromRecents="true"
android:label="@string/app_name"
android:launchMode="singleTask"
android:screenOrientation="landscape"
android:windowSoftInputMode="stateAlwaysHidden">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.HOME" />
</intent-filter>
</activity>
<activity android:name=".main.MainActivity"
android:configChanges="keyboardHidden|locale|layoutDirection"
android:label="@string/title_activity_main"
android:launchMode="singleTask"
android:screenOrientation="landscape"
android:windowSoftInputMode="stateAlwaysHidden" />
在等待用户选择开始加载 MainActivity 的按钮之前,BootActivity 会执行一系列预加载和模型生成,该按钮会显示第 3 方应用程序的菜单和概要。
当第 3 方启动时,我们在 Android 导航栏上向上滑动并按 Home,logcat 会同时获取“android.intent.action.MAIN”和“android.intent.category.HOME”。
如上所述,这会导致应用返回启动活动 - 但我希望第 3 方应用退出并返回 MainActivity 中的应用概要。
是否可以通过编程方式添加、删除或暂时禁用意图过滤器?
【问题讨论】:
& restoreInstance() & onResume() & onPause() 否则它将根据意图文件管理器引导第一个活动 【参考方案1】:通常使用这些特殊的启动模式 (singleTask
) 是个坏主意。如果您的BootActivity
正在启动HomeActivity
,那么这将不会在新任务中运行,即使启动模式会暗示这一点,因为这些活动都具有相同的taskAffinity
。如果你真的想让它们在不同的任务中运行,那么你需要设置一个或另一个(或两者)的taskAffinity
,使它们不一样。阅读一下taskAffinity
的工作原理。
【讨论】:
以上是关于防止应用在导航栏上按下 Home 时返回 BootActivity的主要内容,如果未能解决你的问题,请参考以下文章