Android:带有来自本地目录或服务器的html文件的WebView

时间:2015-10-04 04:39:52

标签: android html webview

在原生Android应用中,我有各种产品。 每个产品在html文件(index.html,图像,详细信息页面,javascript)中都有相关的描述性产品信息。

选择产品后,我想在WebView中显示相关的html内容。我不想在应用程序本身中永久嵌入HTML文件。

方法:我打算按需下载产品HTML包(zip?)。因此,如果您选择产品X,则将下载并使用其HTML zip。

  
      
  • 要下载还是不下载?
      下载HTML文件的原因是它们将从本地目录更快地呈现,但我可以直接从服务器呈现它,如果它也足够快。
  •   

(我还想保护HTML文件,这样除了我的应用程序本身之外没有人可以指向它们)

  
      
  • 下载位置
      哪个是下载这些HTML zip内容的最佳位置,并在那里解压缩?

  •   
  • 如何在本地目录中显示HTML文件?

  •   

有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

  

我不想在应用程序本身中永久嵌入HTML文件

首次运行下载.zip文件并在应用程序的app目录中解压缩,这样您就不必每次都下载它。

  

要下载还是不

你是对的,当你有大量的文件时,从服务器上按需下载html文件不是一个好方法。这意味着你在服务器上为每个html文件命中。您还可能遇到延迟时间连接性问题。

  

下载位置

所有应用程序(root或不是)都有一个默认数据目录,即/data/data/<package_name>。默认情况下,应用程序数据库,设置和所有其他数据都会显示在此处。如果某个应用程序希望存储大量数据,或者出于其他原因希望“对内部存储感觉良好”,则SDCard(Android/data/<package_name>)上会有相应的目录。

除此之外,所有应用程序都可以将数据存储在SDCard的任何位置,因为没有任何限制 - 许多应用程序都这样做。他们可以自由地使用目录名称(并且他们会再次这样做),这通常使得很难确定卡上所有“垃圾”的用途,以及可以删除的内容。

参考Where Android apps store data?

  

如何显示本地目录的HTML文件?

您可以访问默认目录,如:

PackageManager m = getPackageManager();
String s = getPackageName();
try {
    PackageInfo p = m.getPackageInfo(s, 0);
    s = p.applicationInfo.dataDir;
} catch (PackageManager.NameNotFoundException e) {
    Log.w("yourtag", "Error Package name not found ", e);
}

参考Get Application Directory