El Evento de la imprecion es detonado por una clase @JavascriptInterface donde podremos indicar tantas funciones como nececitemo. Este debemos añadirlo a nuestra WebView usando addJavascriptInterface(), donde a este le passamos la clase y un alias para la misma.
En Javascript el codigo no tendria muchos cambios, ejecutarimos la funcion de la clase como si la misma estubiera en javascript, lo unico es que por recomiendacion validemos si estados usando la pagina web desde un Movil para asi evitar problemas a futuro.
Nota: La funcion responsable de mostrar la lista de Dispositivos emparejados es getPrintersBluetooth() ubicada en BluethoothPrinter/BluethoothUtils.java, Filtra utilizando isBluetoothPrinter que se encuentra en la linea 56. Aqui validamos que el Device.Major del dispositivo sea igual a Device.Major.UNCATEGORIZED o Device.Major.IMAGING.
El Device Major es como se categoriza dicho dispositivo. Lista Device.Major
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
private inner class Events {
@JavascriptInterface
fun Example(){
}
}
wb_view.webViewClient = WebViewClient()
wb_view.clearCache(false)
wb_view.apply {
loadUrl("https://Example.com")
settings.javaScriptEnabled = true
settings.safeBrowsingEnabled =true
addJavascriptInterface(Events(), "Print")
}
/*Ejemplo de Funciojn par Validar dispositivo*/
const isMovil = ()=>{
let Device =['Android','webOS','iPhone','iPad','iPod','BlackBerry','Windows Phone'];
let Movil = Device.some((A)=>{
let Search = new RegExp(A,'i')
return navigator.userAgent.match(Search)
});
return Movil || false
};
/*valiacion y Imprecion*/
if(isMovil()){
Print.Example()
}else{
// Imprecion Normal del Navegador
}
La clase responsable de de la validacion es NetworkConnection, Esta la utilizo en MainActivity Linea 76. Para Utilizarla debemos indicar los siguientes permisos en AndroidManifest
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
networkConnection.observe(this, { isConnected ->
if (isConnected) {
layoutDisconnect.visibility = View.GONE
wb_view.visibility = View.VISIBLE
webViewSetup()
} else {
wb_view.visibility = View.GONE
layoutDisconnect.visibility = View.VISIBLE
}
}