android PowerManager goToSleep 等用法

这个API很多坑,搞得我头疼好几次才研究出如何使用

第一个坑

android.permission.DEVICE_POWER

需要声明此权限,也就是只有系统级别应用才可以

普通应用即使你声明了也不起作用,所以 PowerManager 需要 android.permission.DEVICE_POWER 权限的接口你都无权调用!

包括 goToSleep() weakUp() userActivity()

public void goToSleep(long time)
public void goToSleep(long time, int reason, int flags)
public void wakeUp(long time)
public void userActivity(long when, int event, int flags)

函数原型在此,可以反射调用

第二个坑

好不容易搞定了系统应用,调用 goToSleep() 各种不起作用(goToSleep() 效果就相对于你按下电源键),他有一个参数 int time ,官方这样解释

Parameters time : The time when the request to go to sleep was
issued, in the uptimeMillis() time base. This timestamp is used to
correctly order the go to sleep request with other power management
functions. It should be set to the timestamp of the input event that
caused the request to go to sleep.

按他的意思是 以 SystemClock.uptimeMillis() 时间为基础,按我的理解就是 SystemClock.uptimeMillis() + 1000 在1s后手机进入休眠结果他给我抛一个异常,说 time must not be in the future! 然后只传 SystemClock.uptimeMillis() 可以调用,立即锁屏, fuck 啊,你既然这样设计为何还要留这个参数作甚,在里面直接使用 SystemClock.uptimeMillis() 不就是么?

weakUp() 效果相当于再按电源键开启屏幕,不解锁,调用方法同 goToSleep()

如何拥有系统权限,
1、android:sharedUserId=“android.uid.system”
2、使用系统签名

3、放在 /system/app/ 下

转载自:https://blog.csdn.net/z1074971432/article/details/37940701

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值