2

我在 AndroidManifest 中设置了我的权限:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>

这是我的java代码:

public class AndroidWebServerActivity extends Activity
{
    private WebServer server;

    /**
     * Called when the activity is first created.
     */
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        server = new WebServer();
        try
        {
            server.start();
        } catch (IOException ioe)
        {
            Log.w("Httpd", "The server could not start.");
        }
        Log.w("Httpd", "Web server initialized.");
    }


    // DON'T FORGET to stop the server
    @Override
    public void onDestroy()
    {
        super.onDestroy();
        if (server != null)
            server.stop();
    }

    private class WebServer extends NanoHTTPD
    {

        public WebServer()
        {
            super(8080);
        }

        @Override
        public Response serve(String uri, Method method,
                              Map<String, String> header,
                              Map<String, String> parameters,
                              Map<String, String> files)
        {


            String answer = "<form name=\"input\" action=\"restart\" method=\"get\">\n" +
                    "Reset polaczenia danych<br>\n" +
                    "<input type=\"submit\" value=\"Zresetuj polaczenie\">\n" +
                    "</form>";

            if (uri.startsWith("/restart"))
            {
                boolean result = ResetMobileData();

                if (result == true)
                    answer = "<font color=\"green\">Polaczenie zrestartowane</font>";
                else
                    answer = "<font color=\"red\">Resetowanie polaczenia nieudane!</font>";
            }
            //else
            //{
            //    answer = "Brak komendy";
            //}


            return new NanoHTTPD.Response(answer);
        }

它在 KitKat 上没有任何问题。但在 ICS 4.0.4 中没有。当我尝试在 ICS 上运行它时,服务器启动时没有任何问题。但是,当我尝试访问端口 8080 上的服务器时,它在方法 Serve 中抛出异常“错误:打开失败:EACCES(权限被拒绝)”并且没有数据作为响应返回。

有什么问题?我是否缺少一些权限?但是在 KitKat 上一切正常,所以..?

4

0 回答 0