Deshabilitar vínculos de WebView funciona en el emulador pero no en el dispositivo
Deseo desactivar los vínculos de una página que estoy cargando en mi objeto WebView. Mi código funciona perfectamente en mi emulador con api 25, pero no en mi teléfono con 23 api.
Este es el código que bloquea los enlaces de mi WebView:
- Hilo que se queda atascado en BlockingQueue.take sin motivo aparente
- ¿Cómo puedo colocar dos botones al lado de una imagen en la parte inferior del botón?
- Firmar un apk como sistema usando las claves encontradas en source / build / target / product / security /
- La fusión de manifiesto falló con varios errores en Android Studio
- Cubriendo json array utilizando retrofit?
public class NoLinksWebViewClient extends WebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) { return true; } }
Estoy fijando mi WebViewClient para ser un objeto del tipo NoLinksWebViewClient. Hace el truco en el emulador pero no en mi teléfono real.
¿Cómo resolver esto?
- Eliminar objetos duplicados de un ArrayList en Android
- Android New Intent inicio método particular
- ¿Por qué MediaPlayer.seekTo (t) no va al instante especificado exacto "t"?
- Simple HTML (o XML) para Android Native Converter
- ¿Cómo obtengo la altura de la pantalla en Android?
- Opciones viables para ejecutar NodeJS en Android (Ago 2017)
- ¿El registro reduce la velocidad de una aplicación de producción de Android?
- ¿Cómo puedo solucionar el error de Android Firebase "Default FirebaseApp no se inicializa en este proceso"?
Mi código funciona perfectamente en mi emulador con api 25, pero no en mi teléfono con 23 api.
Creo que la diferencia crucial no es emulador vs dispositivo, pero diferentes niveles de API. Si observa la documentación de WebViewClient , notará que hay dos métodos similares pero diferentes:
// since API 24 boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) // before API 24, now deprecated boolean shouldOverrideUrlLoading(WebView view, String url)
Como ha reemplazado sólo el método más reciente, en su dispositivo anterior funciona la lógica predeterminada. Esto ocurre porque obviamente el dispositivo API 23 no podía saber que en API 24 el método será reemplazado por otro diferente, por lo que todavía llama al método antiguo (ahora obsoleto).
Creo que para solucionar el problema sólo debe anular ambos métodos.
El método shouldOverrideUrlLoading (WebView view, String url) está obsoleto en la API 24 y se agrega el método shouldOverrideUrlLoading (WebView view, WebResourceRequest request) en la API 24.
@SuppressWarnings("deprecation") @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { return true; } @TargetApi(Build.VERSION_CODES.N) @Override public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) { return true; }
Espero que esto te ayude.
¿Es javafx.scene.Node.setDisable(boolean arg0)
una opción? De esta manera puede bloquear elementos de ser utilizado
Documentación
- ¿Cómo puedo obtener el color de un pixel de pantalla a través de ADB
- ¿En qué caso se devuelve bindService?