簡體   English   中英

鎖屏時如何顯示Activity?

[英]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_KEYGUARDFLAG_SHOW_WHEN_LOCKEDFLAG_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM