¿Hay manera de programáticamente desde una aplicación para Android detectar la versión de Java que soporta el teléfono?
es decir, para ver si el teléfono puede ejecutar Java 8 código de bytes, por ejemplo?
No hay tal cosa llamada versión de Java en el dispositivo Android. Al compilar código Java para crear aplicaciones para Android, se convierte a formato DEX del archivo de clase y se ejecuta en Dalvik máquina virtual o Android Runtime (ART). La conversión de código Java a formato DEX sucede en tiempo de compilación, por lo que no se requiere tener última versión de Java para interpretar el archivo DEX en el tiempo de ejecución.
Pero hay que tener en cuenta que no todos pueden existir definations clase de Java en un dispositivo Android. Por ejemplo, el método java.util.Base64.getDecoder()
está disponible como de JDK 1.8, y se puede utilizar en el nivel API androide 17 o superior. Pero el código con la expresión lambda (JDK 1.8 función) se puede ejecutar en los niveles más bajos de la API también.