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

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

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

============解决方案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有所帮助!

时间: 2024-10-12 19:58:38

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

Android锁屏状态下弹出activity,如新版qq的锁屏消息提示

在接收消息广播的onReceive里,跳转到你要显示的界面.如: Intent intent = new Intent(arg0,MainActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);         arg0.startActivity(intent); 在该activity的onCreate()方法里: super.onCreate(savedInstanceState); getWindow().addFla

Android锁屏状态下弹出activity

在接收消息广播的onReceive里,跳转到你要显示的界面.如: Intent intent = new Intent(arg0,MainActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); arg0.startActivity(intent); 在该activity的onCreate()方法里: super.onCreate(savedInstanceState); getWindow().addFlags(Windo

Windows技巧|如何在Windows 10在锁屏状态下打开某种应用程序?

本文标签:    电脑技巧 Windows技巧 Win10的锁屏界面 互联网杂谈 在Win10的锁屏界面,右下角有三个图标,中间有个像时钟的图标就是所谓的"轻松使用"按钮,里面有讲述人.放大镜.屏幕键盘等功能,这些功能我们可以修改成我们常用的应用程序,这样将大大的方便我们的操作,那么该如何修改呢? 默认情况下在锁屏界面点击右下角中间的图标会弹出"轻松使用"菜单 具体方法如下: 1.在Cortana搜索栏输入regedit,按回车键进入注册表编辑器; 2.定位到:HK

锁屏状态下点亮屏幕,并弹出闹钟提示信息

锁屏状态下点亮屏幕,并弹出闹钟提示信息,可以在锁屏界面上取消闹钟:使用广播接收闹钟定时: 下面是例子里的核心代码如下 android 设置定时闹钟(包括提醒一次和循环提醒):Intent intent = new Intent(MainActivity.this,MyAlarmBroadCast.class);                  PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationConte

Android Activity组件正常以及锁屏状态下的启动流程

前言: Activity是android的四大组件之一,它主要负责管理android应用程序的用户界面. 本文主要从framework的角度去分析activity的启动过程.activity的启动过程根据不同的情况会有一些差别,比如锁屏与非锁屏状态下的区别,activity依附的应用程序进程不存在与已经存在的区别等. 目录: 一.KK4.4从Launcher启动Activity的流程 二.应用内启动子Activity的流程 三.锁屏状态下Activity启动的流程 文章中含有大量的时序图,请直接

android 滑动锁屏状态下如何禁止下拉状态栏

滑动锁屏状态下状态栏可以下拉是google 4.0 默认的设计.如果要禁止此功能,请修改KeyguardViewMediator.java的adjustStatusBarLocked()方法,将  if (isSecure() || !ENABLE_INSECURE_STATUS_BAR_EXPAND) { // showing secure lockscreen; disable expanding. flags |= StatusBarManager.DISABLE_EXPAND; } 修改

IOS8,IOS8.1等系统出现锁屏状态下WIFI断开问题的解决办法!

网络设备:TP-Link 300M无线路由器.DLINK 300M无线路由器.HP 300M无线路由器.APPLE AirPort无线路由器 终端:iphone5S+IOS8.1 故障现象:除apple自家的AirPort路由器外,其他路由器均导致iphone出现锁屏后30秒左右,WIFI图标消失现象. 解决办法:登录路由器,关闭WMM功能(通常在无线功能设置页面),重新启动路由器,故障解决. 故障可能原因:路由器的WMM功能版本与IOS8中的多媒体传输协议不兼容!

使用恶意USB设备解锁 Windows &amp; Mac 锁屏状态

NSA专业物理入侵设备——USB Armory,可解锁任意锁屏状态的下的Windows和Mac操作系统,含最新发布的Windows10.及较早的Mac OSX El Capitan / Mavericks,想知道原理是什么?进来看看吧! 首先,这原本是没有可能实现的,但事实是我真的办到了(相信我,因为不敢相信这是真的,我已经测试了很多次.) USB Ethernet + DHCP + Responder == 证书 论题: 如果我在电脑上插入一个伪装成USB以太网适配器的设备, 那么即使这个系统

Android锁屏状态获取音量按键事件

Android系统没有提供音量按键的广播,而Activity的onKeyDown方法只有在界面显示时才能捕获音量变化, 要在锁屏状态或后台获得音量按键事件,可以通过判断音量值的改变来判断是否按下了音量键.实现的具体思路是: 开一个子线程,持续判断当前音量值和之前音量值是否一致,如果不同说明按下了音量键,并且重置音量值,使音量不在最大值或最小值上. package com.hy2014.phonesafer.activity; import android.app.Activity; import