Alla fine funziona, la soluzione è solo estendere AsyncTask, perché Android protegge l'ambiente di runtime dal processo bloccato, quindi quando estendi AsyncTask avvia un altro thread parallelo, in resume devi estendere la classe di connessione in questo modo:
public class PostgreSqlJDBC extends AsyncTask <Void, Void, Void> {
static String cadenaConexion = "jdbc:postgresql://YOUR_HOST/YOUR_BDD?" + "user=postgres&password=YOURPASSWORD";
static String respuestaSql= "vacia";
public PruebaConn() {
}
public String getRespuestaSql (){
execute();
return respuestaSql;
}
@Override
public Void doInBackground(Void... params) {
Connection conexion = null;
Statement sentencia = null;
ResultSet resultado = null;
try {
Class.forName("org.postgresql.Driver");
conexion = DriverManager.getConnection(cadenaConexion);
sentencia = conexion.createStatement();
String consultaSQL = "SELECT * FROM activities";
resultado = sentencia.executeQuery(consultaSQL);
respuestaSql = "";
while (resultado.next()) {
int id = resultado.getInt("IdActivity");
String Nombre = resultado.getString("NameActivity");
respuestaSql = respuestaSql + id + " | " + Nombre + "\n";
}
} catch (Exception e) {
e.printStackTrace();
System.err.println(e.getMessage());
System.err.println("Error: Cant connect!");
conexion = null;
} finally {
if (resultado != null) {
try {
resultado.close();
} catch (Exception e) {
e.printStackTrace();
System.err.println(e.getMessage());
}
}
if (sentencia != null) {
try {
sentencia.close();
} catch (Exception e) {
e.printStackTrace();
System.err.println(e.getMessage());
}
}
if (conexion != null) {
try {
conexion.close();
} catch (Exception e) {
e.printStackTrace();
System.err.println(e.getMessage());
}
}
}
System.err.println("----- PostgreSQL query ends correctly!-----");
return null;
}
}