java - setenforce 0 后无法打开设备节点

标签 java android android-source selinux seandroid

我试图从服务中路径 /dev/graphics/fb0 的设备文件中获取一些数据,你有 root 权限并执行 chmod 777 命令,然后我收到“权限被拒绝”错误。
然后我执行:setenforce 0,错误消失,但文件大小仍然为零

        RandomAccessFile raf = new RandomAccessFile("/dev/graphics/fb0", "rw");
        FileChannel fc = raf.getChannel();
        logText.setText(raf.length() + " "); // length is 0
        MappedByteBuffer mbb = fc.map(FileChannel.MapMode.PRIVATE, 0, 1024 * 1920 * 4);
        raf.close();

        FileInputStream fileInputStream = new FileInputStream("/dev/graphics/fb0");
        logText.setText(fileInputStream.available() + " "); // available is still 0

最佳答案

你不应该在 framebuffer AFAIK 上进行正常的读取

您需要使用 ioctl 系统调用来读/写它。查看一些示例:

https://android.googlesource.com/platform/system/extras/+/donut-release/tests/framebuffer/fb_test.c

http://betteros.org/tut/graphics1.php

关于java - setenforce 0 后无法打开设备节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64993345/

相关文章:

android - 通过java重新挂载An​​droid文件系统

java - 这个 Java 语法有什么问题?

Java执行命令但不返回值

java - 在我的类(class)中找不到 ( ) 的 setter /字段

java - Android:如何在不提升我的 SDK 版本的情况下停止支持平板电脑?

android - 编译ndk库

android - 使用Gradle构建应用程序构建AOSP项目

java - 如何保持溢出菜单打开

java - Hazelcast 集群和 Replication 映射同步

android - 使用 Android Studio 1.4 时菜单项不会显示在操作栏上