1 问题

我们需要在Activity里面监听网络变化、热点是否开启和关闭、GPS服务是否开启、位置权限是否开启等一些列行为。

2 思路

方法一:

如果是需要启动activity进行权限申请,我们可以用如下组合模式

var intent = Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS)

startActivityForResult(intent, REQUEST_GPS_CODE)

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {

super.onActivityResult(requestCode, resultCode, data)

Log.i(TAG, "onActivityResult start requestCode is:" + requestCode)

//Android8.0以上版本

if (requestCode == REQUEST_GPS_CODE) {

}

}

方法二:

我们在onResume里面进行权限检测

方法三:

注册广播来进行监听

方法四:

利用handler.postDelayed实现定时器,然后定时检测权限

/**

* 检查是否满足条件让按钮变蓝色的定时器

*/

inner class CheckCondition : Runnable {

var context: Context? = null

var type: String? = null

constructor(context: Context, type: String) {

this.context = context

this.type = type

}

override fun run() {

var result = false

result = condition(type!!)

Log.i(TAG, "CheckCondition result is:$result")

if (result) {

nextCreateWifAp.isEnabled = true

} else {

nextCreateWifAp.isEnabled = false

}

handler!!.postDelayed(this, 1000)

}

}

checkCondition = CheckCondition(this, ANDROID_VERSION_SIX_TO_SEVEN)

handler.postDelayed(checkCondition, TIME_TITERVAL)

方法五:

在onWindowFocusChanged函数里面检测,比如切换页面,滑动菜单栏,都能触发到,方案最理想,基本上能满足你的需求。

override fun onWindowFocusChanged(hasFocus: Boolean) {

super.onWindowFocusChanged(hasFocus)

Log.i(TAG, "onWindowFocusChanged----------------------->")

var result = false

handler.postDelayed(Runnable {

result = condition(currentType)

Log.i(TAG, "CheckCondition result is:$result")

if (result) {

nextCreateWifAp.isEnabled = true

} else {

nextCreateWifAp.isEnabled = false

}

}, 1000)

}

android 监听界面变化,Android之页面有变化用onWindowFocusChanged来监听权限是否开启...相关推荐

  1. Android之页面有变化用onWindowFocusChanged来监听权限是否开启

    1 问题 我们需要在Activity里面监听网络变化.热点是否开启和关闭.GPS服务是否开启.位置权限是否开启等一些列行为. 2 思路 方法一: 如果是需要启动activity进行权限申请,我们可以用 ...

  2. 监听localStorage变化(同页面监听)

    "当同源页面的某个页面修改了localStorage,其余的同源页面只要注册了storage事件,就会触发" 同页面监听,重写localStorage的方法,抛出自定义事件: &l ...

  3. android监控指纹信息变化,android监听指纹变化(解决反射思路在android10不生效的问题)...

    前天偶尔运行代码,一个段异常映入眼帘,我擦android10上反射机制监听不到指纹id等数据了,原因是android10彻底抛弃了之前指纹的api.所以反射不到了. 怎么解决这个问题?我们换个思路当然 ...

  4. android 监听图库变化,Android ContentObserver 监听图库变化

    电脑环境是XP,软件是gVim7.3,安装在C盘的 Program Files 下.如何设置gVim的字体和背景颜色:C---Program Files---Vim---_vimrc文件,用文本编辑器 ...

  5. vue 组件监听页面切换_vue项目如何监听窗口变化,达到页面自适应?

    [自适应]向来是前端工程师需要解决的一大问题--即便作为当今非常火热的vue框架,也无法摆脱--虽然elementui.iview等开源UI组件库层出不穷,但官方库毕竟不可能满足全部需求,因此我们可以 ...

  6. android 监测属性值变化,Android 的系统属性(SystemProperties)分析 | Bob's Blo...

    以下分析以android 4.03为基础 前言 Android的系统属性相当于windows的注册表,由key和value组成,且都是核心系统的一个基本机制.相对于windows的注册表,Androi ...

  7. android按钮点击变化,Android实现按钮点击效果(第一次点击变色,第二次恢复)...

    1.首先创建一个按钮 android:id="@+id/click" android:layout_width="fill_parent" android:la ...

  8. 怎么用Android做登录界面,利用Android怎么制作一个APP登录界面

    利用Android怎么制作一个APP登录界面 发布时间:2020-12-02 17:09:10 来源:亿速云 阅读:79 作者:Leah 这期内容当中小编将会给大家带来有关利用Android怎么制作一 ...

  9. Android微信通讯录界面代码,Android中使用Expandablelistview实现微信通讯录界面

    之前的博文<Android 中使用ExpandableListView 实现分组的实例>我简单介绍了使用ExpandableListView实现简单的好友分组功能,今天我们针对之前的所做的 ...

最新文章

  1. 树莓派发布全新计算模块CM3,性能提升10倍
  2. 前端利用JS导出数据到Excel表 数字是文本类型 无法计算
  3. vb.net 文本框为空提示,一键清空文本框所有内容
  4. WPF中的数据绑定Data Binding使用小结
  5. Eclipse自动补全功能轻松设置 || 不需要修改编辑任何文件
  6. 信息学奥赛一本通C++语言——1087:级数求和
  7. Skip level 1 on 1
  8. 10 亿产业基金加持,让精准定位在物联网应用中实现无限可能!
  9. Winform开发全套31个UI组件开源共享
  10. 离线下载Express 2015 for Windows 10
  11. wordpress插件_适用于作家和写作的最佳WordPress插件
  12. 服务器虚拟化的几种方式,服务器虚拟化究竟应当选择哪种方式?
  13. ArchiSteamFarmV3.0使用服务器steam云挂卡
  14. 【颗粒归仓】(一)jQuery easyui datagrid 的数据加载
  15. Scrum敏捷开发实践之有道云笔记
  16. 在线购物系统 分析类或问题域类图
  17. java怎么往list里存int,Java中List、Integer[]、int[] 的相互转换
  18. Vegas中的Vignette暗角视频特效如何使用?
  19. (附源码)ssm高校社团管理系统 毕业设计 234162
  20. 后端开发——Flask框架从入门到入坟(终章)

热门文章

  1. 实现div可以调整高度(div实现resize)
  2. IDEA开发vue.js卡死问题
  3. SpringBoot之基础
  4. BZOJ 5249: [2018多省省队联测]IIIDX(贪心 + 线段树)
  5. BootstrapValidator验证
  6. 浅谈PVID和VID区别
  7. 50张非常精美的Apple主题桌面壁纸(上篇)
  8. JavaScript常用正则表达式收集
  9. As3.0与java数据类型的比较总结
  10. nodejs实现文件上传