本文整理自网络,侵删。
这次,这是在Delphi 10 Seattle中实现广播接收器的一种方法。这比您想像的要容易。
创建一个类以接收通知。
uses Androidapi.JNIBridge, Androidapi.JNI.Embarcadero, Androidapi.JNI.GraphicsContentViewText;
type TMyReceiver = class(TJavaLocal, JFMXBroadcastReceiverListener) public constructor Create; procedure onReceive(context: JContext; intent: JIntent); cdecl; end;
uses Androidapi.Helpers, Androidapi.JNI.JavaTypes;
{ TMyReceiver }
constructor TMyReceiver.Create;begin inherited;end;
procedure TMyReceiver.onReceive(context: JContext; intent: JIntent);begin Log.d('Broadcast Received = ' + JStringToString(intent.getAction));end;设置为在表单的OnCreate事件中接收通知,并在OnDestroy事件中释放通知。
type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); private { private 宣言 } FMyListener: TMyReceiver; FBroadcastReceiver: JFMXBroadcastReceiver; public { public 宣言 } end;
procedure TForm1.FormCreate(Sender: TObject);var Filter: JIntentFilter;begin FMyListener := TMyReceiver.Create; FBroadcastReceiver := TJFMXBroadcastReceiver.JavaClass.init(FMyListener);
Filter := TJIntentFilter.JavaClass.init; Filter.addAction(TJIntent.JavaClass.ACTION_SCREEN_OFF); Filter.addAction(TJIntent.JavaClass.ACTION_SCREEN_ON); TAndroidHelper.context.getApplicationContext.registerReceiver (FBroadcastReceiver, Filter);end;
procedure TForm1.FormDestroy(Sender: TObject);begin TAndroidHelper.context.getApplicationContext.unregisterReceiver (FBroadcastReceiver);end;以上是完成。
当执行该应用程序并打开/关闭屏幕时,将在日志中输出以下内容。
FMX: BroadcastSample: Broadcast Received = android.intent.action.SCREEN_OFFFMX: BroadcastSample: Broadcast Received = android.intent.action.SCREEN_ON
相关阅读 >>
Delphi 10.3 调试程序时出错:unable to create process:请求的操作需要提升
Delphi获取flash文件的影片时长,原始尺寸,帧数等信息
Delphi ioutils 获取当前目录下所有的文件/文件夹
更多相关阅读请进入《Delphi》频道 >>