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

Android中如何通过编程从Service启用/禁用设备全局竖屏模式

全局设备竖屏模式控制实现方案

必要前提

  • 首先需要申请特殊权限 android.permission.WRITE_SETTINGS,普通动态权限申请无法生效,需要引导用户前往系统设置页开启「修改系统设置」权限
  • Android 10及以上版本如果Service在后台运行,还需要申请 android.permission.SYSTEM_ALERT_WINDOW 悬浮窗权限,避免后台操作被系统拦截

核心实现代码

你提到的setRequestedOrientation方法只能控制当前应用单个Activity的显示方向,要实现全局设备方向控制,需要直接修改系统的屏幕方向配置项:

  1. 启用全局竖屏锁定
// 关闭系统自动旋转功能
Settings.System.putInt(getContentResolver(), Settings.System.ACCELEROMETER_ROTATION, 0);
// 设置全局默认方向为竖屏
Settings.System.putInt(getContentResolver(), Settings.System.USER_ROTATION, Surface.ROTATION_0);
  1. 解除全局竖屏锁定,恢复系统默认旋转逻辑
// 开启系统自动旋转功能
Settings.System.putInt(getContentResolver(), Settings.System.ACCELEROMETER_ROTATION, 1);

注意事项

  • 该方案修改的是系统全局的显示配置,修改后所有应用都会遵循该设置,完全符合全局控制的需求
  • 在Service中调用时直接使用service.getContentResolver()获取ContentResolver实例即可
  • 权限申请参考代码:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
    if (!Settings.System.canWrite(context)) {
        Intent intent = new Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS);
        intent.setData(Uri.parse("package:" + context.getPackageName()));
        context.startActivity(intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 01:42:03