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

如何编程调整自由形式模式下运行的第三方应用窗口(不重启不丢数据)

如何编程调整第三方应用窗口大小且不丢失数据

要调整Chrome、谷歌地图这类第三方应用的运行窗口大小,同时保留应用原有数据(无需重建应用),可按以下步骤实现:

1. 启用系统自由窗口支持

先通过ADB命令开启开发者模式下的相关设置,确保系统允许应用以可调整大小的窗口启动:

adb shell settings put global enable_freeform_support 1
adb shell settings put global force_resizable_activities 1

2. 编程启动应用并指定窗口大小

通过Kotlin代码,利用ActivityOptions配置应用的启动窗口模式和边界,以此指定窗口大小。以下是启动Chrome并设置全屏窗口的示例:

val intent = packageManager.getLaunchIntentForPackage("com.android.chrome")

var options = ActivityOptions.makeBasic()
try {
    // 反射调用隐藏API,设置为自由窗口模式(值为5)
    val method: Method = ActivityOptions::class.java.getMethod("setLaunchWindowingMode", Int::class.javaPrimitiveType)
    method.invoke(options, 5)
} catch (_: Exception) {}

// 定义窗口尺寸:此处为全屏,可按需修改Rect的左、上、右、下参数调整窗口大小
val windowSize = Rect(
    0,
    0,
    resources.displayMetrics.widthPixels,
    resources.displayMetrics.heightPixels
)
options = options.setLaunchBounds(windowSize)

startActivity(intent, options.toBundle())

关键说明:

  • setLaunchWindowingMode(5):通过反射调用隐藏的系统API,将应用设置为自由窗口模式,允许后续调整窗口大小。
  • setLaunchBounds(windowSize):传入Rect对象定义窗口的具体位置和尺寸,修改四个坐标值即可自定义窗口大小。
  • 该方式在应用启动时指定窗口参数,启动后应用原有数据会正常保留,无需重建应用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 22:25:20