Java Android授予应用程序根访问权限以打开端口上的套接字<;1025
为了打开端口<1025上的套接字,我需要根访问权限。我该如何给我的申请这个特权?我知道我可以在shell中运行su命令来获得根访问权限,但是这就是在<1025的端口上打开套接字所需的全部操作吗?或者我需要运行某种命令,比如suopensocket0.0.0.0:80之类的?我很困惑,因为这方面的资源太少了。谷歌不预根所有设备的目的是什么 下面是我知道我可以做什么来获得root访问权限 编辑:我刚刚写了这个:Java Android授予应用程序根访问权限以打开端口上的套接字<;1025,java,android,Java,Android,为了打开端口
public class RootTestActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button button = (Button)findViewById(R.id.button);
button.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
String cmds[] = {"su", "-c", "ls /system/app"};
Shell shell = new Shell();
String text = shell.sendShellCommand(cmds);
TextView textView = (TextView)findViewById(R.id.textView);
textView.setText(text);
try {
ServerSocket socket = new ServerSocket(80);
Log.d("Root", "Opened socket on port 80!!!");
}catch(Exception e) {
Log.d("Root", "Failed to open socket on port 80!!!");
e.printStackTrace();
}
}
});
}
}
它的作用是在单击按钮时运行命令su、-c,然后运行ls/system/app。然后它得到输出并显示在文本视图上(这实际上是有效的。我得到了su提示并选择了accept,它在/system/apps/中列出了所有内容)。但在那之后,我试图在端口80上打开一个套接字,它仍然说权限被拒绝。应用程序具有根访问权限,但仍然无法打开套接字!在logcat中,它打印出“未能打开端口80上的套接字!!!”,正如我告诉它的那样,当异常被捕获时应该这样做。在没有被拒绝的许可的情况下,如何打开端口80上的套接字?根据
我以root用户身份运行此命令:
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
成功了!我在端口8080上打开了一个插座,当我在端口80上连接到我的手机时,所有流量都被重定向到8080!哇 不要那样做。使用类似于
8080
之类的端口。可能是