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

在Flutter中如何实现Android平台其他应用的使用锁定功能?

实现Flutter Android端应用短时锁定功能的可行方案

该功能核心依赖Android系统特殊权限与原生层逻辑实现,Flutter官方未提供对应封装API,可按以下路径开发:

核心实现步骤

  • 首先申请Android端必要特殊权限,在AndroidManifest.xml中声明以下权限:
    <!-- 应用使用情况查询权限 -->
    <uses-permission android:name="android.permission.PACKAGE_USAGE_STATS" />
    <!-- 修改系统设置权限 -->
    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
    <!-- Android 12+ 获取全量应用列表权限 -->
    <uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" />
    
    以上权限均为Android特殊权限,无法通过普通动态权限申请流程获取,需要主动引导用户跳转到系统设置页面手动授权。
  • 通过MethodChannel搭建Flutter层与Android原生层的双向通信通道,Flutter侧将需要锁定的应用包名、锁定时长等参数传递到原生层,原生层处理完成后将锁定状态、剩余时长等数据同步回Flutter层展示。
  • 原生侧实现前台常驻服务,定时通过UsageStatsManager查询当前设备前台运行的应用包名,若命中锁定名单且仍在锁定有效期内,即刻启动全屏的拦截Activity覆盖在目标应用上层,禁止用户操作该应用,直到锁定时长到期后自动关闭拦截页面。
  • 原生侧使用SharedPreferences或Room数据库持久化存储每个应用的锁定到期时间戳,即使应用重启、设备重启也能读取到剩余锁定时长,避免锁定规则失效。

适配优化注意事项

  • 不同Android版本的权限规则差异较大,Android 10及以上对应用使用情况的查询限制更严格,需要做版本分支适配。
  • 前台服务查询前台应用的轮询间隔建议设置为1~2秒,既不会出现拦截延迟,也能避免过高的电量消耗。
  • 需要设置拦截白名单,不要误拦截系统桌面、自身应用、系统拨号等必要应用的正常使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 13:15:02