我有一段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代码执行此操作,则无效。
答案 0 :(得分:3)
浪费了一天后,我开始工作了:
system("am broadcast -a com.example.DAMN_BROADCAST --user 0");
--user 0
,谢谢你浪费我一天。
注意:强>
我尝试过的所有命令都应该有效。我只编写了system
命令,因为它是最简单的命令并完成工作(只要你放--user 0
)。 <{1}},execl
和execlp
也可以正常运作。