Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 获取系统状态(ro或rw)_Android - Fatal编程技术网

Android 获取系统状态(ro或rw)

Android 获取系统状态(ro或rw),android,Android,我想获得系统的状态,然后显示一个对话框(此时正在祝酒,因此代码很短),并允许用户根据当前状态挂载它rw或ro 我使用了下面的代码,但它不起作用,我不明白为什么它不起作用 File system = new File("/system"); if(system.canWrite()){ Toast.makeText(Utilities.this, "System is RW", Toast.LENGTH_SHORT).show(); }else{ Toast.makeText(Ut

我想获得系统的状态,然后显示一个对话框(此时正在祝酒,因此代码很短),并允许用户根据当前状态挂载它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();
}
如何做到这一点

==========================================================================================================

以下是解析/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;
    }
private boolean readwritefile(){
File mountFile=新文件(“/proc/mounts”);
StringBuilder procData=新的StringBuilder();
if(mountFile.exists()){
试一试{
FileInputStream fis=新的FileInputStream(mountFile.toString());
DataInputStream dis=新的DataInputStream(fis);
BufferedReader br=新的BufferedReader(新的InputStreamReader(dis));
字符串数据;
而((data=br.readLine())!=null){
procData.append(数据+“\n”);
}
}捕获(例外e){
e、 printStackTrace();
返回false;
}
if(procData.toString()!=null){
字符串[]tmp=procData.toString().split(“\n”);
对于(int x=0;x
这是因为您查询用户的权限。即使将
/system
重新安装为
rw
,也不意味着您的应用程序将获得对它的“写”访问权


作为替代解决方案,读取
/proc/mounts
文件并从中解析
ro
/
rw
状态

好主意我没想到,那应该行的谢谢你的建议