android中一般获取到系统的一些参数等都比较麻烦,由于android的内核是linux,获取到shell,一切操作都显得简单多了。
try {
Process p = Runtime.getRuntime().exec(
"ll /storage/external_storage/sda1");
String s="";
BufferedReader in = new BufferedReader(new InputStreamReader(
p.getInputStream()));
String line = null;
while ((line = in.readLine()) != null) {
s += line + "\n";
}
if(s!=null){
Toast.makeText(MainActivity.this, s, 0).show();
test.setText(s);
}
} catch (IOException e) {
e.printStackTrace();
}
如上所示,通Runtime.getRuntime()直接调用系统命令环境,通过Linux命令的方式获取系统信息,但此种方式的权限有限,一般只能读取sdcard里面的文件信息。
public String runRootCommand(String[] command){
Process process =null;
DataOutputStream os =null;
String s="";
try{
process =Runtime.getRuntime().exec("su");
os =new DataOutputStream(process.getOutputStream());
for(int i=0;i<command.length;i++)
{
os.writeBytes(command[i]+"\n");
}
os.writeBytes("exit\n");
os.flush();
process.waitFor();
}catch(Exception e){
Log.i(“exception:”e.getMessage());
return e.getMessage();
}finally{
try{
if(os !=null)
os.close();
process.destroy();
}catch(Exception e){
e.printStackTrace();
}
}
return s;
}
通过su获取系统root权限,然后通过流的形式,写入命令进行操作。通过这种方式可以轻松的写入系统命令对android系统进行操作。