从C代码发送广播

时间:2014-07-04 22:17:14

标签: android c android-ndk broadcast

我有一段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代码执行此操作,则无效。

1 个答案:

答案 0 :(得分:3)

浪费了一天后,我开始工作了:

system("am broadcast -a com.example.DAMN_BROADCAST --user 0");

--user 0,谢谢你浪费我一天。

注意: 我尝试过的所有命令都应该有效。我只编写了system命令,因为它是最简单的命令并完成工作(只要你放--user 0)。 <{1}},execlexeclp也可以正常运作。