执行Root命令并读取输出Xamarin
我无法从根目录读取文件。 怎么做? 我使用这个命令来阅读执行Root命令并读取输出Xamarin,xamarin,command,root,execute,su,Xamarin,Command,Root,Execute,Su,我无法从根目录读取文件。 怎么做? 我使用这个命令来阅读 Java.Lang.Process suProcess = Java.Lang.Runtime.GetRuntime().Exec(new string[] { "su", "-c", "cat /data/misc/vpn/state" }); 但是我如何得到答案呢?Java.Lang.Process类有一些有趣的流,您需要从中阅读输入流和错误流 首先,在创建流程之后,您需要等待它。这可以通过.WaitForAsync()很好地完成
Java.Lang.Process suProcess = Java.Lang.Runtime.GetRuntime().Exec(new string[] { "su", "-c", "cat /data/misc/vpn/state" });
但是我如何得到答案呢?Java.Lang.Process类有一些有趣的
流,您需要从中阅读<代码>输入流
和错误流
首先,在创建流程之后,您需要等待它。这可以通过.WaitForAsync()
很好地完成。这将允许您回答请求根权限时通常出现的任何对话框等
当.WaitForAsync()
返回时,它会给您一个退出代码。0表示一切正常任何其他退出代码表示可能有错误
在退出代码为0的情况下,您可能可以从InputStream
中读取并获取所需内容
因此,您的代码最终会看起来像:
异步任务GetVpnStatus()
{
var process=Java.Lang.Runtime.GetRuntime().Exec(新字符串[]{“su”、“-c”、“cat/data/misc/vpn/state”});
var exitCode=wait process.WaitForAsync();
if(exitCode==0)
{
使用(var outputStreamReader=newstreamreader(process.InputStream))
返回等待输出StreamReader.ReadToEndAsync();
}
if(process.ErrorStream!=null)
{
使用(var errorStreamReader=newstreamreader(process.ErrorStream))
返回wait await errorStreamReader.ReadToEndAsync();
}
返回null;
}
其结果将类似于
ppp0
10.0.0.42/32
0.0.0.0/0
105.112.3.1 123.234.12.55