2

I set my permissions in AndroidManifest:

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

And it's my java code:

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);
        }

It works without any problems on KitKat. But not in ICS 4.0.4. When I try to run this on ICS, server starts without any problems. But when I try to access server on port 8080, it throws exception " Error: open failed: EACCES (Permission denied)" in method Serve and there is no data returned as response.

What's the problem? Am I missing some permissions? But on KitKat everything works, so..?

user1209216
  • 7,404
  • 12
  • 60
  • 123

0 Answers0