<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2spanishfull.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>DevTroce.com</title>
	
	<link>http://www.devtroce.com</link>
	<description>Destrozando código!</description>
	<lastBuildDate>Fri, 27 Jan 2012 20:23:43 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/Devtroce" /><feedburner:info uri="devtroce" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><creativeCommons:license>http://creativecommons.org/licenses/by-sa/3.0/</creativeCommons:license><image><link>www.devtroce.com</link><url>http://www.devtroce.com/images/logo_64_blue.png</url><title>Devtroce.com</title></image><feedburner:emailServiceId>Devtroce</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><feedburner:feedFlare href="http://add.my.yahoo.com/content?lg=es&amp;url=http%3A%2F%2Ffeeds.feedburner.com%2FDevtroce" src="http://eur.i1.yimg.com/eur.yimg.com/i/es/my/addto1.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FDevtroce" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.feedburner.com/Devtroce" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2FDevtroce" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2FDevtroce" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FDevtroce" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><feedburner:feedFlare href="http://www.plusmo.com/add?url=http%3A%2F%2Ffeeds.feedburner.com%2FDevtroce" src="http://plusmo.com/res/graphics/fbplusmo.gif">Subscribe with Plusmo</feedburner:feedFlare><feedburner:feedFlare href="http://www.thefreedictionary.com/_/hp/AddRSS.aspx?http%3A%2F%2Ffeeds.feedburner.com%2FDevtroce" src="http://img.tfd.com/hp/addToTheFreeDictionary.gif">Subscribe with The Free Dictionary</feedburner:feedFlare><feedburner:feedFlare href="http://www.bitty.com/manual/?contenttype=rssfeed&amp;contentvalue=http%3A%2F%2Ffeeds.feedburner.com%2FDevtroce" src="http://www.bitty.com/img/bittychicklet_91x17.gif">Subscribe with Bitty Browser</feedburner:feedFlare><feedburner:feedFlare href="http://www.live.com/?add=http%3A%2F%2Ffeeds.feedburner.com%2FDevtroce" src="http://tkfiles.storage.msn.com/x1piYkpqHC_35nIp1gLE68-wvzLZO8iXl_JMledmJQXP-XTBOLfmQv4zhj4MhcWEJh_GtoBIiAl1Mjh-ndp9k47If7hTaFno0mxW9_i3p_5qQw">Subscribe with Live.com</feedburner:feedFlare><feedburner:feedFlare href="http://mix.excite.eu/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2FDevtroce" src="http://image.excite.co.uk/mix/addtomix.gif">Subscribe with Excite MIX</feedburner:feedFlare><feedburner:feedFlare href="http://www.webwag.com/wwgthis.php?url=http%3A%2F%2Ffeeds.feedburner.com%2FDevtroce" src="http://www.webwag.com/images/wwgthis.gif">Subscribe with Webwag</feedburner:feedFlare><feedburner:feedFlare href="http://www.podcastready.com/oneclick_bookmark.php?url=http%3A%2F%2Ffeeds.feedburner.com%2FDevtroce" src="http://www.podcastready.com/images/podcastready_button.gif">Subscribe with Podcast Ready</feedburner:feedFlare><feedburner:feedFlare href="http://www.wikio.com/subscribe?url=http%3A%2F%2Ffeeds.feedburner.com%2FDevtroce" src="http://www.wikio.com/shared/img/add2wikio.gif">Subscribe with Wikio</feedburner:feedFlare><feedburner:feedFlare href="http://www.dailyrotation.com/index.php?feed=http%3A%2F%2Ffeeds.feedburner.com%2FDevtroce" src="http://www.dailyrotation.com/rss-dr2.gif">Subscribe with Daily Rotation</feedburner:feedFlare><item>
		<title>Tutorial de Programación Android: Retornar valores entre Activities (startActivityForResult)</title>
		<link>http://feedproxy.google.com/~r/Devtroce/~3/PyG6XIpLjKE/</link>
		<comments>http://www.devtroce.com/2012/01/25/tutorial-de-programacion-android-retornar-valores-entre-activities-startactivityforresult/#comments</comments>
		<pubDate>Wed, 25 Jan 2012 17:29:06 +0000</pubDate>
		<dc:creator>GeekZero</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Lenguajes de Programación]]></category>
		<category><![CDATA[Movil]]></category>
		<category><![CDATA[Plataformas]]></category>
		<category><![CDATA[Sistemas Operativos]]></category>
		<category><![CDATA[Tutoriales]]></category>

		<guid isPermaLink="false">http://www.devtroce.com/?p=2873</guid>
		<description><![CDATA[En una de las primeras entragas sobre éste tutorial veíamos como utilizar el Activity y pasar valores entre ellos, ahora veremos algo parecido pero al inverso, cómo retornar valores al Activity que invocó a otro. Ésto es realmente útil cuando tenemos un Activity padre que invoca a otro Activity como &#8220;pantalla auxiliar&#8221; el cual cumple [...]
Articulos Relacionados:<ol>
<li><a href='http://www.devtroce.com/2012/01/16/tutorial-de-programacion-android-manejo-de-activity/' rel='bookmark' title='Tutorial de Programación Android: Manejo de Activity'>Tutorial de Programación Android: Manejo de Activity</a></li>
<li><a href='http://www.devtroce.com/2012/01/18/tutorial-de-programacion-android-realizar-llamadas/' rel='bookmark' title='Tutorial de Programación Android: Realizar Llamadas'>Tutorial de Programación Android: Realizar Llamadas</a></li>
<li><a href='http://www.devtroce.com/2012/01/19/mensajes-de-dialogo-popup-alertdialog/' rel='bookmark' title='Tutorial de Programación Android: Mensajes de Dialogo (AlertDialog)'>Tutorial de Programación Android: Mensajes de Dialogo (AlertDialog)</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>En una de las primeras entragas sobre éste tutorial veíamos <a href="http://www.devtroce.com/2012/01/16/tutorial-de-programacion-android-manejo-de-activity/">como utilizar el Activity y pasar valores entre ellos</a>, ahora veremos algo parecido pero al inverso, cómo retornar valores al <strong>Activity</strong> que invocó a otro.</p>
<p>Ésto es realmente útil cuando tenemos un <strong>Activity</strong> padre que invoca a otro <strong>Activity</strong> como &#8220;pantalla auxiliar&#8221; el cual cumple con una función especifica y la procesa, para retornar uno o más datos que utilizará su &#8220;padre&#8221; por así decirlo.<span id="more-2873"></span></p>
<p>Si se fijan el código es bastante sencillo de implementarlo, y es muy parecido al articulo ya mencionado.</p>
<p>Supongamos que tenemos un botón que llama a otro Activity, lo tenemos que implementar de ésta manera:</p>
<pre class="brush: java; title: ; notranslate">
Intent intent = new Intent(ActiviyPrincipal.this, ActivityAuxiliar.class);
startActivityForResult(intent, 0);
</pre>
<p>Si se fijan, lo que cambio fue que en vez de utilizar el método startActivity() lo cambiamos por startActivityForResult(). Luego en la clase del Activity invocado escribimos todo igual, y agregamos unas líneas en algún botón que se encargará de procesar nuestros datos.</p>
<pre class="brush: java; title: ; notranslate">
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class ActDevtroce extends Activity {
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.act_Test);

		Button btnTest = (Button) findViewById(R.id.btnTest);

		btnTest.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View arg0) {
				try {
					// algún código que procese lo que querramos
					Intent resultData = new Intent();
					resultData.putExtra(&quot;Test&quot;, &quot;Lo he aprendido en www.devtroce.com&quot;);
					setResult(Activity.RESULT_OK, resultData);
					finish();
				} catch (Exception e) {
					MensajeBox(e.getMessage());
				}
			}
		});
	}
}
</pre>
<p>Con ésto tendriamos lista la devolución lista, sólo queda capturar ése retorno en el Activity principal, sobrescribiendo el método que cumple con dicha función. Una vez recuperado dicho valor, pueden programarlo cómo más les parezca, en el caso de ejemplo sólo lo mostraremos como mensaje</p>
<pre class="brush: java; title: ; notranslate">
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data){
	if (data != null) {
		AlertDialog.Builder builder = new AlertDialog.Builder(this);
		builder.setMessage(data.getStringExtra(&quot;Web&quot;))
				.setTitle(&quot;Error&quot;)
				.setCancelable(false)
				.setNeutralButton(&quot;Aceptar&quot;,
						new DialogInterface.OnClickListener() {
							public void onClick(DialogInterface dialog, int id) {
								dialog.cancel();
							}
						});
		AlertDialog alert = builder.create();
		alert.show();
	}
}
</pre>
<p>Quedaría así la app</p>
<p><a href="http://www.devtroce.com/2012/01/25/tutorial-de-programacion-android-retornar-valores-entre-activities-startactivityforresult/forresult/" rel="attachment wp-att-2874" title="forresult"><img class="alignnone size-full wp-image-2874" title="forresult" src="http://www.devtroce.com/wp-content/uploads/2012/01/forresult.png" alt="" width="490" height="280" /></a></p>
<div class="shr-publisher-2873"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic --><p>Articulos Relacionados:<ol>
<li><a href='http://www.devtroce.com/2012/01/16/tutorial-de-programacion-android-manejo-de-activity/' rel='bookmark' title='Tutorial de Programación Android: Manejo de Activity'>Tutorial de Programación Android: Manejo de Activity</a></li>
<li><a href='http://www.devtroce.com/2012/01/18/tutorial-de-programacion-android-realizar-llamadas/' rel='bookmark' title='Tutorial de Programación Android: Realizar Llamadas'>Tutorial de Programación Android: Realizar Llamadas</a></li>
<li><a href='http://www.devtroce.com/2012/01/19/mensajes-de-dialogo-popup-alertdialog/' rel='bookmark' title='Tutorial de Programación Android: Mensajes de Dialogo (AlertDialog)'>Tutorial de Programación Android: Mensajes de Dialogo (AlertDialog)</a></li>
</ol></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Devtroce?a=PyG6XIpLjKE:KvPi9ILCjNY:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Devtroce?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Devtroce?a=PyG6XIpLjKE:KvPi9ILCjNY:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Devtroce?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Devtroce?a=PyG6XIpLjKE:KvPi9ILCjNY:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/Devtroce?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Devtroce/~4/PyG6XIpLjKE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.devtroce.com/2012/01/25/tutorial-de-programacion-android-retornar-valores-entre-activities-startactivityforresult/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.devtroce.com/2012/01/25/tutorial-de-programacion-android-retornar-valores-entre-activities-startactivityforresult/</feedburner:origLink></item>
		<item>
		<title>Cómo invocar a un Web Service desde Android</title>
		<link>http://feedproxy.google.com/~r/Devtroce/~3/Kdd5yFtu9iU/</link>
		<comments>http://www.devtroce.com/2012/01/24/como-invocar-a-un-web-service-desde-androi/#comments</comments>
		<pubDate>Tue, 24 Jan 2012 19:19:39 +0000</pubDate>
		<dc:creator>GeekZero</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[ASP.net]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Lenguajes de Programación]]></category>
		<category><![CDATA[Movil]]></category>
		<category><![CDATA[Plataformas]]></category>
		<category><![CDATA[Sistemas Operativos]]></category>
		<category><![CDATA[Web Service]]></category>
		<category><![CDATA[Tutoriales]]></category>

		<guid isPermaLink="false">http://www.devtroce.com/?p=2860</guid>
		<description><![CDATA[Véamos algo un poco más avanzado en cuanto a programación para Android se refiere, consumiremos un Web Service. Lo más llamativo para mí es que Google no le ha dado soporte nativo a ésta tecnología, siendo que es estándar y abierta, sin decir que es de uso popular. Aunque ésta falta de soporte no hace [...]
Articulos Relacionados:<ol>
<li><a href='http://www.devtroce.com/2009/12/21/autenticarse-contra-un-web-service-con-autenticacion-con-java-y-visual-basic/' rel='bookmark' title='Autenticarse contra un Web Service con Autenticación con Java y Visual Basic'>Autenticarse contra un Web Service con Autenticación con Java y Visual Basic</a></li>
<li><a href='http://www.devtroce.com/2011/04/13/pasar-un-conjunto-de-datos-por-web-service-entre-java-y-dotnet/' rel='bookmark' title='Pasar un conjunto de datos por Web Service entre Java y DotNet'>Pasar un conjunto de datos por Web Service entre Java y DotNet</a></li>
<li><a href='http://www.devtroce.com/2012/01/16/tutorial-de-programacion-android-manejo-de-activity/' rel='bookmark' title='Tutorial de Programación Android: Manejo de Activity'>Tutorial de Programación Android: Manejo de Activity</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Véamos algo un poco más avanzado en cuanto a programación para <strong>Android</strong> se refiere, consumiremos un <strong>Web Service</strong>. Lo más llamativo para mí es que <strong>Google</strong> no le ha dado soporte nativo a ésta tecnología, siendo que es estándar y abierta, sin decir que es de uso popular. Aunque ésta falta de soporte no hace que sea imposible consumir un <strong>WS</strong> desde nuestra app, de hecho existe más de una manera de hacerlo y la más difundida ya es la librería <strong>KSOAP2</strong>, así que trabajaremos con ella.</p>
<p style="text-align: left;">Ya doy por hecho que saben crear un servicio web del lado servidor (si no es así pueden buscar cómo hacerlo en varios lenguajes en éste mismo blog) por ello nos saltaremos el código servidor. Lo pueden escribir en el lenguaje que deseen<span id="more-2860"></span>, <strong>PHP</strong>, <strong>Java</strong>,<strong> .Net</strong>, etc. Lo primero que necesitan hacer es descargarse la librería <a href="http://code.google.com/p/ksoap2-android/wiki/HowToUse?tm=2" target="_blank">ksoap2</a>, y luego la agregan a su proyecto como referencia.</p>
<p style="text-align: left;"> <a href="http://www.devtroce.com/2012/01/24/como-invocar-a-un-web-service-desde-androi/lib/" rel="attachment wp-att-2861" title="lib"><img class="alignnone size-full wp-image-2861" title="lib" src="http://www.devtroce.com/wp-content/uploads/2012/01/lib.png" alt="" width="338" height="193" /></a></p>
<p style="text-align: left;">Con esto hecho ya podremos hacer las importaciones necesarias en cada clase que querramos usarla.</p>
<pre class="brush: java; title: ; notranslate">
import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;
</pre>
<p>En el manifiesto también tenemos que incluir los permisos de conexión a Internet</p>
<p>El ejemplo de código que expongo más abajo, está enfocado para consumir WS construidos con .Net pero si se fijan es fácilmente adaptable a otro lenguaje, simplemente colocan en <strong>false</strong> la opción <strong>dotNet</strong> y cambian como deben la  <strong>URL</strong>, <strong>NAMESPACE</strong> y <strong>SOAP_ACTION</strong></p>
<pre class="brush: java; title: ; notranslate">
/* El ejemplo con el dominio tempuri es para .Net
 * esto varia segun con que lenguaje lo construyen
 * solo deben revisar como configuraron su servidor
 * y lo cambian por el valor correspondiente
*/
private static final String SOAP_ACTION = &quot;http://tempuri.org/MiMetodoDePrueba&quot;;
private static final String METHOD_NAME = &quot;MiMetodoDePrueba&quot;;
private static final String NAMESPACE = &quot;http://tempuri.org/&quot;;
private static final String URL = &quot;http://midominiooip/devtroce_ws.asmx&quot;;

private void InvocarWs(){
	try {
		EditText txtParametro1 = (EditText) findViewById(R.id.txtParametro1);
		EditText txtParametro2 = (EditText) findViewById(R.id.txtParametro2);
		EditText txtParametro3 = (EditText) findViewById(R.id.txtParametro3);

		SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);

		request.addProperty(&quot;param1&quot;, txtParametro1.getText().toString());
		request.addProperty(&quot;param2&quot;, txtParametro2.getText().toString().trim());
		request.addProperty(&quot;param3&quot;, txtParametro3.getText().toString());

		final SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
				SoapEnvelope.VER12); // utilizar la version que corresponda:11 o 12
		envelope.dotNet = true; // para WS ASMX, sólo si fue construido con .Net
		envelope.setOutputSoapObject(request);

		final HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);

		androidHttpTransport.call(SOAP_ACTION, envelope);

		// Esta sección está destina si el Métdo del WS retorna valores
		/*
		 * Object result = (Object)envelope.getResponse();
		 *
		 * String[] results = (String[]) result; tv.setText( &quot;&quot;+results[0]);
		 * MensajeBox(results[0].toString());
		 */
	} catch (Exception e) {
		MensajeBox(e.getMessage());
	}
}

