Android 6.0模拟器程序无法正常工作

时间:2018-07-03 02:13:03

标签: java android linux

我在模拟器上运行Android-6.0.0_r41版本,并且Linux内核是android-goldfish-3.4。在我的应用程序中,我需要读取/ system,/ proc,/ sys等文件,并且我知道我无法使用Java IO进行读取,因此我尝试使用runtime.getRuntime()。exec()方法读取这些文件。

我已经植根了仿真器,并禁用了selinux(setenforce 0)。但是我仍然无法读取这些文件。例如,我想通过cat命令读取/sys/kernel/security/ima/ascii_runtime_measurments。我可以在adb shell中读取此文件,但无法使用exec()方法读取。以下是我用来读取此文件的代码。 strNULL,我尝试了sleep,process.waitfor()方法,但都失败了。

此问题是由Android 6.0引起的吗?如果选择Android 5.0,是否可以读取/ data以外的文件?

 private String checkexist() {
        Process process;
        String val = "";
        try {
            process = Runtime.getRuntime().exec("su");
            OutputStream os = process.getOutputStream();
            process.getErrorStream();
            InputStream input = process.getInputStream();
            os.write(("cat /sys/kernel/security/ima/ascii_runtime_measurments\n").getBytes());
            os.write("exit\n".getBytes());
            os.flush();
            os.close();
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(input));
            while (true) {
                String str = bufferedReader.readLine();
                if (str == null)
                    break;
                val = str;
            }
        } catch (Exception e) {
            Toast.makeText(this, "exist\n" + e.toString(), Toast.LENGTH_LONG).show();
        }
        return val;
    }

0 个答案:

没有答案