Você pode usar o WebView no Android. Veja o exemplo de demonstração do WebView do SaleSmartly para Android. Clique aqui para baixar.
<code><uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<br>
<code class="language-kotlin"> // 启用JavaScript
webView.settings.javaScriptEnabled = true
// 启用 localStorage
webView.settings.domStorageEnabled = true
Para obter o código detalhado, consulte a demonstração.
<code class="language-kotlin"> webView.webChromeClient = object : WebChromeClient() {
override fun onShowFileChooser(
webView: WebView,
filePathCallback: ValueCallback<Array<Uri>>,
fileChooserParams: FileChooserParams
): Boolean {
println("onShowFileChooser")
mUploadMessageAboveL = filePathCallback
val intent = Intent(fileChooserParams.createIntent())
intent.addCategory(Intent.CATEGORY_OPENABLE)
intent.type = "*/*"
intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true) // 允许多选
register.launch(Intent.createChooser(intent, "Select File"))
return true
}
}
Para obter o código detalhado, consulte a demonstração.
<code class="language-kotlin"> webView.webChromeClient = object : WebChromeClient() {
override fun onShowFileChooser(
webView: WebView,
filePathCallback: ValueCallback<Array<Uri>>,
fileChooserParams: FileChooserParams
): Boolean {
println("onShowFileChooser")
mUploadMessageAboveL = filePathCallback
val intent = Intent(fileChooserParams.createIntent())
intent.addCategory(Intent.CATEGORY_OPENABLE)
intent.type = "*/*"
intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true) // 允许多选
register.launch(Intent.createChooser(intent, "Select File"))
return true
}
override fun onShowCustomView(view: View, callback: CustomViewCallback) {
// 当视频请求全屏时,显示自定义视图
if (customView != null) {
callback.onCustomViewHidden()
return
}
customView = view
customViewContainer.visibility = View.VISIBLE
customViewContainer.addView(customView)
customViewCallback = callback
webView.visibility = View.GONE
customViewContainer.bringToFront()
}
override fun onHideCustomView() {
// 当退出全屏时,恢复默认视图
customView?.let {
customViewContainer.removeView(it)
customView = null
customViewContainer.visibility = View.GONE
customViewCallback?.onCustomViewHidden()
webView.visibility = View.VISIBLE
}
}
override fun getDefaultVideoPoster(): Bitmap {
return Bitmap.createBitmap(50, 50, Bitmap.Config.ARGB_8888)
}
}
Você precisa reescrever o método "onShowFileChooser" da WebView. Consulte a demonstração para obter mais detalhes.
Utilize a visualização personalizada em tela cheia, oculte-a ao sair e exiba a visualização original. Consulte a demonstração para obter mais detalhes.
Verifique as permissões de rede, o status da rede, se o JavaScript importado pela página está correto e se o plug-in está habilitado. Recomenda-se executar e testar primeiro no navegador e, em seguida, adicionar ao aplicativo para teste após a aprovação.
Verifique se o aplicativo intercepta ou processa o link aberto de outras maneiras.
Verifique como o aplicativo lida com redirecionamentos de links.