我有一段c代码(不是ndk应用程序,纯c代码)
我正在尝试向我的应用程序发送广播,
但我得到的是:
Broadcasting: Intent { act=com.example.A_NAME }
我从来没有收到完整的信息。
我运行的C代码是:
char broadcast[200];
sprintf(broadcast, "sh %s","com.example.A_NAME");
FILE* pipe = popen(broadcast, "r");
char buffer[128];
char result[1500];
while(!feof(pipe)) {
if(fgets(buffer, 128, pipe) != NULL)
sprintf(result, "%s%s", result,buffer);
}
pclose(pipe);
对于一个简单的bash脚本,我可以让它工作。从C开始,我尝试了
system()
,execl()
等,但什么都没有。我还尝试将命令放入脚本文件中,并执行脚本文件。
如果我从adb shell执行脚本,它就会工作。如果我从C代码开始,它就不工作了。
最佳答案
浪费了一天之后,我开始工作了:
system("am broadcast -a com.example.DAMN_BROADCAST --user 0");
谢谢你浪费我一天时间。
注:
我试过的所有命令都应该起作用。我只编写了
--user 0
命令,因为它是最简单的命令,而且可以完成任务(只要您输入system
)。--user 0
、execl
和execlp
也应该可以工作。关于android - 从C代码发送广播,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24581245/