我在 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 上一切正常,所以..?