本文整理自网络,侵删。
主要解决的问题是:在屏幕处于锁屏或关闭状态下,无法正常显示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 xe6 string转memorystream
Delphi xe7开发的获取网页中字符串的编码是否是utf8
Delphi环境下基于spcomm控件开发串口通讯报文字节丢失的问题解决
更多相关阅读请进入《Delphi》频道 >>