在 native 调用中,我尝试打开("/dev/video4", O_RDWR)
但我收到错误号 EACCES 13“权限被拒绝”。
如果我在同一台 Android 主机上的可执行文件中运行相同的代码*,作为我在上面运行的已安装应用程序的相同 UID,它工作正常。 (* 细微差别,例如 main()
而不是 Java_com_test_testOpen()
)
我试过 chmod 666/dev/video4
仍然得到 EACCES,这特别奇怪。
为什么相同的代码,在相同的主机上,作为相同的用户,在通过 JNI 调用时给出 EACCESS,而在称为独立可执行文件?
测试设备已获得 root 权限并运行 Cyanogenmod 12.1 (API 22),我的目标是 >= API 21 (5.0 Lollipop) 在已获得 root 权限的设备上。感谢您的帮助。
最佳答案
由于您在从 Android Java 应用程序运行代码时遇到错误,我猜您缺少权限。如果我没记错的话,这是你试图访问的相机,所以如果你添加:
<uses-permission android:name="android.permission.CAMERA" />
到您的 AndroidManifest.xml,您的应用程序应该可以正常运行。
关于Android NDK open() 设备权限被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37486349/