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..?