当前位置: 首页 > 知识库问答 >
问题:

Delphi无法启动Android 8版本以上的Android服务

卫嘉泽
2023-03-14

我用Delphi 10.3完成的应用程序正在android版本7上成功启动并监控我的android服务。但在Android版本8以上,我发现错误:

java.lang.IllegalStateException:不允许启动Intent... app在后台uid为空

发现从版本8开始,Android已更改策略。我应该使用startForegroundService,但我不清楚如何从服务中响应以通知Android并允许启动。(找不到Delphi示例)

开启服务代码

    procedure TfrmStarter.StartBLEService;
    var
        Intent : JIntent;
        NativeComponent : JComponentName;
        PackageName, AppName : JString;

begin
    PackageName := StringToJString('com.embarcadero.LysaAdmin');
    AppName := StringToJString('com.embarcadero.services.BLEService');

    Intent := TJIntent.Create;
    Intent.setAction(TJIntent.JavaClass.ACTION_MAIN);
    Intent.addCategory(TJIntent.JavaClass.CATEGORY_LAUNCHER);
    NativeComponent := TJComponentName.JavaClass.init(PackageName, AppName);
    Intent.addFlags(TJIntent.JavaClass.FLAG_ACTIVITY_NEW_TASK or TJIntent.JavaClass.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
    Intent.setComponent(NativeComponent);
    SharedActivity.startService(Intent);   //<< This work's fine Android 7

   // SharedActivity.startForegroundService(Intent); //<< Android 8.1 not getting errors but service is not started
end;

服务启动命令代码

function TDM.AndroidServiceStartCommand(const Sender: TObject;
  const Intent: JIntent; Flags, StartId: Integer): Integer;
begin
 Result := TJService.JavaClass.START_STICKY; 
end;

共有1个答案

卢翔宇
2023-03-14

Delphi提供了在一行中启动服务的能力

使用系统。Android服务

...

TLocalServiceConnection。StartService(“service\u name”);

service\u name-仅服务名称,不带包(com.embarcadero.)!

 类似资料:
  • 好吧,这就是问题所在。我做,但我没有从或获得新的日志消息。 舱单: null 活动代码: 我试过什么: 将所有“cont”更改为“this” StartService(新意图(cont,FlashService.class)); null 更新: 完整活动代码:

  • 我们最近升级到k8s版本1.20.9,不确定这是否是根本原因,但SCDF服务器pod未能出现以下错误。 我通常使用基于kubectl的部署来部署scdf服务器。 有人知道吗?以下附加错误。 2022-01-05 05:08:56.207信息1---[main]o.a.coyote.http11.Http11NioProtocol:Starting ProtocolHandler[“http-nio

  • 我刚开始在我的电脑上安装Xampp和MySQL。然后当我想从xampp控制面板启动MySQL时,它不起作用。 控制面板中的消息说“正在尝试启动MySQL服务…”,但状态不会变为绿色(我启动了Apache,它可以工作) 我曾尝试重新安装MySQL和Xampp,但没有成功。谷歌搜索也没有多大帮助。 我已经检查过MySQL服务正在3306端口上运行。有时当我试图从Xampp控制面板启动MySQL时,它说

  • 我在MAMP上的Mysql服务器无法启动。这是错误: 161224 00:15:00 mysqld\u安全日志记录到“/Applications/MAMP/logs/mysql\u error\u log.err”。161224 00:15:00 mysqld_safe使用/Applications/MAMP/db/mysql56中的数据库启动mysqld守护进程161224 00:15:01 m

  • 严重:启动java.util.concurrent.ExecutionException时子容器失败:org.apache.Catalina.LifeCycleException:启动组件[StandardEngine[Catalina].StandardHost[localhost].StandardContext[/HelloWorldRestService]](位于java.util.con

  • 我已经用WinRun4J创建了一个windows服务。应用程序已成功安装为服务。但是,当我尝试在命令提示符下使用run