当前位置: 首页 > news >正文

安卓 Manifest 清单工控专用配置:全屏、禁止锁屏、开机自启、屏幕常亮

安卓 Manifest 清单工控专用配置:全屏、禁止锁屏、开机自启、屏幕常亮

工控设备上跑安卓APP,Manifest配置不对,你的界面可能半路弹个状态栏、设备锁屏黑了屏、重启后APP没起来——现场运维直接骂娘。

一、AndroidManifest.xml——工控APP的"身份证+配置表"

每个安卓应用都有一个AndroidManifest.xml,它声明了APP的包名、组件、权限、硬件需求等关键信息。在手机上,Manifest配置随便一点问题不大;但在工控设备上,每一行配置都可能直接决定设备能不能正常运转

工控场景下的核心诉求:

  • 全屏显示:不要状态栏、不要标题栏,屏幕就是界面
  • 永不锁屏:设备常驻运行,不能因为锁屏中断监控
  • 开机自启:断电恢复后APP自动启动,无需人工干预
  • 屏幕方向锁定:工业屏固定安装方向,不能随意翻转

这些全部需要在Manifest中提前声明和配置。

二、全屏显示配置

2.1 去掉标题栏

<application><activity>标签中设置主题:

<activityandroid:name=".MainActivity"android:theme="@android: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:name="android.permission.WAKE_LOCK"/>

3.2 代码设置屏幕常亮

方式一:WindowManager Flag(最常用)

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

方式二:布局XML属性(更简洁)

<RelativeLayoutandroid:keepScreenOn="true"><!-- 你的布局内容 --></RelativeLayout>

方式三:PowerManager WakeLock(需要WAKE_LOCK权限,更底层)

PowerManagerpm=(PowerManager)getSystemService(Context.POWER_SERVICE);PowerManager.WakeLockwl=pm.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:name="android.permission.RECEIVE_BOOT_COMPLETED"/>

4.2 注册BroadcastReceiver

<receiverandroid:name=".BootReceiver"android:enabled="true"android:exported="true"><intent-filter><actionandroid:name="android.intent.action.BOOT_COMPLETED"/><categoryandroid:name="android.intent.category.DEFAULT"/></intent-filter></receiver>

4.3 BootReceiver实现

