Cyanogenmod更改系统文件的权限

时间:2015-06-20 13:39:37

标签: android permissions cyanogenmod

我为ROOT安卓设备构建了一个应用程序。它是开源的,源代码是here。 我的问题是,当代码试图读取文件" / sys / block / mmcblk0 / queue / scheduler"我收到此错误

06-20 16:17:10.190: W/System.err(7458): java.io.FileNotFoundException: /sys/block/mmcblk0/queue/scheduler: open failed: EACCES (Permission denied)

这种情况只发生在cyanogenmod操作系统中,我也尝试过使用碳OS,并且工作正常! 请注意,当我通过adb更改权限时,我无法读取文件。

当我以root身份通过adb shell连接到我的设备时,点击以下命令

  

cat / sys / block / mmcblk0 / queue / scheduler

我得到了这个输出

noop deadline [row] cfq 

清单

...
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.ACCESS_SUPERUSER" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!--These permissions needed for ads-->
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
...

读取内容文件的功能

public static String getStringOfFile(String file) {
    String cpuFreq = "";
    RandomAccessFile reader;
    try {
        reader = new RandomAccessFile(file, "r");
        cpuFreq = reader.readLine();
        reader.close();
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    return cpuFreq;
}

1 个答案:

答案 0 :(得分:0)

您只是因为the file does not exist而收到错误。看起来您正在尝试访问某些调度程序文件,但这些文件的位置通常取决于内核实现。您可以确保在所有内核的同一位置找不到该特定文件,也不会出现在每台设备上。