Android framework自定义待机广播(可静态注册)

Android framework自定义待机广播

由于android.intent.action.SCREEN_ON和android.intent.action.SCREEN_OFF只能在代码中动态注册
android系统需要监听待机唤醒的动作时,常常会时机把握不准,这时候就需要静态注册广播,常驻系统:
  • 修改\frameworks\base\services\java\com\android\server\power\Notifier.java文件

    添加广播
    mScreenOnIntent = new Intent(Intent.ACTION_SCREEN_ON);
    mScreenOnIntent_new = new Intent("android.intent.action.SCREEN_ON_NEW");//此处添加需要的广播
    mScreenOnIntent.addFlags(
            Intent.FLAG_RECEIVER_REGISTERED_ONLY | Intent.FLAG_RECEIVER_FOREGROUND);
    mScreenOffIntent = new Intent(Intent.ACTION_SCREEN_OFF);
    mScreenOffIntent_new= new Intent("android.intent.action.SCREEN_OFF_NEW");//此处添加需要的广播
    mScreenOffIntent.addFlags(
            Intent.FLAG_RECEIVER_REGISTERED_ONLY | Intent.FLAG_RECEIVER_FOREGROUND);
    mSuspendStartIntent = new Intent(SMART_SUSPEND_ENTER);
    
    
    发送唤醒广播
    if (ActivityManagerNative.isSystemReady()) {
        mContext.sendOrderedBroadcastAsUser(mScreenOnIntent, UserHandle.ALL, null,
                mWakeUpBroadcastDone, mHandler, 0, null, null);
        mContext.sendBroadcastAsUser(mScreenOnIntent_new, UserHandle.CURRENT_OR_SELF);   //发送广播
    } 
    
    发送待机广播
     if (ActivityManagerNative.isSystemReady()) {
        mContext.sendOrderedBroadcastAsUser(mScreenOffIntent, UserHandle.ALL, null,
                mGoToSleepBroadcastDone, mHandler, 0, null, null);
         mContext.sendBroadcastAsUser(mScreenOffIntent_new, UserHandle.CURRENT_OR_SELF);  
    }
    
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值