2017-08-15 2 views
2

Ich habe diese Web-Server-Klasse aufgerufen werden:Embedded Webserver NanoHTTPD Antwort dienen Methode nicht

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

, die ich online gefunden (http://devnote1.blogspot.com/2016/05/android-studio-nanohttpd.html). Ich folgte dem Tutorial zu einem T.

Ich 3 Logs, die in logcat unter dem Tag "myTag" sichtbar sein sollte und ich bemerke, dass das dritte Protokoll in der Methode serve() nicht ausgegeben wird. In meinem Android-Studio hat die serve-Methode eine Zeile durchlaufen und die QuickInfo sagt: "Überschreibt veraltete Methode in 'import fi.iki.elonen.NanoHTTPD'. Kann mir jemand helfen, um dies zu umgehen?

Ich bin mit dieser Abhängigkeit:

compile 'com.nanohttpd:nanohttpd-webserver:2.1.1' 

Als ich in den Browser gehen und geben sie localhost:. 8080, es gibt mir nicht eine ‚Website nicht erreichbar‘ Fehler so glaube ich, wird einige Web-Server Zeug funktioniert Jede Hilfe willkommen Danke

Antwort

0

Das Problem ist mit den Berechtigungen Sie müssen Berechtigungen zur Laufzeit zulassen: https://developer.android.com/training/permissions/requesting.html

Wenn Sie es nur im Manifest festlegen, erhalten Sie immer noch Berechtigungen verweigert.

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

    } 

und Sie haben diese außer Kraft zu setzen:

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