如您所见,我正在使用以下代码构建一个简单的Root explorer应用程序:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if(!(requestRoot()))
Toast.makeText(this.getActivity(), "Could Not Get Root!", Toast.LENGTH_SHORT).show();
else
Toast.makeText(this.getActivity(), "Root Found!", Toast.LENGTH_SHORT).show();
getDir("/"); //=>OK
getDir("/data"); //=>NOT OK
getDir("/data/"); //=>NOT OK
}
private void getDir(String dirPath)
{
getActivity().getActionBar().setTitle("Location: " + dirPath);
item = new ArrayList<String>();
try {
Process p = Runtime.getRuntime().exec("ls "+dirPath);
BufferedReader in = new BufferedReader(
new InputStreamReader(p.getInputStream()));
String line;
while ((line = in.readLine()) != null) {
item.add(line);
Log.e(dirPath, dirPath +" => "+ line);
}
} catch (IOException e) {
e.printStackTrace();
}
}
问题是getDir("/");
为我提供了所有预期的结果(包含数据的文件列表),但getDir("/data");
没有给出任何结果或错误......
非常感谢有关问题的任何线索。
编辑: 我也试过
进程p = Runtime.getRuntime()。exec(“sudo ls / data”);
答案 0 :(得分:1)
答案:
Process p = Runtime.getRuntime().exec(new String[] {"su", "-c", "ls /data/data"});