2017-08-15 47 views
2

呼び出されていない方法を提供し、私は、このWebサーバのクラスがあります:私はオンラインで見つける内蔵WebサーバーNanoHTTPD応答

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を)。

logcatのタグ "myTag"の下に3つのログが表示され、serve()メソッドの3番目のログが出力されないことがわかりました。私のアンドロイドスタジオでは、serveメソッドには行があり、ツールチップには「import fi.iki.elonen.NanoHTTPD」で廃止されたメソッドがオーバーライドされています。この依存関係を使用して:

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

私はブラウザに行き、localhostと入力すると:8080、それは私にすべてのヘルプは高く評価されるため、私はいくつかのWebサーバのようなものが働いていると考えているエラー「サイトに到達することができない」を与えるものではありません。

答えて

0

問題はアクセス許可にあります。実行時にアクセス許可を許可する必要があります。 https://developer.android.com/training/permissions/requesting.html

マニフェストで設定した場合でも、権限は拒否されます。

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; 
} 
関連する問題