Android y SQLite - Couldnt read row 0 col -1

Android: solución a Couldn’t read row 0, col -1 from CursorWindow

Programando algunas cosas en Android con SQLite me topé con un error que dice algo así (puede variar según tu caso):

java.lang.IllegalStateException: Couldn’t read row 0, col -1 from CursorWindow. Make sure the Cursor is initialized correctly before accessing data from it.

Esto fue al usar el método getColumnIndex y los métodos de getXXX de la clase Cursor.

Hoy voy a explicar cómo solucionar ese error y cuáles son sus causas en Android, no importa si es en Java o en Kotlin, pues Cursor es de Java.

(más…)

Decompilar APK (app de Android) y obtener código fuente (casi) original

Una de las debilidades de Java (y otros lenguajes que compilan a bytecode) es que se puede decompilar o descompilar, como le quieras llamar. O decompile, si hablas inglés.

Hoy vamos a ver un decompilador de aplicaciones de android, es decir, de apps con extensiones APK.

Estuve probando el decompilador y funciona de maravilla, obtiene casi el mismo código que el original.

Para hacer esta demostración y no hacer nada ilegal, voy a usar el CRUD de SQLite con Android cuyo código fuente está aquí, y su APK está aquí.

(más…)

ROT 13 en Java – Algoritmo y algunas variantes como ROT 1

Hoy voy a explicar el código fuente para implementar el algoritmo de cifrado ROT 13 en Java.

El método de cifrado llamado ROT 13 rota las letras del alfabeto 13 posiciones. Son 13 veces porque 13 es la mitad de la longitud del alfabeto inglés (es decir, 26).

Debido a que rota las letras justamente a la mitad, el método para descifrar es el mismo que se utiliza para cifrar.

Es decir, al cifrar, la letra a se convierte en n. Y al cifrar de nuevo la n, se convierte en a, por lo que podemos concluir en que el mismo método sirve para cifrar y descifrar.

ROT 13 en Java y algunas variantes como ROT 1

ROT 13 es una variante del cifrado César (el cual ya implementé en Java) pero a diferencia de ROT 13, para descifrar usando el método César se necesita rotar la cadena a la izquierda.

Una vez explicado esto veamos el código y la explicación para implementar ROT 13 en Java.

También veremos algunas variantes de ROT 13 como ROT 1, y a partir de ello podremos ver cómo implementar ROT 2, ROT 3, etcétera (pues son rotaciones al final del día)

(más…)

Ejecutar código Java en línea gratis y sin necesidad de registrarse

Java es un lenguaje de programación muy utilizado en varios ámbitos. Por ejemplo, se usaba para programar en Android antes de que apareciera Kotlin, se usa en el servidor, en los clientes e incluso con Swing para interfaces gráficas.

Sin embargo, cuando queremos programar en Java nos enfrentamos a varios retos: debemos instalar Java, agregarlo a la PATH y luego instalar un buen IDE como NetBeans.

Por eso es que hoy vengo a presentar un sitio web que siempre utilizo cuando necesito desarrollar en Java en línea, sin configurar nada.

El sitio del que hablo es repl.it, el cual permite ejecutar código de Java sin necesidad de registrarse o pagar, tiene resaltado de sintaxis, opción para colaboración entre varios usuarios y ejecución de código directamente en el navegador.

A lo largo de este tutorial vamos a ver cómo usar el sitio para programar en Java en línea, el cual incluye un compilador de Java así como su intérprete.

(más…)

Saber si un número es positivo, negativo o neutro en Java

Se dice que un número es neutro cuando es 0, pues no tiene signo; o al menos eso se dice, las matemáticas dirán otra cosa.

En cambio, si es mayor que 0 es un número positivo; y si es menor que 0 es negativo.

Hoy veremos cómo comprobar si un número es negativo, positivo o neutro en Java. Para eso vamos a leer datos por teclado y hacer unas comparaciones simples.

Nota: te recomiendo ver cómo instalar Java y cómo instalar un buen IDE.

(más…)

Spinner llenado con Array de Strings en Android

Llenar Spinner de Android con array de tipo String

En este post explicaré cómo establecer un arreglo de cadenas como una lista desplegable o select en Android, usando el widget Spinner y llamando al método setAdapter.

Spinner llenado con Array de Strings en Android

Spinner llenado con Array de Strings en Android

Lo que haremos será ver cómo llenar el Spinner con opciones de un arreglo y además saber cuál opción fue seleccionada.

(más…)

Reloj en formulario con Swing y Java

Java y swing: mostrar y refrescar reloj con hora actual

Este es un pequeño ejercicio para mostrar un reloj que se refresca con la hora actual en una etiqueta dentro de un formulario o ventana creada con swing usando Java.

Lo que veremos en este post es cómo refrescar la etiqueta y obtener la hora actual para mostrarla con precisión de segundos.

Reloj en formulario con Swing y Java

Reloj en formulario con Swing y Java

Para esto vamos a usar a hilos con Thread y Runnable, algo como lo que vimos cuando implementamos un código que se ejecutaba cada cierto tiempo.

(más…)

JSON codificado con Java y JSONObject

Codificar JSON en Java usando org.json

Hace algún tiempo vimos cómo decodificar o parsear el formato JSON en Java, pero no vimos cómo convertir un objeto de Java a una cadena de JSON.

Lo que vamos a hacer en este post es mostrar cómo codificar o convertir un objeto que definamos en Java a su representación JSON.

Esto va a funcionar para todos los tipos de datos y clases dentro de clases, siempre y cuando definamos los getters de las cosas que queremos que se expongan.

(más…)

Android - RadioGroup y RadioButton con Java

RadioGroup y RadioButton en Android – Ejemplos

En una aplicación móvil para Android que estoy desarrollando me vi en la necesidad de agregar algunos widgets de tipo RadioButton. Recordemos que estos widgets van dentro de un RadioGroup para que solamente se pueda seleccionar uno.

Android - RadioGroup y RadioButton con Java

Android – RadioGroup y RadioButton con Java

Veremos entonces cómo poner los RadioButton dentro de un RadioGroup y saber cuál elemento está seleccionado.

(más…)

Lector de código de barras con Android

Leer código de barras con Android y ZXing (programación de app)

En este post voy a enseñarte cómo leer o escanear códigos de barras con Android usando la librería de Zebra Crossing (ZXing) con Java.

Además de que se permitirán leer códigos de barras también se podrán escanear códigos QR.

Lector de código de barras con Android

Lector de código de barras con Android

La app que vamos a programar será compatible con versiones de Android 4.4 y superiores; también vamos a manejar los permisos de acceso a la cámara en tiempo de ejecución y en el manifiesto.

Al final tendremos una app que lanza el lector de códigos de barras y devuelve el texto leído en forma de cadena.

(más…)