【发布时间】:2015-03-07 02:42:26
【问题描述】:
在浏览了几篇帖子后,我发现我可以使用以下代码行发送意图(第二行用于调试):
int ret = system("am broadcast -a android.intent.action.MIKE_ACCESSED --user 0");
__android_log_print(ANDROID_LOG_DEBUG, "gxp18", "Shell command returned %i", ret);
不幸的是,这总是返回(无论系统中使用什么命令(“...”)):
Shell 命令返回 32512
有趣的是,我可以通过 adb 成功发送意图:
adb shell am broadcast -a android.intent.action.MIKE_ACCESSED
注意!我没有使用 NDK。我在帖子中报告的那段代码是对 Android Framework 中部分代码的修改。特别是,它是其中一项 Android 服务的一部分。我正在使用 AOSP 并修改部分源代码。
【问题讨论】:
-
我正在破解 android 框架中的一些系统服务,我需要将意图从 c++ 发送到 java。还有其他想法如何在用 c++ 编写的一部分代码和用 java 编写的另一部分代码之间发出这种信号吗?
-
“黑客”。你真的应该在 Android 的 API 中使用
Intents。从 Android 的 NDK(JNI) 或 Android 的 SDK(Java) 发送 Intent 不会对您尝试做的事情产生影响,因为它来自相同的 PID。请参阅@alijandro 的回答。 -
好的。不知道你想表达什么。您能提出解决方案吗?
-
您使用的是 Android NDK 吗?您是在创建要在 Android 上运行的二进制文件,还是将 JNI 添加到 Android 应用程序? Adb Shell 之所以有效,是因为它具有正确的权限。
-
@JaredBurrows 我没有使用 NDK。我在帖子中报告的那段代码是对 Android Framework 中部分代码的修改。特别是,它是其中一项 Android 服务的一部分。我正在使用 AOSP 并修改部分源代码。谢谢。
标签: java android c++ android-intent system-calls