如何使用 Kotlin 在 Android Studio 中使用 WebView 阅读 pdf?

问题描述

我曾多次尝试使用 WebView 阅读 pdf,但它只显示一个空白屏幕。我应该怎么办? 这是我的代码: 主活动.kt

      class MainActivity : AppCompatActivity() {
    private lateinit var webView: WebView
    @SuppressLint("SetJavaScriptEnabled")
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        webView = findViewById(R.id.webview)
        webView.settings.setJavaScriptEnabled(true)

        webView.webViewClient = object : WebViewClient() {
            override fun shouldOverrideUrlLoading(view: WebView?,url: String?): Boolean {
                view?.loadUrl(url.toString())
                return true
            }
        }
        webView.loadUrl("https://mindorks.s3.ap-south-1.amazonaws.com/courses/MindOrks_Android_Online_Professional_Course-Syllabus.pdf")
    }
}

activity_main.xml

  <WebView
        android:id="@+id/webview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:ignore="MissingConstraints"
        tools:layout_editor_absoluteX="8dp"
        tools:layout_editor_absoluteY="8dp" />
    <TextView
        android:id="@+id/infoTV"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

解决方法

遗憾的是,Android WebView 不支持查看 PDF。一些较旧的 Android 设备甚至没有提供查看 PDF 的功能,并依赖用户从 Play 商店下载应用程序才能这样做。您可能需要通过某种客户端(我推荐 Retrofit)通过其 URL 下载 PDF 作为蒸汽或字节数组。从那里,您需要启动一个隐式意图,其中 Uri 设置为 PDF 数据,类型设置为“application/pdf”媒体类型。下载后,请使用 Android Sharesheet 查询任何可接受的应用程序。有一些开源库可以帮助完成这个过程。但是,我在之前的职位上有这个确切的用例,我最终按照描述实施。