Android下可以借助webview,SaleSmartly Android webview Demo示例,点击下载
<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>
// 启用JavaScript
webView.settings.javaScriptEnabled = true
// 启用 localStorage
webView.settings.domStorageEnabled = true
详细代码可以查看到demo
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
}
}
详细代码可以查看到demo
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)
}
}
需要对webview的"onShowFileChooser"进行重写, 详细请参考demo。
全屏时使用自定义视图,退出后隐藏,显示原视图,详细请参考demo。
请检查网络权限、网络状态、页面引入的js是否正确以及插件是否开启,建议先在浏览器运行、测试,通过后再放到app里面进行测试。
请检查一下App是否对打开链接进行拦截或者其他处理
请检查一下App对链接跳转的处理方式