我无法从根目录读取文件。 怎么做? 我使用命令阅读
Java.Lang.Process suProcess = Java.Lang.Runtime.GetRuntime().Exec(new string[] { "su", "-c", "cat /data/misc/vpn/state" });
但是我如何得到答案?
答案 0 :(得分:0)
Java.Lang.Process
类具有一些您需要阅读的有趣的Streams
。 InputStream
和ErrorStream
。
首先,在创建过程之后,您将需要等待。使用.WaitForAsync()
可以很好地做到这一点。这将允许您回答在询问root权限时通常出现的任何对话框等。
当.WaitForAsync()
返回时,将为您提供退出代码。 0表示一切正常,其他退出代码则表示可能有错误。
对于退出代码0,您可能可以从InputStream
中读取并获得所需的内容。
所以您的代码最终看起来像:
async Task<string> GetVpnStatus()
{
var process = Java.Lang.Runtime.GetRuntime().Exec(new string[] { "su", "-c", "cat /data/misc/vpn/state" });
var exitCode = await process.WaitForAsync();
if (exitCode == 0)
{
using (var outputStreamReader = new StreamReader(process.InputStream))
return await outputStreamReader.ReadToEndAsync();
}
if (process.ErrorStream != null)
{
using (var errorStreamReader = new StreamReader(process.ErrorStream))
return await errorStreamReader.ReadToEndAsync();
}
return null;
}
其结果将类似于
ppp0
10.0.0.42/32
0.0.0.0/0
105.112.3.1 123.234.12.55