publicclassBootReceiverextendsBroadcastReceiver{@OverridepublicvoidonReceive(Contextcontext,Intentintent){if(Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction())){IntentlaunchIntent=newIntent(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=".MainActivity"android:screenOrientation="landscape"><!-- 横屏固定,竖屏用 "portrait" --></activity>
属性值说明工控推荐
landscape强制横屏✅ 横屏工业屏
portrait强制竖屏✅ 竖屏工业屏
sensorLandscape根据传感器横屏(可翻转)❌ 工控不推荐
unspecified系统自动决定❌ 工控绝对不要
locked锁定当前方向(API 18+)✅ 通用锁定

六、系统级配置

6.1 sharedUserId——运行在系统进程空间

<manifestxmlns:android="http://schemas.android.com/apk/res/android"package="com.example.industrial"android:sharedUserId="android.uid.system">

声明android.uid.system后,APP获得系统级权限,可以:

  • 写入系统设置Settings.System
  • 关闭其他APP
  • 操作硬件节点/dev/下的设备

前提:必须用平台密钥(platform.pk8 + platform.x509.pem)签名,否则安装失败。

6.2 安装到system分区声明

<applicationandroid:installLocation="internalOnly"...>

工控APP只能装在内部存储,不能装SD卡——SD卡可能被意外拔出。

七、完整Manifest配置示例

<?xml version="1.0" encoding="utf-8"?><manifestxmlns:android="http://schemas.android.com/apk/res/android"package="com.example.industrial"android:sharedUserId="android.uid.system"><!-- 工控核心权限 --><uses-permissionandroid:name="android.permission.WAKE_LOCK"/><uses-permissionandroid:name="android.permission.RECEIVE_BOOT_COMPLETED"/><uses-permissionandroid:name="android.permission.WRITE_SETTINGS"/><uses-permissionandroid:name="android.permission.SYSTEM_ALERT_WINDOW"/><applicationandroid:allowBackup="false"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:installLocation="internalOnly"android:theme="@android:style/Theme.NoTitleBar.Fullscreen"><!-- 主界面:全屏 + 横屏锁定 --><activityandroid:name=".MainActivity"android:screenOrientation="landscape"android:configChanges="orientation|screenSize|keyboardHidden"android:exported="true"><intent-filter><actionandroid:name="android.intent.action.MAIN"/><categoryandroid:name="android.intent.category.LAUNCHER"/></intent-filter></activity><!-- 开机自启接收器 --><receiverandroid:name=".BootReceiver"android:enabled="true"android:exported="true"><intent-filter><actionandroid:name="android.intent.action.BOOT_COMPLETED"/><actionandroid:name="android.intent.action.LOCKED_BOOT_COMPLETED"/></intent-filter></receiver><!-- 后台常驻服务 --><serviceandroid:name=".MonitorService"android:enabled="true"android:exported="false"/></application></manifest>

八、常见配置陷阱速查

陷阱现象解决方案
首次安装不收BOOT广播开机不自启出厂前手动激活一次
FLAG_FULLSCREEN被系统主题覆盖状态栏闪现Manifest中同时设置NoTitleBar.Fullscreen主题
WakeLock未释放设备永远不熄屏用FLAG_KEEP_SCREEN_ON替代,或确保release
configChanges未声明屏幕旋转重建Activity加 `orientation
sharedUserId签名不匹配安装失败ERROR_INSTALL_FAILED_SHARED_USER_INCOMPATIBLE必须用同一平台密钥签名
快速开机无BOOT广播冷启动不自启同时监听LOCKED_BOOT_COMPLETED

Manifest配置是工控APP的地基,写对了省心,写错了现场翻车。把上面这份模板拿去改,基本覆盖了80%的工控场景需求。

http://www.jsqmd.com/news/1270448/

相关文章:

  • yuzu模拟器:在PC上畅玩Switch游戏的终极完整指南
  • 2026 权威免费工具教程,视频 GIF ,AI 自动识别高能片段并生成动图,抖音视频号快手精彩瞬间智能截取无需手动找点 - 时时资讯
  • 后端系统的容量规划实践:跨行业的通用方法论与工具链
  • C# WinForms坦克大战实战:从零构建经典游戏,掌握游戏开发核心原理
  • 鸿蒙应用开发从入门到实战(三):第一个鸿蒙应用
  • 2026年AI论文生成工具实测:哪一款真正适合毕业生?
  • CC13x2/CC26x2无线MCU低功耗设计:PRCM时钟门控与电源模式实战解析
  • 2026年7月湖南省常德市电信500M单宽带实测办理全流程 - 找卡家园
  • 2026年7月湖南省怀化市移动500M单宽带安装流程 - 找卡家园
  • 2026年7月湖南省怀化市电信300M单宽带申请避坑实录 - 找卡家园
  • 淄博保险被拒赔如何维权?2026年这5位保险纠纷律师值得关注 - 本地品牌推荐
  • 武汉李记沙发翻新工厂店:18年专注一件事,让每一张沙发都值得被善待
  • 【JAVA毕设源码分享】基于springboot的智能推荐的卫生健康系统(程序+文档+代码讲解+一条龙定制)
  • 2026年7月浙江省衢州市联通500M融合宽带申请避坑攻略 - 找卡家园
  • 【项目编号:project90470】图书馆管理不只是“借书还书”:这套 Spring Boot 系统把馆藏、读者与数据统计全串起来了
  • 2026年7月湖南省怀化市移动500M单宽带怎么报装? - 找卡家园
  • Linux PipeWire深度解析之pw_context_add_spa_lib调用流程与实战(二十九)
  • Java 数据结构 优先级队列(堆)
  • 2026年7月北京市移动300M融合宽带攻略与避坑指南 - 找卡家园
  • C语言文件操作全指南:文件读写、随机访问与缓冲区机制
  • 2026华为OD面试题042:MVP争夺战
  • 2026年7月福建高中全日制一对一优质辅导机构推荐 - 互联网科技品牌测评
  • 终极同花顺问财数据采集方案:pywencai让金融数据获取变得简单高效
  • 【C++】封装红黑树实现mymap和myset(源码及框架分析、实现复用红黑树的框架,并支持insert、支持iterator迭代器的实现、map支持[]下标运算符、map和set代码实现)
  • UEFITool 0.28 终极指南:轻松解析和修改UEFI固件镜像
  • 2026合肥购宠终极测评|明轩猫犬舍3000㎡CKU认证繁育基地!江淮梅雨湿冷养宠避雷+选宠+养护全攻略 - 同城大型猫犬舍
  • 中国细瓷市场现状调查分析及未来竞争态势预测报告2026年版
  • 推荐系统多任务建模:架构设计与工程实践
  • 2026年7月北京市移动500M融合宽带安装流程 - 找卡家园
  • 2026 年当下,仙游优秀的二手托盘交易供货厂家哪家强,揭秘:别再扔掉你的旧托盘了!-易辰重型设备包装 - 企业推荐官【认证官方】