我有一个安装了su二进制文件的Android手机,它可以工作,这意味着我可以将shell加入手机并运行'su'命令,我将成为root用户.
当我尝试通过代码运行命令时,无论我尝试运行哪种方式,它似乎都不起作用.我尝试了以下命令的许多不同变体.
Runtime.getRuntime().exec("su -c ps");
Run Code Online (Sandbox Code Playgroud)
当我在另一个安装了Superuser.apk或SuperSU.apk应用程序的root手机上运行此命令时,我会看到一个对话框,询问是否要允许它以root权限运行.当apks不存在时,它永远不会询问并且命令永远不会起作用.
我尝试在第一部手机上安装apks,但他们似乎什么也没做.所以,正如原始问题所问 - >有没有办法在没有安装SU应用程序的情况下从应用程序内运行提升命令?
嗨,我通过两个管道之间的管道发送数据时收到此错误 parcelFileDescriptors
java.io.IOException: write failed: EPIPE (Broken pipe)
at libcore.io.IoBridge.write(IoBridge.java:455)
at java.io.FileOutputStream.write(FileOutputStream.java:187)
at com.google.common.io.ByteStreams.copy(ByteStreams.java:179)
at cz.simekadam.android.securedfileprovider.SecuredFileProvider$Pipe.run(SecuredFileProvider.java:161)
Caused by: libcore.io.ErrnoException: write failed: EPIPE (Broken pipe)
at libcore.io.Posix.writeBytes(Native Method)
at libcore.io.Posix.write(Posix.java:202)
at libcore.io.BlockGuardOs.write(BlockGuardOs.java:197)
at libcore.io.IoBridge.write(IoBridge.java:450)
at java.io.FileOutputStream.write(FileOutputStream.java:187)
at com.google.common.io.ByteStreams.copy(ByteStreams.java:179)
at cz.simekadam.android.securedfileprovider.SecuredFileProvider$Pipe.run(SecuredFileProvider.java:161)
Run Code Online (Sandbox Code Playgroud)
这就是我复制数据的方式.
static class PipeThread extends Thread {
InputStream input;
OutputStream out;
PipeThread(InputStream inputStream, OutputStream out) {
this.input=inputStream;
this.out=out;
}
@Override
public void run() {
try {
ByteStreams.copy(input, out);
input.close();
out.close();
} catch (IOException e) {
Log.e(getClass().getSimpleName(),
"Exception transferring file", e);
} …Run Code Online (Sandbox Code Playgroud)