[英]How to display Activity when the screen is locked?
我的應用程序在汽車對接事件上啟動,我想在插入設備時喚醒電話(由系統完成)並解鎖屏幕。
有可能嗎?
我用於將活動提升到頂級水平
private Window wind;
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
/******block is needed to raise the application if the lock is*********/
wind = this.getWindow();
wind.addFlags(LayoutParams.FLAG_DISMISS_KEYGUARD);
wind.addFlags(LayoutParams.FLAG_SHOW_WHEN_LOCKED);
wind.addFlags(LayoutParams.FLAG_TURN_SCREEN_ON);
/* ^^^^^^^block is needed to raise the application if the lock is*/
}
使用 Activity.getWindow() 獲取您的活動窗口; 使用 Window.addFlags() 在 WindowManager.LayoutParams 中添加您想要的以下任一標志: FLAG_DISMISS_KEYGUARD 、 FLAG_SHOW_WHEN_LOCKED 、 FLAG_TURN_SCREEN_ON
這就是標准車載底座(和桌面底座)應用程序實現此行為的方式。
您只能將FLAG_DISMISS_KEYGUARD
用於沒有啟用安全鎖(如模式鎖)的手機。
FLAG_SHOW_WHEN_LOCKED
只會將您當前的 Activity 放在頂部,如果用戶試圖移動到其他地方,他將不得不解鎖屏幕。
或者,您可以在清單中添加權限:
<uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>
並且,在您創建的活動中:
KeyguardManager manager = (KeyguardManager) this.getSystemService(Context.KEYGUARD_SERVICE);
KeyguardLock lock = manager.newKeyguardLock("abc");
lock.disableKeyguard();
當使用鎖定模式或 pin 條目時,我還需要添加以下內容,因為屏幕在不到 5 秒的時間內關閉:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.