【问题标题】:load somefile.html file from internal storage to a webview of an app将 somefile.html 文件从内部存储加载到应用程序的 web 视图
【发布时间】:2013-01-15 11:35:00
【问题描述】:

我的平板电脑的内部存储器中有一个文件。 /myfolder/子文件夹/index.html。如何将其加载到应用程序的 web 视图中。

我试过了

 webview.loadURL("file:///myfolder/subfolder/index.html"); 

但它没有给出预期的结果。它说网页不可用。

我知道如何从资产文件夹或网络/互联网加载。但我需要将本地文件加载到 webview 中。有可能吗?

【问题讨论】:

标签: android webview


【解决方案1】:
File file = new File("/data/data/packagename/foldername/");
webView.loadUrl("file:///" + file);

【讨论】:

  • 文件夹名称从何而来?它只是开发人员创建的文件夹还是内部存储固有的?例如,如果我创建一个像这样的文件 temp.pdf context.openFileOutput("temp.pdf", context.MODE_PRIVATE);文件将存储在一个文件夹中,还是 url 只是 file:///data/data/packagename/temp.pdf ?
【解决方案2】:

我能够通过使用以下路径来解决我的问题:

webview.loadURL("file:///mnt/sdcard/myfolder/subfolder/index.html");

【讨论】:

  • 你应该注意到应用应该有权限
【解决方案3】:

应用无法访问其他应用存储的内部存储空间中的数据。权限应用于内部存储,使应用程序写入的数据无法在该应用程序外部访问(您的应用程序无法读取其他应用程序写入的任何内容)。

因此,如果您访问的文件不是由您的应用(AFAIK)创建的,您将无法访问它。

顺便说一句,您可以从内部存储访问文件,如下所示,

webview.loadURL("file:///data/data/com.yourproject.example/files/index.html");

【讨论】:

  • 感谢您提供的信息。我能够使用“file:///mnt/sdcard/myfolder/subfolder/indexhtml”加载html
  • 我没有 SD 卡。但是,我使用了一些文件资源管理器,点击了 html 文件,给了我选择一个应用程序来打开它的选项。我给了浏览器,我在url输入区找到了路径。
【解决方案4】:

将您的 html 文件放在资产文件夹中访问页面,如下所示。

 webview.loadURL("file:///"+mContext.getFilesDir()+"/myfolder/subfolder/index.html"); 

在访问 android assets 中的 html 页面时必须提及 android 资源。

【讨论】:

  • 希望您能完整地看到我的问题。我知道如何从资产文件夹加载它。但是,我不想那样。
  • 对不起朋友..你声明了这个权限并尝试一下
  • 没关系。但我需要那些读取本地存储中的文件吗?我不这么认为。
【解决方案5】:
  File gameDir = new File("/data/data/" + getActivity().getPackageName() + "/games");
    gameDir.mkdirs();

    // Create and execute the background task.
    mTask = new DownloadTask();
    mTask.execute("https://github.com/gabrielecirulli/2048/archive/master.zip", "/data/data/" + getActivity().getPackageName() + "/games/2048.zip");




    mWebView.getSettings().setJavaScriptEnabled(true);
                Toast.makeText(MainActivity.this, path+"/index.html", Toast.LENGTH_SHORT).show();
                mWebView.loadUrl("file:///data/data/com.example.zipfiledownload/games/2048-master/index.html");

【讨论】:

  • 这段代码真的适用于 /data/data 分区吗?
猜你喜欢
  • 2021-04-29
  • 1970-01-01
  • 1970-01-01
  • 2011-07-18
  • 2021-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-12
相关资源
最近更新 更多