问题描述
我曾多次尝试使用 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 查询任何可接受的应用程序。有一些开源库可以帮助完成这个过程。但是,我在之前的职位上有这个确切的用例,我最终按照描述实施。