【问题标题】:Open local file in pdf.js android webview ("file" is not supported error)在 pdf.js android webview 中打开本地文件(“文件”不支持错误)
【发布时间】:2019-04-15 19:27:58
【问题描述】:

我正在尝试遵循here 所述的答案。基于 cmets,在 android webview 中使用 pdf.js 加载本地文件应该可以,但我收到以下错误:

I/chromium: [INFO:CONSOLE(18556)] "Fetch API cannot load file:///android_asset/www/pdfjs/web/tracemonkey.pdf. URL scheme "file" is not supported.", source: file:///android_asset/www/pdfjs/build/pdf.js (18556)
I/chromium: [INFO:CONSOLE(13127)] "Uncaught (in promise) DataCloneError: Failed to execute 'postMessage' on 'Worker': TypeError: Failed to fetch could not be cloned.", source: file:///android_asset/www/pdfjs/build/pdf.js (13127)
    [INFO:CONSOLE(985)] "Uncaught (in promise) Error: An error occurred while loading the PDF.", source: file:///android_asset/www/pdfjs/web/viewer.js (985)

这是我的代码:

class PDFViewerLocalActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.pdfviewer_layout)

        val webView = findViewById(R.id.pdfViewer) as WebView
        webView.settings.javaScriptEnabled = true
        webView.settings.allowFileAccessFromFileURLs = true
        webView.settings.allowUniversalAccessFromFileURLs = true
        webView.settings.builtInZoomControls = true
        webView.webChromeClient = WebChromeClient()

        webView.loadUrl("file:///android_asset/www/pdfjs/web/viewer.html?file=tracemonkey.pdf")

    }
}

【问题讨论】:

    标签: android webview pdfjs


    【解决方案1】:

    好吧,这是一个愚蠢的问题。我已经在清单中添加了以下权限:

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    

    但是忘记了对于 API 23 及更高版本,您必须在运行时请求权限。因此,只需添加代码以请求权限即可。

    @TargetApi(23)
    fun askPermissions() {
        val permissions = arrayOf("android.permission.READ_EXTERNAL_STORAGE", "android.permission.WRITE_EXTERNAL_STORAGE")
        val requestCode = 200
        requestPermissions(permissions, requestCode)
    }
    

    【讨论】:

      猜你喜欢
      • 2021-03-27
      • 2018-08-19
      • 2012-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-22
      • 1970-01-01
      相关资源
      最近更新 更多