我有这个网络服务器类:
private class WebServer extends NanoHTTPD {
public WebServer()
{
super(PORT);
Log.i("myTag", "THIS IS RUNNING2");
}
@Override
public Response serve(String uri, Method method, Map<String, String> header, Map<String, String> parameters, Map<String, String> files) {
Log.i("myTag", "THIS IS RUNNING3");
String answer = "";
try {
// Open file from SD Card
File root = Environment.getExternalStorageDirectory();
FileReader index = new FileReader(root.getAbsolutePath() + "/www/index.html");
BufferedReader reader = new BufferedReader(index);
String line = "";
while ((line = reader.readLine()) != null) {
answer += line;
}
reader.close();
} catch(IOException ioe) {
Log.w("httpd", answer);
}
return new NanoHTTPD.Response(answer);
}
}
这是我在网上找到的 ( http://devnote1.blogspot.com/2016/05/android-studio-nanohttpd.html )。我按照教程学习了 T。
我在标签“myTag”下设置了 3 个应该在 logcat 中可见的日志,我注意到 serve() 方法中的第三个日志没有输出。在我的 android 工作室中,serve 方法有一条线贯穿其中,工具提示说:“覆盖‘import fi.iki.elonen.NanoHTTPD’中不推荐使用的方法。有人能帮我解决这个问题吗?
我正在使用这个依赖:
compile 'com.nanohttpd:nanohttpd-webserver:2.1.1'
当我进入浏览器并输入 localhost:8080 时,它并没有给我一个“无法访问站点”的错误,所以我相信某些网络服务器正在运行。任何帮助表示赞赏。谢谢
最佳答案
问题出在权限上。您必须在运行时允许权限: https://developer.android.com/training/permissions/requesting.html
如果你只是在 list 中设置它,你仍然会得到拒绝的权限。
int permissionCheck = ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE);
if (permissionCheck == 0) {
Log.i("perm", "granted");
} else if (permissionCheck == -1){
Log.i("perm", "denied");
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE);
}
你必须重写它:
@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
Log.i("perm", "request code = " + requestCode);
if (requestCode == 1) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Log.i("perm", "GRANTED");
}
}
return;
}
关于android - 未调用嵌入式 Web 服务器 NanoHTTPD 响应服务方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45700822/