Archivos del mes: 27 febrero 2013

El teclado en Android hace perder el css media

En algunos dispositivos Android al abrir el teclado sobre nuestra aplicación ocurre que esta desplaza a la aplicación hacia arriba haciendo que esta pierda los estilos si se tiene incluido más de un media por device-width.

Para ello, leyendo por internet he llegado a la conclusión de utilizar dos opciones para evitar este tipo de problemas, especialmente lo he encontrado en algunos dispositivos de la marca SAMSUNG.

Vamos a la solución, en las activities hay que añadir lo siguiente:

android:windowSoftInputMode="adjustPan|adjustResize"

Con esto en algunos dispositivos es suficiente, pero si además añadimos “height=device-height” en el “viewport” de nuestro HTML queda solventado para todos los dispositivos y versiones actuales.

 <meta name="viewport" content="width=device-width, height=device-height, initial-scale=1.0, maximum-scale=1.0" />

Nota final, si estáis además desarrollando para IOS, no es recomendable usar “height=device-height” ya que esto hace que los dispositivos de la manzana no tengan en cuenta la barra de estado produciendo un pequeño scroll.

Anuncios

Añadir un evento en el calendario de Android con PhoneGap

Esta vez en un proyecto en la empresa surgió la necesidad de dar la posibilidad al usuario de añadir un evento al calendario de su dispositivo. En todo esto hay un pero, hasta Android 4.0 o superior el calendario no era aplicación nativa por lo cual era casi imposible poder interactuar correctamente con el mismo. Bueno, me dejo de rollo y empezamos manos a la obra.

Lo vamos a realizar haciendo uso de los plugins de Phonegap. Para ello, lo primero será crear nuestra clase CordovaPlugin.

public class CalendarPlugin extends CordovaPlugin {
     @Override
     public boolean execute(String action, JSONArray args,
CallbackContext callbackContext) throws JSONException {

          if (action.equals("saveEvent")) {

               String message = "Cita para "+args.getString(0);
               Intent intent = new Intent(Intent.ACTION_EDIT);
               intent.setType("vnd.android.cursor.item/event");
               intent.putExtra("title", message);
               intent.putExtra("eventLocation", args.getString(1));
               intent.putExtra("description", args.getString(5)+ ", "+args.getString(4));
               Calendar cal = Calendar.getInstance();
			   intent.putExtra("beginTime", cal.getTimeInMillis());
			   intent.putExtra("endTime", cal.getTimeInMillis()+10*60*1000);
               cordova.getActivity().startActivity(intent);
               return true;
		   }
		   return false;
     }
}

En el método execute por defecto de CordovaPlugin hacemos uso de un Intent propio de Android “Intent.ACTION_EDIT” que nos permitirá lanzar la edición del calendario. A dicho Intent se le puede añadir más extras para así incluso configurar alarmas, repeticiones e invitados al evento.

Leer más →

Estado de la conexión en Phonegap y Android

Es muy importante tener controlado en todo momento si nuestro dispositivo Android está conectado a internet o no lo está. De esta forma se mantiene informado al usuario que si intenta realizar cualquier operación que necesite acceso a Internet no se va a llevar a cabo correctamente.

Es necesario configurar varios ficheros para poder hacer uso del acceso al estado de la red, Para PhoneGap hay que añadir al fichero “res/config.xml” el plugin de phonegap para el uso del servicio.


     <cordova>
         <access origin="http://127.0.0.1*"/>
         <access origin=".*"/>
         <log level="INFO"/>
         <preference name="useBrowserHistory" value="true" />
         <preference name="exit-on-suspend" value="false" />
         <plugins>
              <plugin name="NetworkStatus" value="org.apache.cordova.NetworkManager"/>
                   .....
                   .....
                   .....
              </plugins>
      </cordova>

A nivel de permisos de Android, hay que activar el siguiente para que tengamos permiso a acceder a ellos.

     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

Leer más →

A %d blogueros les gusta esto: