我采用了 Code Aurora 的 FM Radio 代码并与我的 Android Gingerbread 代码库合并。
FM 应用程序框架尝试使用 JNI 访问 fm 无线电设备 ( /dev/radio ),该 JNI 在名为 android_hardware_fm.cpp 的文件中实现。该文件中有一个函数尝试在读/写模式下使用 open() 获取设备节点的文件描述符。但是,调用失败并出现错误代码 -13 : Permission denied。
我还制作了一个小的 C 可执行文件,它试图打开 /dev/radio 文件(在 RDWR 模式下),打印它的 fd 并关闭它。它从目标系统中的 /system/bin 运行并显示有效的 fd。
顺便说一句,JNI 实现是 android 核心库的一部分。它位于 frameworks/base/core/jni 并作为 libandroid_runtime.so 的一部分编译
有什么想法/解决方案吗?提前致谢。