是否可以将Web视图用作html阅读器(离线)?

时间:2016-11-08 08:50:39

标签: android html webview offline offline-web-app

我正在寻找一种在布局中缩放文字和图片的方法。 根据一些问题,网络视图是一种简单的方法。过了一会儿,我发现了这个webview代码:

import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebView;

public class WebViewActivity extends Activity {

private WebView webView;

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.webview);

    webView = (WebView) findViewById(R.id.webView1);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.loadUrl("http://www.google.com");

}

}

我尝试使用file:///代替http:// 所以我用这条路:

file:///sdcard/Android/data/[My App Package Name]/about.html

它似乎对我来说很好,但我有一些严重的问题。

这是我的问题:

  1. 我使用的这条路是否适用于所有其他Android设备?
  2. 我不知道如何提取第一次运行到我正在使用的路径的html文件。
  3. 无论如何都要从资产加载文件?
  4. 首次运行时提取文件的源代码是什么?
  5. 我可以使用其他格式,如pdf或doc而不是html吗?如果我不能在源代码中更改什么?
  6. 谢谢你帮助我。我应该放弃还是继续这个想法?

2 个答案:

答案 0 :(得分:4)

您可以将文件放入源代码中的assets文件夹中,然后执行以下操作:

WebView webView = (WebView)findViewById(R.id.webView1);
webview.loadUrl("file:///android_assets/file.html");

用于显示PDF:

由于API Level 21(Lollipop)Android提供了PdfRenderer类:

// create a new renderer
PdfRenderer renderer = new PdfRenderer(getSeekableFileDescriptor());

// let us just render all pages
final int pageCount = renderer.getPageCount();
for (int i = 0; i < pageCount; i++) {
  Page page = renderer.openPage(i);

  // say we render for showing on the screen
  page.render(mBitmap, null, null, Page.RENDER_MODE_FOR_DISPLAY);

  // do stuff with the bitmap

  // close the page
  page.close();
}

// close the renderer
renderer.close();

此示例演示了how to display PDF document on screen using the PdfRenderer introduced in Android 5.0 Lollipop.

对于较旧的API,结帐AndroidPdfViewer library适用于API 11及更高版本:

pdfView.fromUri(Uri)
or
pdfView.fromFile(File)
or
pdfView.fromAsset(String)
    .pages(0, 2, 1, 3, 3, 3) // all pages are displayed by default
    .enableSwipe(true)
    .swipeHorizontal(false)
    .enableDoubletap(true)
    .defaultPage(0)
    .onDraw(onDrawListener)
    .onLoad(onLoadCompleteListener)
    .onPageChange(onPageChangeListener)
    .onPageScroll(onPageScrollListener)
    .onError(onErrorListener)
    .enableAnnotationRendering(false)
    .password(null)
    .scrollHandle(null)
    .load();

答案 1 :(得分:0)

使用getExternalFilesDir()代替硬编码路径。

使用IDE将文件放入资源中。

然后在运行时将这些文件复制到getExternalFilesDir()。执行该操作的代码已在stackoverflow上多次发布。

您可以将文件保留在资源中,因为WebView可以直接从资产中加载它们。