Отправка намерений из приложения Android-NDK - PullRequest
5 голосов
/ 03 апреля 2012

Я пишу нативное приложение на C ++ под Android, и мне нужно передать некоторые намерения.Возможно ли это?

Если вы собираетесь указать мне на JNI, пожалуйста, дайте мне больше деталей, так как я не уверен, как это сделать:)


Что я буду делатьесли это невозможно, наличие именованного канала между демоном NDK и службой Java-Android.NDK-демон выполнит запись в именованный канал, а затем Java-Android-Service выдаст намерение.

Есть ли лучший способ?

Ответы [ 2 ]

8 голосов
/ 10 июня 2012

Существует команда am, которую можно запустить, которая отправит Интенты в Действия или Службы.

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);
2 голосов
/ 04 апреля 2012

Вы не можете отправлять Intents изначально, это известное ограничение текущего NDK (возможно, оно будет реализовано в будущем).

Итак, вам нужно использовать JNI для вызоваJava всякий раз, когда вы хотите передать Intent (Google JNI и upcall, если вам нужно знать, как это делается), и иметь Java-код, который создает и отправляет Intent.Поэтому, если вы запускаете свое приложение через Java Activity и вызываете нативный код через JNI, просто реализуйте в Java другой метод, который может получить ваш вызов.Я не знаю, сколько JNI вы знаете, но информация из Википедии должна помочь вам начать достаточно хорошо.

...