Android 获取系统状态(ro或rw)
我想获得系统的状态,然后显示一个对话框(此时正在祝酒,因此代码很短),并允许用户根据当前状态挂载它rw或ro 我使用了下面的代码,但它不起作用,我不明白为什么它不起作用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
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
状态 好主意我没想到,那应该行的谢谢你的建议