Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android授予应用程序根访问权限以打开端口上的套接字<;1025_Java_Android - Fatal编程技术网

Java Android授予应用程序根访问权限以打开端口上的套接字<;1025

Java Android授予应用程序根访问权限以打开端口上的套接字<;1025,java,android,Java,Android,为了打开端口

为了打开端口<1025上的套接字,我需要根访问权限。我该如何给我的申请这个特权?我知道我可以在shell中运行su命令来获得根访问权限,但是这就是在<1025的端口上打开套接字所需的全部操作吗?或者我需要运行某种命令,比如suopensocket0.0.0.0:80之类的?我很困惑,因为这方面的资源太少了。谷歌不预根所有设备的目的是什么

下面是我知道我可以做什么来获得root访问权限

编辑:我刚刚写了这个:

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
之类的端口。可能是