You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何阻止Android应用在小窗模式下运行并终止进程?

如何阻止Android应用进入小窗模式并在触发时终止应用

嗨,我来帮你搞定这个问题!要实现禁止应用以小窗模式运行,并且当用户尝试从最近应用列表打开小窗时直接终止应用,可以通过以下几个步骤来实现:

1. 从系统层面限制窗口可调整性

首先,在你的AndroidManifest.xml里的目标<activity>标签中添加android:resizeableActivity="false"属性,这会告诉系统你的应用不支持分屏或小窗模式,大部分情况下系统会直接阻止这类操作:

<activity
    android:name=".MainActivity"
    android:resizeableActivity="false"
    android:exported="true">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

2. 监听窗口模式变化,兜底终止应用

有些定制化系统可能还是允许用户从最近应用列表触发小窗,这时候我们可以在Activity中监听窗口配置变化,一旦检测到进入小窗模式就直接终止应用:

Kotlin 实现

在你的Activity类中重写onConfigurationChanged方法:

override fun onConfigurationChanged(newConfig: Configuration) {
    super.onConfigurationChanged(newConfig)
    // 检查是否处于小窗(固定窗口)模式
    if (newConfig.windowConfiguration.windowingMode == WindowConfiguration.WINDOWING_MODE_PINNED) {
        // 关闭所有Activity并终止应用进程
        finishAffinity()
        System.exit(0)
    }
}

Java 实现

如果你的项目用Java开发,代码如下:

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    if (newConfig.windowConfiguration.getWindowingMode() == WindowConfiguration.WINDOWING_MODE_PINNED) {
        finishAffinity();
        System.exit(0);
    }
}

注意:要让onConfigurationChanged正常回调,需要在<activity>标签中添加android:configChanges属性,避免系统重建Activity:

<activity
    ...
    android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation">

3. 针对定制化系统的额外处理

部分厂商(比如小米、华为)的小窗逻辑有自己的实现,你可以额外通过ActivityManager定期检查当前应用的窗口状态,或者监听应用的生命周期事件,确保在任何场景下都能拦截小窗模式。

这样组合下来,既能从系统层面阻止小窗触发,又能通过代码兜底确保用户一旦尝试打开小窗就终止应用,完美解决你的需求!

内容的提问来源于stack exchange,提问作者MIkey014

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:42:09