void MensajeBox(String mensaje) {
	AlertDialog.Builder builder = new AlertDialog.Builder(this);
	builder.setMessage(mensaje)
			.setCancelable(false)
			.setNeutralButton(&quot;Aceptar&quot;,
					new DialogInterface.OnClickListener() {
						public void onClick(DialogInterface dialog, int id) {
							dialog.cancel();
						}
					});
	AlertDialog alert = builder.create();
	alert.show();
}
</pre>
<div class="shr-publisher-2860"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic --><p>Articulos Relacionados:<ol>
<li><a href='http://www.devtroce.com/2009/12/21/autenticarse-contra-un-web-service-con-autenticacion-con-java-y-visual-basic/' rel='bookmark' title='Autenticarse contra un Web Service con Autenticación con Java y Visual Basic'>Autenticarse contra un Web Service con Autenticación con Java y Visual Basic</a></li>
<li><a href='http://www.devtroce.com/2011/04/13/pasar-un-conjunto-de-datos-por-web-service-entre-java-y-dotnet/' rel='bookmark' title='Pasar un conjunto de datos por Web Service entre Java y DotNet'>Pasar un conjunto de datos por Web Service entre Java y DotNet</a></li>
<li><a href='http://www.devtroce.com/2012/01/16/tutorial-de-programacion-android-manejo-de-activity/' rel='bookmark' title='Tutorial de Programación Android: Manejo de Activity'>Tutorial de Programación Android: Manejo de Activity</a></li>
</ol></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Devtroce?a=Kdd5yFtu9iU:I7p6ENfYNcs:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Devtroce?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Devtroce?a=Kdd5yFtu9iU:I7p6ENfYNcs:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Devtroce?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Devtroce?a=Kdd5yFtu9iU:I7p6ENfYNcs:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/Devtroce?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Devtroce/~4/Kdd5yFtu9iU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.devtroce.com/2012/01/24/como-invocar-a-un-web-service-desde-androi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.devtroce.com/2012/01/24/como-invocar-a-un-web-service-desde-androi/</feedburner:origLink></item>
		<item>
		<title>Cómo leer una planilla electrónica (Excel) con C#</title>
		<link>http://feedproxy.google.com/~r/Devtroce/~3/T8Ubi3kK20g/</link>
		<comments>http://www.devtroce.com/2012/01/23/como-leer-una-planilla-electronica-excel-con-c/#comments</comments>
		<pubDate>Mon, 23 Jan 2012 18:13:21 +0000</pubDate>
		<dc:creator>GeekZero</dc:creator>
				<category><![CDATA[C# .Net]]></category>
		<category><![CDATA[Lenguajes de Programación]]></category>
		<category><![CDATA[ASP.net]]></category>

		<guid isPermaLink="false">http://www.devtroce.com/?p=2853</guid>
		<description><![CDATA[Es prácticamente imposible que en un ambiente de sistemas informáticos no se trabaje con planillas electrónicas (sin importar que formato use), así que si tu caso es que necesitas leer datos de una planilla de Microsoft Excel y tu lenguaje es C# estás en la página correcta para leerlo. Éste código está preparado para usarlo en ASP.Net, [...]
Articulos Relacionados:<ol>
<li><a href='http://www.devtroce.com/2010/12/28/redireccionar-en-una-nueva-ventana-desde-el-servidor-con-asp-net/' rel='bookmark' title='Redireccionar en una nueva ventana desde el Servidor con ASP.Net'>Redireccionar en una nueva ventana desde el Servidor con ASP.Net</a></li>
<li><a href='http://www.devtroce.com/2010/11/03/exportar-directamente-a-pdf-los-reportes-de-crystal-reports-en-asp-net/' rel='bookmark' title='Exportar directamente a PDF los reportes de Crystal Reports en ASP.Net'>Exportar directamente a PDF los reportes de Crystal Reports en ASP.Net</a></li>
<li><a href='http://www.devtroce.com/2010/07/07/leer-ficheros-csv-con-delphi/' rel='bookmark' title='Leer ficheros .csv con Delphi'>Leer ficheros .csv con Delphi</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Es prácticamente imposible que en un ambiente de sistemas informáticos no se trabaje con planillas electrónicas (sin importar que formato use), así que si tu caso es que necesitas leer datos de una planilla de <strong>Microsoft Excel</strong> y tu lenguaje es <strong>C#</strong> estás en la página correcta para leerlo.</p>
<p>Éste código está preparado para usarlo en<strong> ASP.Net,</strong> pero si cambian los Responses, le funcionará para cualquier otra plataforma como escritorio, servicio, WPF, etc.<span id="more-2853"></span></p>
<pre class="brush: csharp; title: ; notranslate">
var conn = new OleDbConnection();
var cmd = new OleDbCommand();
var da = new OleDbDataAdapter();
var ds = new DataSet();
try
{
	conn.ConnectionString = &quot;Provider=Microsoft.Jet.OLEDB.4.0;Data Source=&quot; + &quot;Algun path donde esté alojado su planilla&quot; + &quot;;Mode=Read;Extended Properties=Excel 8.0;Persist Security Info=False;&quot;
	cmd.CommandText = &quot;SELECT * FROM [Tabla del Excel$]&quot;; // no olivdar incluir el simbolo de peso $
	cmd.Connection = conn;
	da.SelectCommand = cmd;
	conn.Open();
	da.Fill(ds);

	foreach (DataRow fila in ds.Tables[0].Rows)
	{
		Response.Write(fila[0] + &quot; - &quot; fila[1]);
	}
	Response.Write(&quot;Fichero Procesado Correctamente&quot;);
}
catch (Exception ex)
{
	Response.Write(ex.Message);
}
finally
{
	conn.Close();
	conn.Dispose();
}
</pre>
<div class="shr-publisher-2853"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic --><p>Articulos Relacionados:<ol>
<li><a href='http://www.devtroce.com/2010/12/28/redireccionar-en-una-nueva-ventana-desde-el-servidor-con-asp-net/' rel='bookmark' title='Redireccionar en una nueva ventana desde el Servidor con ASP.Net'>Redireccionar en una nueva ventana desde el Servidor con ASP.Net</a></li>
<li><a href='http://www.devtroce.com/2010/11/03/exportar-directamente-a-pdf-los-reportes-de-crystal-reports-en-asp-net/' rel='bookmark' title='Exportar directamente a PDF los reportes de Crystal Reports en ASP.Net'>Exportar directamente a PDF los reportes de Crystal Reports en ASP.Net</a></li>
<li><a href='http://www.devtroce.com/2010/07/07/leer-ficheros-csv-con-delphi/' rel='bookmark' title='Leer ficheros .csv con Delphi'>Leer ficheros .csv con Delphi</a></li>
</ol></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Devtroce?a=T8Ubi3kK20g:LxMusMoB57A:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Devtroce?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Devtroce?a=T8Ubi3kK20g:LxMusMoB57A:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Devtroce?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Devtroce?a=T8Ubi3kK20g:LxMusMoB57A:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/Devtroce?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Devtroce/~4/T8Ubi3kK20g" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.devtroce.com/2012/01/23/como-leer-una-planilla-electronica-excel-con-c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.devtroce.com/2012/01/23/como-leer-una-planilla-electronica-excel-con-c/</feedburner:origLink></item>
		<item>
		<title>Tutorial de Programación Android: Mensajes de Dialogo (AlertDialog)</title>
		<link>http://feedproxy.google.com/~r/Devtroce/~3/mj6AbBwCmj4/</link>
		<comments>http://www.devtroce.com/2012/01/19/mensajes-de-dialogo-popup-alertdialog/#comments</comments>
		<pubDate>Thu, 19 Jan 2012 18:47:36 +0000</pubDate>
		<dc:creator>GeekZero</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Lenguajes de Programación]]></category>
		<category><![CDATA[Sistemas Operativos]]></category>
		<category><![CDATA[Tutoriales]]></category>

		<guid isPermaLink="false">http://www.devtroce.com/?p=2841</guid>
		<description><![CDATA[Para interactuar con el usuario desde la aplicación a veces requerimos mostrarles mensajes o preguntarle como desea que ocurra el flujo de procedo dependiendo de una respuesta o elección en concreto. Para ésto disponemos de varias herramientas tipo mensajes popup donde podemos mostrar información o requerir una acción. Veremos varios ejemplos, y ustedes irán utilizando [...]
Articulos Relacionados:<ol>
<li><a href='http://www.devtroce.com/2012/01/18/tutorial-de-programacion-android-utilizacion-de-menu/' rel='bookmark' title='Tutorial de Programación Android: Utilización de Menú'>Tutorial de Programación Android: Utilización de Menú</a></li>
<li><a href='http://www.devtroce.com/2012/01/12/tutorial-de-programacion-android-conceptos-basicos/' rel='bookmark' title='Tutorial de Programación Android: Conceptos Básicos'>Tutorial de Programación Android: Conceptos Básicos</a></li>
<li><a href='http://www.devtroce.com/2012/01/16/tutorial-de-programacion-android-manejo-de-activity/' rel='bookmark' title='Tutorial de Programación Android: Manejo de Activity'>Tutorial de Programación Android: Manejo de Activity</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Para interactuar con el usuario desde la aplicación a veces requerimos mostrarles mensajes o preguntarle como desea que ocurra el flujo de procedo dependiendo de una respuesta o elección en concreto. Para ésto disponemos de varias herramientas tipo mensajes popup donde podemos mostrar información o requerir una acción.</p>
<p>Veremos varios ejemplos, y ustedes irán utilizando cada uno en la situación más conveniente.</p>
<p>La primer opción son los mensajes <strong>Toast</strong>, que se ven encima de <span id="more-2841"></span>toda la pantalla sin importar que aplicación esté corriendo, pero éstas no tienen botón de interactuación, más bien sirve para mostrar información rápida, no tan importante y corta.</p>
<pre class="brush: java; title: ; notranslate">
Toast toast = Toast.makeText(getApplicationContext(), &quot;Ejemplo de Mensaje Popup para Android OS desde Devtroce.com&quot;, Toast.LENGTH_SHORT);
toast.show();
</pre>
<p>Se ven así:</p>
<p><a href="http://www.devtroce.com/2012/01/19/mensajes-de-dialogo-popup-alertdialog/toast/" rel="attachment wp-att-2842" title="toast"><img class="alignnone size-full wp-image-2842" title="toast" src="http://www.devtroce.com/wp-content/uploads/2012/01/toast.png" alt="" width="483" height="148" /></a></p>
<p>La siguiente opción es mostrar un cuadro de dialogo con el botón aceptar, éstos se ven solamente si el Activity está activo en la pantalla pero asegura que el usuario lo lee ya que debe presionar un botón para que el flujo continúe.</p>
<pre class="brush: java; title: ; notranslate">
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage(&quot;Ejemplo de Mensaje Popup para Android OS desde Devtroce.com&quot;)
		.setTitle(&quot;Atención!!&quot;)
		.setCancelable(false)
		.setNeutralButton(&quot;Aceptar&quot;,
				new DialogInterface.OnClickListener() {
					public void onClick(DialogInterface dialog, int id) {
						dialog.cancel();
					}
				});
AlertDialog alert = builder.create();
alert.show();
</pre>
<p><a href="http://www.devtroce.com/2012/01/19/mensajes-de-dialogo-popup-alertdialog/popup/" rel="attachment wp-att-2843" title="PopUp"><img class="alignnone size-full wp-image-2843" title="PopUp" src="http://www.devtroce.com/wp-content/uploads/2012/01/PopUp.png" alt="" width="481" height="346" /></a></p>
<p>Una opción que se utiliza mucho es preguntar al usuario si desea continuar con una actividad o no, con los botones típicos de respuesta Sí o No y en algunos casos con una tercer opción que suele ser omitir o salir. Según la opción que elija el usuario se realiza acción distinta</p>
<pre class="brush: java; title: ; notranslate">
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage(&quot;¿Desea continuar con la transferencia de dinero?&quot;)
		.setTitle(&quot;Advertencia&quot;)
		.setCancelable(false)
		.setNegativeButton(&quot;Cancelar&quot;,
				new DialogInterface.OnClickListener() {
					public void onClick(DialogInterface dialog, int id) {
						dialog.cancel();
					}
				})
		.setPositiveButton(&quot;Continuar&quot;,
				new DialogInterface.OnClickListener() {
					public void onClick(DialogInterface dialog, int id) {
						TransferirDinero(); // metodo que se debe implementar
					}
				});
AlertDialog alert = builder.create();
alert.show();
</pre>
<p><a href="http://www.devtroce.com/2012/01/19/mensajes-de-dialogo-popup-alertdialog/sino/" rel="attachment wp-att-2844" title="sino"><img class="alignnone size-full wp-image-2844" title="sino" src="http://www.devtroce.com/wp-content/uploads/2012/01/sino.png" alt="" width="466" height="292" /></a></p>
<p>También podría darse un caso en el que necesitemos mostrar más de una opción, tipo multichoise y no sean respuestas a secas. Para ello podemos mostrar una lista de opciones</p>
<pre class="brush: java; title: ; notranslate">
final CharSequence[] items = {&quot;Android OS&quot;, &quot;iOS&quot;, &quot;Windows Phone&quot;, &quot;Meego&quot;};

AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle(&quot;Tu OS móvil preferido?&quot;);
builder.setItems(items, new DialogInterface.OnClickListener() {
	public void onClick(DialogInterface dialog, int item) {
		Toast toast = Toast.makeText(getApplicationContext(), &quot;Haz elegido la opcion: &quot; + items[item] , Toast.LENGTH_SHORT);
		toast.show();
		dialog.cancel();
	}
});
AlertDialog alert = builder.create();
alert.show();
</pre>
<p><a href="http://www.devtroce.com/2012/01/19/mensajes-de-dialogo-popup-alertdialog/list/" rel="attachment wp-att-2845" title="list"><img class="alignnone size-full wp-image-2845" title="list" src="http://www.devtroce.com/wp-content/uploads/2012/01/list.png" alt="" width="483" height="494" /></a></p>
<p>A ésta opción se lo puede enriquecer con radiobuttons de manera muy sencilla, fijense que solo cambia una línea del código</p>
<pre class="brush: java; title: ; notranslate">
final CharSequence[] items = {&quot;Android OS&quot;, &quot;iOS&quot;, &quot;Windows Phone&quot;, &quot;Meego&quot;};

AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle(&quot;Tu OS móvil preferido?&quot;);
builder.setSingleChoiceItems(items, -1, new DialogInterface.OnClickListener() {
	public void onClick(DialogInterface dialog, int item) {
		Toast toast = Toast.makeText(getApplicationContext(), &quot;Haz elegido la opcion: &quot; + items[item] , Toast.LENGTH_SHORT);
		toast.show();
		dialog.cancel();
	}
});
AlertDialog alert = builder.create();
alert.show();
</pre>
<p><a href="http://www.devtroce.com/2012/01/19/mensajes-de-dialogo-popup-alertdialog/picklist/" rel="attachment wp-att-2846" title="picklist"><img class="alignnone size-full wp-image-2846" title="picklist" src="http://www.devtroce.com/wp-content/uploads/2012/01/picklist.png" alt="" width="461" height="493" /></a></p>
<p>En las siguientes entregas veremos como mostrar una barra de progreso, especial para usarlos en procesos que no son instantáneos y tardar un tiempo..</p>
<div class="shr-publisher-2841"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic --><p>Articulos Relacionados:<ol>
<li><a href='http://www.devtroce.com/2012/01/18/tutorial-de-programacion-android-utilizacion-de-menu/' rel='bookmark' title='Tutorial de Programación Android: Utilización de Menú'>Tutorial de Programación Android: Utilización de Menú</a></li>
<li><a href='http://www.devtroce.com/2012/01/12/tutorial-de-programacion-android-conceptos-basicos/' rel='bookmark' title='Tutorial de Programación Android: Conceptos Básicos'>Tutorial de Programación Android: Conceptos Básicos</a></li>
<li><a href='http://www.devtroce.com/2012/01/16/tutorial-de-programacion-android-manejo-de-activity/' rel='bookmark' title='Tutorial de Programación Android: Manejo de Activity'>Tutorial de Programación Android: Manejo de Activity</a></li>
</ol></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Devtroce?a=mj6AbBwCmj4:CgpM8sZUjgc:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Devtroce?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Devtroce?a=mj6AbBwCmj4:CgpM8sZUjgc:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Devtroce?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Devtroce?a=mj6AbBwCmj4:CgpM8sZUjgc:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/Devtroce?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Devtroce/~4/mj6AbBwCmj4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.devtroce.com/2012/01/19/mensajes-de-dialogo-popup-alertdialog/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.devtroce.com/2012/01/19/mensajes-de-dialogo-popup-alertdialog/</feedburner:origLink></item>
		<item>
		<title>Tutorial de Programación Android: Realizar Llamadas</title>
		<link>http://feedproxy.google.com/~r/Devtroce/~3/KuOZ7xRFU3M/</link>
		<comments>http://www.devtroce.com/2012/01/18/tutorial-de-programacion-android-realizar-llamadas/#comments</comments>
		<pubDate>Wed, 18 Jan 2012 17:53:32 +0000</pubDate>
		<dc:creator>GeekZero</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Lenguajes de Programación]]></category>
		<category><![CDATA[Movil]]></category>
		<category><![CDATA[Plataformas]]></category>
		<category><![CDATA[Sistemas Operativos]]></category>
		<category><![CDATA[Tutoriales]]></category>

		<guid isPermaLink="false">http://www.devtroce.com/?p=2831</guid>
		<description><![CDATA[Tenía planeado ver un poco más adelante recién como realizar llamadas, enviar y recibir mensajes de texto y multimedia desde nuestras aplicaciones, pero adelantaré algunos tips interesantes. Ésta entrada estará dedicada a ver como realizar llamadas desde nuestro android, ya que es un proceso muy sencillo y lleva muy pocas líneas. Para comenzar necesitamos agregar [...]
Articulos Relacionados:<ol>
<li><a href='http://www.devtroce.com/2012/01/16/tutorial-de-programacion-android-manejo-de-activity/' rel='bookmark' title='Tutorial de Programación Android: Manejo de Activity'>Tutorial de Programación Android: Manejo de Activity</a></li>
<li><a href='http://www.devtroce.com/2012/01/18/tutorial-de-programacion-android-utilizacion-de-menu/' rel='bookmark' title='Tutorial de Programación Android: Utilización de Menú'>Tutorial de Programación Android: Utilización de Menú</a></li>
<li><a href='http://www.devtroce.com/2012/01/12/tutorial-de-programacion-android-conceptos-basicos/' rel='bookmark' title='Tutorial de Programación Android: Conceptos Básicos'>Tutorial de Programación Android: Conceptos Básicos</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Tenía planeado ver un poco más adelante recién como realizar llamadas, enviar y recibir mensajes de texto y multimedia desde nuestras aplicaciones, pero adelantaré algunos tips interesantes.</p>
<p>Ésta entrada estará dedicada a ver como realizar llamadas desde nuestro <strong>android</strong>, ya que es un proceso muy sencillo y lleva muy pocas líneas.<span id="more-2831"></span></p>
<p>Para comenzar necesitamos agregar los permisos requeridos en el Manifiesto (manifest.xml)</p>
<pre class="brush: xml; title: ; notranslate">&lt;uses-permission android:name=&quot;android.permission.CALL_PHONE&quot;/&gt;</pre>
<p>Luego en la clase que estemos programando, importamos los siguientes espacios de nombres</p>
<pre class="brush: java; title: ; notranslate">
import android.content.Intent;
import android.net.Uri;
</pre>
<p>Y finalmente creamos un intent nuevo, y lanzamos la actividad</p>
<pre class="brush: java; title: ; notranslate">
Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse(&quot;tel:+5959614580005&quot;));
startActivity(intent);
</pre>
<p>Fue sencillo no?</p>
<div class="shr-publisher-2831"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic --><p>Articulos Relacionados:<ol>
<li><a href='http://www.devtroce.com/2012/01/16/tutorial-de-programacion-android-manejo-de-activity/' rel='bookmark' title='Tutorial de Programación Android: Manejo de Activity'>Tutorial de Programación Android: Manejo de Activity</a></li>
<li><a href='http://www.devtroce.com/2012/01/18/tutorial-de-programacion-android-utilizacion-de-menu/' rel='bookmark' title='Tutorial de Programación Android: Utilización de Menú'>Tutorial de Programación Android: Utilización de Menú</a></li>
<li><a href='http://www.devtroce.com/2012/01/12/tutorial-de-programacion-android-conceptos-basicos/' rel='bookmark' title='Tutorial de Programación Android: Conceptos Básicos'>Tutorial de Programación Android: Conceptos Básicos</a></li>
</ol></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Devtroce?a=KuOZ7xRFU3M:YV7vOSWWuUA:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Devtroce?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Devtroce?a=KuOZ7xRFU3M:YV7vOSWWuUA:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Devtroce?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Devtroce?a=KuOZ7xRFU3M:YV7vOSWWuUA:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/Devtroce?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Devtroce/~4/KuOZ7xRFU3M" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.devtroce.com/2012/01/18/tutorial-de-programacion-android-realizar-llamadas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.devtroce.com/2012/01/18/tutorial-de-programacion-android-realizar-llamadas/</feedburner:origLink></item>
	</channel>
</rss>

