我有一段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 0execlexeclp也应该可以工作。

关于android - 从C代码发送广播,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24581245/

10-10 21:46