martes, 6 de marzo de 2012

Android & CRM

Ahora que CRM tendrá aplicaciones para móviles de diferentes fabricantes, pues me he entretenido un rato mirando lo que seria una aplicación en Android. Lo sé, lo sé, pero no me pasare al lado oscuro – como muchos podrían decir – sin embargo, no puedo con mi genio y lo he tenido que hacer. Prometo hacer otro ejemplo con window mobile 7.
Para poder realizar el ejemplo, he contado con las siguientes herramientas:
Dicho todas esto, debo de comentar que he creado un web services en el Visual Studio 2010 en c#
clip_image002
Este servicio lo único que hace, es retornar todos los contactos con que cuenta el servidor CRM. (ya estaré hablando de esos proyecto que ven ahí)
 
   1:  ServerConnection serverConnect = new ServerConnection();
   2:  ServerConnection.Configuration config = serverConnect.GetServerConfiguration(ConfigurationManager.AppSettings.Get("RutaConfiguraion"));
   3:   
   4:  using (_serviceProxy = ServerConnection.GetOrganizationProxy(config))
   5:          {
   6:              _serviceProxy.EnableProxyTypes();
   7:              QueryExpression query = new QueryExpression()
   8:              {
   9:                  EntityName = "contact",
  10:                  ColumnSet = new ColumnSet()
  11:                  {
  12:                      AllColumns = true
  13:                  },
  14:              };
  15:   
  16:              EntCol = _serviceProxy.RetrieveMultiple(query);
  17:              if (EntCol.Entities.Count > 0)
  18:              {
  19:                  foreach (var item in EntCol.Entities)
  20:                  {
  21:                      Entity entidad = item;
  22:                      foreach (var attr in entidad.Attributes)
  23:                      {
  24:                          if (attr.Key == "fullname")
  25:                              sFullName = attr.Value.ToString();
  26:                          if (attr.Key == "contactid")
  27:                              sGuid = attr.Value.ToString();
  28:                      }
  29:                      l.Add(sFullName + "|" + sGuid);
  30:                  }
  31:                  return l.ToArray();
  32:              }
  33:              else
  34:                  return null;
  35:          }  

Luego de haber instalado todo lo necesario para poder desarrollar aplicaciones móviles de Android nos vamos a Eclipse.
clip_image004
Creamos una aplicación móvil de Android , teniéndole el nombre que mas no guste.
clip_image006
Luego de eso estamos listo para poder tener nuestra primera aplicación. Importamos el KSoap2 de google al proyecto que Eclipse nos genero e importamos las librerías para poder usarlas.
 
   1:  import org.ksoap2.SoapEnvelope;
   2:  import org.ksoap2.serialization.KvmSerializable;
   3:  import org.ksoap2.serialization.SoapObject;
   4:  import org.ksoap2.serialization.SoapSerializationEnvelope;
   5:  import org.ksoap2.transport.*;

Esta librería lo que nos permite, es hacer las llamadas a los servicios web mediante soap. Primero debemos de declarar algunas variables para poder usarlas mas adelante.
 
   1:private static final String SOAP_ACTION = "http://tempuri.org/SeleccionaContactos";
   2:private static final String METHOD_NAME = "SeleccionaContactos";
   3:private static final String NAMESPACE = "http://tempuri.org/";
   4:private static final String URL = "http://192.168.1.128/WebSite1/WebService.asmx?WSDL";
   5:private ListView lv1;

Y como mi ejemplo lo que hará es mostrar todos los contactos , cuando el usuario de clic al botón. Es por ese motivo que en el archivo mail.xml ubicado en res/layout/ agrego mi botón y declaro el evento clic. Una vez realizado esto, ya esta listo para poder hacer la llamada al servicio web. Aca el código para tal acción

   1:   public void onClickButton1(View view)
   2:      {
   3:            TextView tv= (TextView)findViewById(id.textView1);
   4:            List<String> l = new ArrayList<String>();
   5:            
   6:              try {
   7:                  SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
   8:                  SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
   9:                  HttpTransportSE androidHttpTransport = new HttpTransportSE(URL,100000);
  10:                  envelope.dotNet = true;
  11:                  envelope.setOutputSoapObject(request);
  12:                  androidHttpTransport.call(SOAP_ACTION, envelope);
  13:                  
  14:                  KvmSerializable ks = (KvmSerializable)envelope.bodyIn;
  15:                  SoapObject ret = (SoapObject) ks.getProperty(0);
  16:                  for (int i = 0; i < ret.getPropertyCount(); i++) {
  17:                      l.add(ret.getProperty(i).toString());
  18:                  }
  19:                  
  20:                  setContentView(R.layout.main);
  21:                  lv1=(ListView)findViewById(R.id.ListView01);
  22:                  lv1.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1 , l));            
  23:   
  24:              
  25:                  } catch (IOException e) {
  26:                  tv.setText(e.getMessage());
  27:              } catch (XmlPullParserException e) {
  28:                  tv.setText("XmlPullParserException");
  29:              } catch (Exception e) {
  30:                  tv.setText(e.getMessage());
  31:              }
  32:      }

Ahora si, todo listo para ejecutar la apliacion. Le damos F5 (las semejanzas son pura coincidencias) y esto hace que se nos habrá un teléfono virtual con android.
clip_image008
Buscamos la aplicación en el menú principal, y le damos clic
clip_image010
Nos aparecerá una simple aplicación con un solo botón, al consultarlo nos mostrara el siguiente resultado.
clip_image012
Que coincidentemente, son los contactos del CRM :D
clip_image014
Un ejemplo rápido y sin mucha complicación. Ahora me pongo con desarrollar esta idea. Si alguien desea el código, no dude avisarme y se lo enviare.
Saludos
Atilin
Share this post
  • Share to Facebook
  • Share to Twitter
  • Share to Google+
  • Share to Email
  • More...

0 comentarios

 
© 2011 Dynamics CRM Rulez !!!!!!
Designed by BlogThietKe Cooperated with Duy Pham
Released under Creative Commons 3.0 CC BY-NC 3.0
Posts RSSComments RSS
Back to top