簡體   English   中英

如何從設備存儲下載文件夾將 html 文件加載到 WebView 中

[英]How to Load html file in to WebView from Device storage downloads folder

我的 HTML 文件是一個包含聲音圖像動畫的游戲文件,我可以檢索該文件但它沒有播放。 我知道如何使用以下方法從項目資產文件夾中訪問它:

myWebView.loadUrl("file:///android_asset/____/index.html");

但是當我從下載文件夾的設備存儲中收到它時,我無法播放 webview 中的文件。

下面是從下載文件夾中顯示 html 文件的代碼:

Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
Uri uri = Uri.parse(Environment.getExternalStorageDirectory().getPath() + "/Download");
intent.setDataAndType(uri, "text/html");
startActivityForResult(intent,PICKFILE_RESULT_CODE); 

在 onActivityResult 我這樣寫:

@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    switch (requestCode){
        case PICKFILE_RESULT_CODE :
            if(resultCode==RESULT_OK){
                Uri uri1 = data.getData();
                File file1 = new File(uri1.getPath());
                final String[] split = file1.getPath().split(":");

                String filePath = split[1];

               /* after splitting it will be /storage/emulated/0/Download/index.html */

                if (filePath.endsWith(".html")){
                    mywebview.setWebContentsDebuggingEnabled(true);
                    mywebview.getSettings().setJavaScriptEnabled(true);
                    mywebview.getSettings().setBuiltInZoomControls(true);
                    mywebview.getSettings().setUseWideViewPort(true);
                    mywebview.getSettings().setAllowUniversalAccessFromFileURLs(true);
                    mywebview.getSettings().setAllowFileAccessFromFileURLs(true);
                    mywebview.clearCache(true);
                    mywebview.setWebViewClient(new WebViewClientClass());
                    mywebview.loadUrl(filePath);
                    mywebview.evaluateJavascript(filePath);
                }

            }
            break;
    }
}

private class WebViewClientClass extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);
        return true;
    }
}

因此,如果我做錯了什么,請糾正我或告訴我正確的方法。

有幾件事要做。

  1. 確保應用具有讀取權限並且應用可以訪問正確的文件。
  2. 這是一個很大的安全問題,因此您不應讀取公共文件並將其加載到您的應用程序中。

獲得文件后,加載其內容。

您還將在 ActivityResult 中獲得一個URI 您不能只將 URI 轉換為文件。 使用它來讀取文件的內容。 (在科特林)

context.contentResolver.openInputStream(uri).reader().readText()

有了內容后,

webview.loadData(content, MIME_TYPE, ENCODING)

在哪里

MIME_TYPE = "text/html"
ENCODING = "utf-8"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM