Загружать файлы в папку активов через сервер nanoHTTPD - PullRequest
0 голосов
/ 22 января 2019

Я пытаюсь загрузить файлы в папке активов в пользовательских вкладках Chrome.Для этого я создаю HTTP-сервер, используя NanoHTTPD.Однако я не могу загрузить файлы в папку активов.Это MainActivity.java

package com.example.webar;

import ...


public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final Button loadbtn = findViewById(R.id.loadbtn);
        final int port = 8000;

        final Server server = new Server(port);

        loadbtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                try {
                    server.start();
                    final CustomTabsIntent ctab = new CustomTabsIntent.Builder().build();
                    String url = "http:/localhost:"+server.getListeningPort()+"/";
                    System.out.println("-------"+server.getHostname());
                    ctab.launchUrl(MainActivity.this, Uri.parse(url));
                }
                catch (IOException ioe){
                    System.out.println("-------Server didn't start");
                    server.stop();
                }
            }
        });
    }}


 class Server extends NanoHTTPD {

    public Server(int port) {
        super(port);
    }
    @Override
    public Response serve(IHTTPSession session) {
        String uri = session.getUri();

        if (uri.equals("/")) {
            try {
                String path = "assets/index.html";
                File file = new File(path);
                System.out.println("---------"+file.exists());
                FileInputStream index = new FileInputStream(path);
                return newChunkedResponse(Response.Status.OK,MIME_HTML, index);
            }
             catch (FileNotFoundException fe){
                System.out.println("------File Not found");
            }
        }
        return  null;
    }
}

Я уже пробовал путь к файлу: ///android_assets/index.html (который работал с веб-представлением), но здесь не работает.

1 Ответ

0 голосов
/ 29 января 2019

Я использую InputStream.

InputStream is = context.getAssets().open("login.htm");

Тогда в src / main / assets у меня есть

/css
/fonts
/img
/js
login.htm
logout.htm

Завершите пример nanohttpd здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...