Android app中可能存在某些可视化耗时操作,需要防止锁屏。

一、监听锁屏

添加权限

首先来看如何监听锁屏,使用BroadcastReceivercaset来监听

1.锁屏监听

public class ScreenBroadcastReceiver extends BroadcastReceiver {

private static final String TAG = "ScreenBroadcastReceiver";

@Override

public void onReceive(Context context, Intent intent) {

Log.i(context.getClass().getSimpleName(), intent.getAction());

if(Intent.ACTION_USER_PRESENT.equals(intent.getAction())){  // 解锁时

}else if(Intent.ACTION_SCREEN_OFF.equals(intent.getAction())){ // 锁屏时

}

}

}

从上得知,注册锁屏状态监听广播需要2个Action,

Intent.ACTION_USER_PRESENT 和 Intent.ACTION_SCREEN_OFF.

二、阻止锁屏

方法一,修改window的flag

getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON, WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

方式二,使用SDK 电源管理器PowerManger与KeyguardManager工具

//onResume 中启用

wakeLock = ((PowerManager) getSystemService(POWER_SERVICE))

.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK

| PowerManager.ON_AFTER_RELEASE, TAG);

wakeLock.acquire();

//onPause 中禁用

if (wakeLock != null) {

wakeLock.release();

}

此方法需要添加如下权限

方法三,修改系统settings(不推荐,开启后屏幕一直保持开启,还得手动修改settings)

ContentResolver mContentResolver = getContentResolver();

android.provider.Settings.Secure.putInt(mContentResolver, android.provider.Settings.Secure.LOCK_PATTERN_ENABLED,false);

//但注意要加权限AndroidManifest.xml文件中加入,因此,系统需要root才行

//

//还要特别注意的是要加入 android:sharedUserId="android.uid.system",但有一个问题,

//如果加入了sharedUserId后就不能使用eclipse编译了,一定要手动通过 mm -B进行编译,然后把apk install到模拟器或设备中

方法四、配置keepScreenOn

在某些android高版本的View的中,有这样的属性(强烈推荐),可以进行配置

android:keepScreenOn="true"

try doing it

3.参考文章

android 监听锁屏 权限,Android中监听锁屏变化和防止锁屏相关推荐

  1. android自动申请悬浮窗权限,Android 悬浮窗--无需权限

    image.png 无需一切权限,不受各种国产ROM限制,默认可以显示的应用内悬浮窗. 应用内显示,无需申请任何权限 应用内显示,所有机型都可以默认显示悬浮窗,无需引导用户做更多设置 支持拖拽 超出屏 ...

  2. android动态申请悬浮框权限,Android中代码动态判断是否开启悬浮窗权限和申请悬浮窗权限...

    原因 在某些机型上居然后出现permission denied for window type 2038错误: E/AndroidRuntime: FATAL EXCEPTION: main Proc ...

  3. oracle监听启动无权限,Linux中Oracle启动侦听报错TNS:permission denied的解决方法

    前言 最近在开发环境 oracle 启动侦听的时候,出现了 TNS:permission denied 的问题,通过网上和咨询朋友,最终找到了解决方案,现在共享出来给有需要的朋友. 错误描述 [ora ...

  4. android动态申请悬浮框权限,Android创建悬浮窗的完整步骤

    在Android中想要创建悬浮窗分为三步 1.申请权限 2.使用服务启动悬浮窗 3.设置悬浮窗参数并添加进WindowManager 下面话不多说了,来一起看看详细的实现过程 申请权限 首先需要申请悬 ...

  5. android动态申请悬浮框权限,Android动态权限申请工具(包括悬浮窗)

    为了保证APP正常运行,动态权限申请是android比较常用的功能,由于每次都需要做申请.等待返回还有拒绝反馈等操作,比较麻烦,所以集成了一个比较简单的动态权限申请库 集成方法: Step 1. Ad ...

  6. Android个推需要的权限,Android 推送实现-接入个推(GTPush)

    自己使用过的推送服务:极光推送(Jpush).友盟推送.个推.阿里推送,其他的目前还没用用过,但使用起来应该都是比较类似的吧! 本文将简单介绍下这次个推推送的接入流程,及相关的注意事项(个推开通厂商通 ...

  7. android 获取已安装列表权限,Android 如何完整的获取到用户已安装应用列表

    接到产品经理的预研需求,说希望获取用户已安装应用列表.这个问题应该不难,只要是要把相关的知识点整理和验证一下. 对于获取用户已安装应用列表,我个人是很熟悉的,因为我的华为手机上,手机管家天天会在通知栏 ...

  8. android百度地图sdk定位权限,Android:使用百度地图SDK实现定位:下载SDK、申请密钥、动态获得Android权限...

    最近想实现一个打卡的功能,想到可以利用百度地图的SDK.网上有很多关于百度地图SDK定位.地图功能应用的demo,这部分倒不是很困难.但网上很多博客写的内容一般都着重于代码部分,很多下载配置和编译器设 ...

  9. android代码开启悬浮窗权限,Android 悬浮窗权限校验(示例代码)

    悬浮窗权限: 权限检验和请求: //检查是否已经授予权限,大于6.0的系统适用,小于6.0系统默认打开,无需理会 if (Build.VERSION.SDK_INT >= Build.VERSI ...

最新文章

  1. 逻辑回归 + GBDT模型融合实战!
  2. 01《软件需求分析教程》
  3. C#,JAVA各版本之Thread.join()详解
  4. SQL 附加数据库时出现 无法打开物理文件错误
  5. Java上传文件到MongoDB GirdFS
  6. Error starting userland proxy: listen tcp 0.0.0.0:8080: bind: address already in use.
  7. mysql无法与外部健形成约束_MySQL Rails:错误:150“外键约束不正确”
  8. CRM 4.0得到用户个人信息
  9. java使用Post方式发送https请求的方法,直接可以用
  10. micropython 驱动oled0.91_[MicroPython]STM32F407开发板驱动OLED液晶屏
  11. 基于 Flink 的实时数仓生产实践
  12. QT 基础类结构图及核心库
  13. My Fifteenth Page - 快乐数 - By Nicolas
  14. WPE1.3C的详细使用教程
  15. Docker常用配置管理操作札记整理
  16. 老程序员吐槽,今天面试了一个被培训班坑了的学生
  17. sql2000的安装以及sp4的升级
  18. Axure教程(B站宋老师)
  19. h5广告与html5,那些刷爆朋友圈儿的H5广告大揭秘
  20. IBC协议之 ics-024-host-requirements

热门文章

  1. XTUOJ-1272-Robot
  2. 全系列计算机等级考试题库软件+Office2016
  3. 第三届全国中医药院校大学生程序设计竞赛(部分题解)更新中~
  4. 大数据和云计算哪个更简单,易学,前景比较好?
  5. Cadence Allegro如何添加泪滴
  6. 软件设计(十四)-UML建模(上)
  7. 100Mbps 和 100Mb/s 单位Mbps和Mb/s有什么不同
  8. input限制只能11位的数字电话号码
  9. 宝塔面板建立的网站为什么访问不了
  10. win10桌面右下角网络图标中找不到网络