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

时间:2017-03-21 04:28:04

标签: android c++

这里有三个应用程序:

  1. UI应用程序(Java)
  2. 原生申请A(Cpp)
  3. 原生申请B(Cpp)
  4. 现在UI应用程序调用本机应用程序启动。 那么有没有办法从A开始叫B? 因为B是A的外部部分,所以它需要是个别的过程。

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

    std::system("am start -n com.package.name/.activity")
    

    它在ADB中工作,但在Native应用程序中不起作用。

    新想法: 因为B应用程序只需要做一个简单的文件传输工作(OTA文件下载)。 所以我认为我需要让B应用程序成为一项服务。并在系统启动时启动它。然后一个应用程序没有调用B但是向B.广播了一个意图:

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

    但仍然无效。

2 个答案:

答案 0 :(得分:0)

您应该使用JNI回调来向应用程序A询问应用程序A发送开始意图。

JNI回调:

JNI - How to callback from C++ or C to Java?

向应用程序B发送开始意图:

Open another application from your own (intent)

答案 1 :(得分:0)

由于AB是本机Linux进程,因此您可以使用

从A启动B

systemfork / exec api。

在A的代码中 system("/path/to/b")

或代码A fork()代码,exec("/path/to/b", ...)