安卓 Manifest 清单工控专用配置:全屏、禁止锁屏、开机自启、屏幕常亮 安卓 Manifest 清单工控专用配置全屏、禁止锁屏、开机自启、屏幕常亮工控设备上跑安卓APPManifest配置不对你的界面可能半路弹个状态栏、设备锁屏黑了屏、重启后APP没起来——现场运维直接骂娘。一、AndroidManifest.xml——工控APP的身份证配置表每个安卓应用都有一个AndroidManifest.xml它声明了APP的包名、组件、权限、硬件需求等关键信息。在手机上Manifest配置随便一点问题不大但在工控设备上每一行配置都可能直接决定设备能不能正常运转。工控场景下的核心诉求全屏显示不要状态栏、不要标题栏屏幕就是界面永不锁屏设备常驻运行不能因为锁屏中断监控开机自启断电恢复后APP自动启动无需人工干预屏幕方向锁定工业屏固定安装方向不能随意翻转这些全部需要在Manifest中提前声明和配置。二、全屏显示配置2.1 去掉标题栏在application或activity标签中设置主题activityandroid:name.MainActivityandroid:themeandroid:style/Theme.NoTitleBar.Fullscreen/activity或者在代码中动态设置更灵活requestWindowFeature(Window.FEATURE_NO_TITLE);2.2 去掉状态栏——真正的沉浸式全屏getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);Android 4.4 推荐使用沉浸式模式Immersive Mode状态栏和导航栏完全隐藏且用户滑动边缘也不会弹出getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY|View.SYSTEM_UI_FLAG_FULLSCREEN|View.SYSTEM_UI_FLAG_HIDE_NAVIGATION|View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN|View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION|View.SYSTEM_UI_FLAG_LAYOUT_STABLE);工控陷阱沉浸式模式下用户边缘滑动会短暂恢复系统栏。用IMMERSIVE_STICKY而不是IMMERSIVE前者几秒后自动重新隐藏后者需要代码手动恢复。三、禁止锁屏与屏幕常亮3.1 声明权限uses-permissionandroid:nameandroid.permission.WAKE_LOCK/3.2 代码设置屏幕常亮方式一WindowManager Flag最常用getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);方式二布局XML属性更简洁RelativeLayoutandroid:keepScreenOntrue!-- 你的布局内容 --/RelativeLayout方式三PowerManager WakeLock需要WAKE_LOCK权限更底层PowerManagerpm(PowerManager)getSystemService(Context.POWER_SERVICE);PowerManager.WakeLockwlpm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK,MyApp:ScreenOn);wl.acquire();// 在合适的时候释放wl.release();工控建议优先使用FLAG_KEEP_SCREEN_ON不需要WAKE_LOCK权限系统会在Activity销毁时自动释放不会导致屏幕意外常亮耗电。WakeLock方式适合Service场景。四、开机自启配置4.1 声明权限uses-permissionandroid:nameandroid.permission.RECEIVE_BOOT_COMPLETED/4.2 注册BroadcastReceiverreceiverandroid:name.BootReceiverandroid:enabledtrueandroid:exportedtrueintent-filteractionandroid:nameandroid.intent.action.BOOT_COMPLETED/categoryandroid:nameandroid.intent.category.DEFAULT//intent-filter/receiver4.3 BootReceiver实现publicclassBootReceiverextendsBroadcastReceiver{OverridepublicvoidonReceive(Contextcontext,Intentintent){if(Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction())){IntentlaunchIntentnewIntent(context,MainActivity.class);launchIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);context.startActivity(launchIntent);}}}工控陷阱一Android 3.1安装后首次启动的APP不会收到BOOT_COMPLETED广播必须用户手动启动一次。工控设备出厂时需预装并手动激活一次APP。工控陷阱二部分定制ROM在FastBoot快速开机模式下不发送BOOT_COMPLETED改用LOCKED_BOOT_COMPLETED兜底。五、屏幕方向锁定工业屏安装在固定位置横屏或竖屏不会切换activityandroid:name.MainActivityandroid:screenOrientationlandscape!-- 横屏固定竖屏用 portrait --/activity属性值说明工控推荐landscape强制横屏✅ 横屏工业屏portrait强制竖屏✅ 竖屏工业屏sensorLandscape根据传感器横屏可翻转❌ 工控不推荐unspecified系统自动决定❌ 工控绝对不要locked锁定当前方向API 18✅ 通用锁定六、系统级配置6.1 sharedUserId——运行在系统进程空间manifestxmlns:androidhttp://schemas.android.com/apk/res/androidpackagecom.example.industrialandroid:sharedUserIdandroid.uid.system声明android.uid.system后APP获得系统级权限可以写入系统设置Settings.System关闭其他APP操作硬件节点/dev/下的设备前提必须用平台密钥platform.pk8 platform.x509.pem签名否则安装失败。6.2 安装到system分区声明applicationandroid:installLocationinternalOnly...工控APP只能装在内部存储不能装SD卡——SD卡可能被意外拔出。七、完整Manifest配置示例?xml version1.0 encodingutf-8?manifestxmlns:androidhttp://schemas.android.com/apk/res/androidpackagecom.example.industrialandroid:sharedUserIdandroid.uid.system!-- 工控核心权限 --uses-permissionandroid:nameandroid.permission.WAKE_LOCK/uses-permissionandroid:nameandroid.permission.RECEIVE_BOOT_COMPLETED/uses-permissionandroid:nameandroid.permission.WRITE_SETTINGS/uses-permissionandroid:nameandroid.permission.SYSTEM_ALERT_WINDOW/applicationandroid:allowBackupfalseandroid:iconmipmap/ic_launcherandroid:labelstring/app_nameandroid:installLocationinternalOnlyandroid:themeandroid:style/Theme.NoTitleBar.Fullscreen!-- 主界面全屏 横屏锁定 --activityandroid:name.MainActivityandroid:screenOrientationlandscapeandroid:configChangesorientation|screenSize|keyboardHiddenandroid:exportedtrueintent-filteractionandroid:nameandroid.intent.action.MAIN/categoryandroid:nameandroid.intent.category.LAUNCHER//intent-filter/activity!-- 开机自启接收器 --receiverandroid:name.BootReceiverandroid:enabledtrueandroid:exportedtrueintent-filteractionandroid:nameandroid.intent.action.BOOT_COMPLETED/actionandroid:nameandroid.intent.action.LOCKED_BOOT_COMPLETED//intent-filter/receiver!-- 后台常驻服务 --serviceandroid:name.MonitorServiceandroid:enabledtrueandroid:exportedfalse//application/manifest八、常见配置陷阱速查陷阱现象解决方案首次安装不收BOOT广播开机不自启出厂前手动激活一次FLAG_FULLSCREEN被系统主题覆盖状态栏闪现Manifest中同时设置NoTitleBar.Fullscreen主题WakeLock未释放设备永远不熄屏用FLAG_KEEP_SCREEN_ON替代或确保releaseconfigChanges未声明屏幕旋转重建Activity加 orientationsharedUserId签名不匹配安装失败ERROR_INSTALL_FAILED_SHARED_USER_INCOMPATIBLE必须用同一平台密钥签名快速开机无BOOT广播冷启动不自启同时监听LOCKED_BOOT_COMPLETEDManifest配置是工控APP的地基写对了省心写错了现场翻车。把上面这份模板拿去改基本覆盖了80%的工控场景需求。