获得系统状态(ro或rw)

时间:2011-05-30 21:34:14

标签: android

我想获得系统的状态然后显示一个对话框(此时代码为Toast,以便代码很短)并允许用户根据当前状态安装rw或ro。

我使用了以下代码,但它没有用,我很困惑为什么它不起作用。

File system = new File("/system");
if(system.canWrite()){
    Toast.makeText(Utilities.this, "System is RW", Toast.LENGTH_SHORT).show();
}else{
    Toast.makeText(Utilities.this, "System is RO", Toast.LENGTH_SHORT).show();
}

如何做到这一点?

=============================== EDIT ============ ===================

以下是为未来搜索者解析/ proc / mounts后的最终代码

private boolean readReadWriteFile() {
        File mountFile = new File("/proc/mounts");
        StringBuilder procData = new StringBuilder();
        if(mountFile.exists()) {
            try {
                FileInputStream fis = new FileInputStream(mountFile.toString());
                DataInputStream dis = new DataInputStream(fis);
                BufferedReader br = new BufferedReader(new InputStreamReader(dis));
                String data;
                while((data = br.readLine()) != null) {
                    procData.append(data + "\n");               
                }
            } catch (Exception e) {
                e.printStackTrace();
                return false;
            }
            if(procData.toString() != null) {
                String[] tmp = procData.toString().split("\n");
                for(int x = 0; x < tmp.length; x++) {
                   //Kept simple here on purpose different devices have different blocks
                    if(tmp[x].contains("/dev/block") && tmp[x].contains("/system")) {
                        if(tmp[x].contains("rw")) {
                            Toast.makeText(Activity.this, "System is rw", Toast.LENGTH_LONG).show();
                            return true;
                        } else if(tmp[x].contains("ro")) {
                            Toast.makeText(Activity.this, "System is ro", Toast.LENGTH_LONG).show();
                            return false;
                        } else {
                            return false;
                        }
                    }
                }
            }
        }
        return false;
    }

1 个答案:

答案 0 :(得分:1)

那是因为您查询了用户的权限。即使将/system重新安装为rw,也不意味着您的应用程序将获得“写入”访问权限。

作为替代解决方案,请阅读/proc/mounts文件并从那里解析ro / rw状态。