Delphi 10 Seattle的Android应用程序中使用参数启动服务


本文整理自网络,侵删。

 
现在,您可以使用Delphi 10 Seattle的Android应用程序创建服务。

可以使用“ TLocalServiceConnection.StartService(服务名称);”启动服务。
很简单

但是,有时您想使用信息启动服务。
似乎没有这种方便的功能。

因此,创建自己的Intent并使用putExtra方法传递信息。
准备一个这样的函数:

function CreateIntent(const AServiceName: string; I: Integer; S: string): JIntent;
var
  ServiceName: string;
begin
  Result := TJIntent.Create;
  ServiceName := AServiceName;
  if not ServiceName.StartsWith('com.embarcadero.services.') then
    ServiceName := 'com.embarcadero.services.' + ServiceName;
  Result.setClassName(TAndroidHelper.Context.getPackageName(), TAndroidHelper.StringToJString(ServiceName));
  Result.putExtra(TAndroidHelper.StringToJString('Int'), I);
  Result.putExtra(TAndroidHelper.StringToJString('Str'), TAndroidHelper.StringToJString(S));
end;
像这样启动Sender。

procedure TForm1.Button1Click(Sender: TObject);
var
  Intent: JIntent;
begin
  Intent := CreateIntent(SERVICE_NAME, 987, '测试');
  TAndroidHelper.Activity.startService(Intent);
end;
在服务端,它接收OnStartCommand事件中发送的参数。

function TAndroidServiceDM.AndroidServiceStartCommand(const Sender: TObject;
  const Intent: JIntent; Flags, StartId: Integer): Integer;
var
  Int: Integer;
  Str: string;
begin
  Int := Intent.getIntExtra(TAndroidHelper.StringToJString('Int'), -1);
  Str := TAndroidHelper.JStringToString
    (Intent.getStringExtra(TAndroidHelper.StringToJString('Str')));

  //处理

  Result := TJService.JavaClass.START_STICKY;
end;

相关阅读 >>

Delphi的format使用总结

Delphi 判断时间是否是下午 dateutils.ispm

Delphi case选择语句练习代码简化

Delphi unicode转中文编码

Delphi 两个非常有用的进程函数

Delphi 在 webservice 中采用 tsoapattachment 传输文件

Delphi 通过有道接口实现翻译

Delphi android 拨打电话

Delphi编写的android程序获取root权限实现(2015.4.15更新,支持android 4.4)

Delphi mscomm1自动获取串口

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...