怎样在安卓中实现在锁屏状态下弹出对话框,并可以震动和铃声,就像闹钟似的?...

============问题描述============


我想要在应用弹出对话框,程序在后台运行,当达到条件后弹出对话框并有震动和铃声,但是在锁屏状态下却没反应,有什么办法解决吗?

============解决方案1============




// 解锁

KeyguardManager manager = (KeyguardManager) getSystemService(KEYGUARD_SERVICE);

if( manager.inKeyguardRestrictedInputMode() ){

    //处于锁定界面,界面则通过KeyguardLock类方法来解锁

    KeyguardLock keyguard = manager.newKeyguardLock(getLocalClassName());

    keyguard.disableKeyguard();

}


解锁需要权限:
<uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>



//点亮屏幕

PowerManager pm = (PowerManager)getSystemService(POWER_SERVICE);

mWakelock = pm.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP |PowerManager.SCREEN_DIM_WAKE_LOCK, "SimpleTimer");

mWakelock.acquire();

//.......

mWakelock.release();


点亮屏幕需要权限:
<uses-permission android:name="android.permission.WAKE_LOCK"/>

============解决方案2============


按照LS的方法 请求强制打开锁,会出现按Power键,系统也不会进入Sleep的现象

建议参考如下方法,让对话框在锁屏界面上方显示
onCreate方法时使用
    requestWindowFeature(Window.FEATURE_NO_TITLE); //hide title
    Window win = getWindow();
    WindowManager.LayoutParams winParams = win.getAttributes();
    winParams.flags |= (WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD
            | WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
            | WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON
            | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
    setRequestedOrientation(0);

在OnResume时使用
     protected void onResume() {
        super.onResume();
        acquireWakeLock();
     }
    
     private void acquireWakeLock() {
         if (mWakelock == null) {
             Log.i(TAG, "Activity begin start ");
             PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
             mWakelock = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK,     this.getClass().getCanonicalName());
             mWakelock.acquire();
    }

在onPause
     protected void onPause() {
         super.onPause();
         ......
         releaseWakeLock();
     }
     
     private void releaseWakeLock() {
        if (mWakelock != null && mWakelock.isHeld()) {
            mWakelock.release();
            mWakelock = null;
     }
希望对LZ有所帮助!

  

转载于:https://www.cnblogs.com/llj1985522/p/4041880.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值