我在android下用C ++编写本机应用程序,我需要广播一些意图。这可能吗?
如果您打算将我指向JNI,请告诉我更多细节,因为我不确定如何做到这一点:)
如果不可能,我将做的是在NDK守护程序和Java-Android-Service之间使用命名管道。 NDK守护程序将写入命名管道,然后Java-Android-Service将发出意图。
有更好的方法吗?
答案 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,但维基百科的信息应该让你开始得足够好。