本文整理自网络,侵删。
主要解决的问题是:在屏幕处于锁屏或关闭状态下,无法正常显示MessageDlg
procedure WaitUntilScreenIsActive;begin while True do begin Application.ProcessMessages; if isScreenOn and isKeyguardunLock then Break; end;end;
function isScreenOn : Boolean;var Native:JObject ; PowerManager : JPowerManager;begin Native:=SharedActivityContext.getSystemService(TJContext.JavaClass.POWER_SERVICE); if not Assigned(Native) then begin raise Exception.Create('Could not locate Connectivity Service'); end; PowerManager := TJPowerManager.Wrap((Native as ILocalObject).GetObjectID) ; if not Assigned(PowerManager) then Result := True else Result := PowerManager.isScreenOn; Native:=SharedActivityContext.getSystemService(TJContext.JavaClass.KEYGUARD_SERVICE);end;
function isKeyguardunLock : Boolean;var Native:JObject ; KeyguardManager : JKeyguardManager;begin Native:=SharedActivityContext.getSystemService(TJContext.JavaClass.KEYGUARD_SERVICE); if not Assigned(Native) then begin raise Exception.Create('Could not locate Connectivity Service'); end; KeyguardManager := TJKeyguardManager.Wrap((Native as ILocalObject).GetObjectID) ; if not Assigned(KeyguardManager) then Result := True else Result := not KeyguardManager.isKeyguardLocked;
end;来源:https://www.cnblogs.com/dannylee/p/7656656.html
相关阅读 >>
Delphi 错误no ftp list parsers have been registered
Delphi strutils.leftstr、strutils.rightstr - 提取左右字符串
Delphi 利用tcomm组件 spcomm 实现串行通信
Delphi firemonkey 学习笔记 �c tpopup 控件的使用
Delphi xe5 json与Delphi object的互换
更多相关阅读请进入《Delphi》频道 >>