我想知道如何在android上为守护进程adb启用端口5555 ?基本上,我一直在用一个旧路由器设置一个家庭网络,这样我就可以保持所有设备的连接。但这里有一个问题:我不想每次都要连接USB来启用这些端口,这会破坏整个目的。
我想知道如何通过单击按钮以编程方式转发使用Java甚至JNI的端口?我已经看到telnetd
应用程序这样做了。所以我想自己来做。我该如何做到这一点?我已经尝试了一个函数,它是:
public void openPort()
{
try
{
java.lang.Process process = Runtime.getRuntime().exec("setprop service.adb.tcp.port 5555");
int exitCode = process.waitFor();
if (exitCode != 0)
{
throw new java.io.IOException("Command exited with " + exitCode);
}
Runtime.getRuntime().exec("adb tcpip 5555");
Toast.makeText(this, "Listening on port "+ port + "...", Toast.LENGTH_LONG).show();
}
catch (Exception ex)
{
ex.printStackTrace();
Toast.makeText(this, "An error has occurred: " + ex, Toast.LENGTH_LONG).show();
port++;
openPort();
}
}
现在它永远不会到达异常,它说在端口上打开,但是当我通过网络连接时,它不工作。我该怎么做呢?
请记住,该应用程序被移动到系统应用程序与幸运补丁,所以它是一个系统应用程序。如果这很重要。
(代表OP发布解决方案)。
注意:需要Root。
我稍微改了一下。现在可以了:
public void openPort()
{
try
{
String cmds[] = {
"setprop service.adb.tcp.port 2222",
"stop adbd",
"start adbd"
};
for (int i = 0; i < cmds.length; i++)
{
java.lang.Process process = Runtime.getRuntime().exec(cmds[i]);
int exitCode = process.waitFor();
if (exitCode != 0)
{
throw new java.io.IOException("Command exited with " + exitCode);
}
}
Toast.makeText(this, "Listening on port 2222...", Toast.LENGTH_LONG).show();
}
catch (Exception ex)
{
ex.printStackTrace();
Toast.makeText(this, "An error has occurred: " + ex, Toast.LENGTH_LONG).show();
openPort();
}
}
我写了一个简单的类来执行来自App的Shell命令
https://gist.github.com/ricardojlrufino/61dbc1e9a8120862791e71287b17fef8 Comands
String return = Shell.execForResult("ls");
Shell.execScript (res.openRawResource (R.raw.cpu_script));
开始亚行
Shell.startADB (5555),