我无法从根目录读取文件。 怎么做? 我使用命令来读取
Java.Lang.Process suProcess = Java.Lang.Runtime.GetRuntime().Exec(new string[] { "su", "-c", "cat /data/misc/vpn/state" });
但是我怎样才能得到答案呢?
最佳答案
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
关于xamarin - 执行根命令并读取输出 Xamarin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50934376/