Android NDK open() 设备权限被拒绝

标签 android permissions android-ndk java-native-interface v4l2

在 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/

相关文章:

java - 如果模型包含另一个列表模型,如何设计数据库 SQLITE

android - Xamarin - Android 谷歌地图显示空白网格 : Map is not loading

c - linux mkdir函数无法授予完全权限

php - MySQL/PHP : Looking for matching records from three tables(Forum permissions)

Android CALL_PHONE 权限问题

android - 在我的应用程序中更改设备语言

android - 如何单击或点击 TextView 文本

android - 更改为新 Activity 时 Android Native 崩溃

android - 无法进行渲染(android、SurfaceView、ndk、ANativeWindow)

Android NDK/JNI - 对自定义头文件中定义的函数的 undefined reference