从Android-NDK应用程序发送意图

时间:2012-04-03 09:47:59

标签: android-intent android-ndk

我在android下用C ++编写本机应用程序,我需要广播一些意图。这可能吗?

如果您打算将我指向JNI,请告诉我更多细节,因为我不确定如何做到这一点:)


如果不可能,我将做的是在NDK守护程序和Java-Android-Service之间使用命名管道。 NDK守护程序将写入命名管道,然后Java-Android-Service将发出意图。

有更好的方法吗?

2 个答案:

答案 0 :(得分:8)

您可以运行am命令将Intent发送到活动或服务。

const char *cmd = "am startservice -a %s"
                  " --ei ars_flag 2 --ei invitationType %d"
                  " --ei mode 1 --es ars_gadget_uuid \"%s\""
                  " --ei ars_conn_handle %d"
                  " --es ars_user_uuid \"%s\" --es ars_username \"%s\"";
sprintf (cmdbuffer, cmd, ...);
system (cmdbuffer);

答案 1 :(得分:2)

您不能本地发送Intents,这是当前NDK的已知限制(可能将来会实现)。

所以你需要做的就是使用JNI在你想要广播Intent的时候向Java发出upcall(google JNI和upcall,如果你需要知道这是怎么做的),并且拥有创建和发送的Java代码意图。因此,如果您通过Java Activity启动应用程序并通过JNI调用本机代码,只需在Java中实现另一个可以接收上行调用的方法。我不知道你知道多少JNI,但维基百科的信息应该让你开始得足够好。