В значительной степени, вы «все делаете неправильно».Но если вы хотите сделать то, что, по-видимому, пытаетесь сделать независимо от ограничений, и хотите быть постоянно привязанными к работе под оболочкой adb , тогда есть способ.
По существу:
- У вас есть команда оболочки, которая работает.
- У вас есть программа, которая хочет выполнить эту команду.
- Выполнениеконтексты программы и команды оболочки совпадают
Это задание для system()
syscall
#include <stdlib.h>
int system(const char *command);
Так что вы просто сделаете что-то вроде
system("am start -d file:///path/to/someimage/someimage.jpg -t image/jpg -a android.intent.action.VIEW)
... предположительно, где командная строка - это то, что вы создаете во время выполнения, заполняя имя файла и т. Д.Android, если только вы не хотите работать через adb.Чтобы добраться туда, где вы должны быть , сложнее будет превратить ваш исполняемый файл в подпрограмму jni или, возможно, вызвать ее как подпроцесс.И, как подпроцесс, вы, вероятно, не сможете отправлять Intents, но вы все равно можете связываться с владельцем приложения с помощью каналов или сокетов, и он может отображать изображение или отправлять Intent от вашего имени, чтобы что-то еще было.