如何从android本机应用程序调用应用程序

如何从android本机应用程序调用应用程序,android,c++,Android,C++,以下是我的三个应用程序: UI应用程序(Java) 本机应用程序A(Cpp) 本机应用程序B(Cpp) 现在,UI应用程序开始调用本机应用程序。 那么有没有办法叫B从A开始? 因为B是A的外部部分,所以它需要是单独的过程 更新: 像这样调用应用程序: std::system("am start -n com.package.name/.activity") 它在ADB中工作,但在本机应用程序中不工作 新想法: 因为B应用程序只需要做一个简单的文件传输工作(OTA文件下载)。 所以我认为我需要使

以下是我的三个应用程序:

  • UI应用程序(Java)
  • 本机应用程序A(Cpp)
  • 本机应用程序B(Cpp)
  • 现在,UI应用程序开始调用本机应用程序。 那么有没有办法叫B从A开始? 因为B是A的外部部分,所以它需要是单独的过程

    更新: 像这样调用应用程序:

    std::system("am start -n com.package.name/.activity")
    
    它在ADB中工作,但在本机应用程序中不工作

    新想法: 因为B应用程序只需要做一个简单的文件传输工作(OTA文件下载)。 所以我认为我需要使B应用程序成为一种服务。并使其在系统启动时启动。然后,应用程序不调用B,而是向B广播一个意图。如下所示:

    std::system("am broadcast -a my_start_action -n com.package.name/.activity")
    

    但仍然不起作用。

    您应该使用JNI回调请求应用程序A向应用程序B发送启动意图

    JNI回调:

    向应用程序B发送启动意图:


    由于
    A
    B
    是本机Linux进程,因此可以使用

    system
    fork
    /
    exec
    api

    在一个
    system(“/path/to/b”)

    或者在
    fork()
    A进程的代码中,它们
    exec(“/path/to/b”,…)