android 监听页面大小变化,Android之页面有变化用onWindowFocusChanged来监听权限是否开启...

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)

}

来源:oschina

链接:https://my.oschina.net/u/4394685/blog/4299704

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值