Você está na página 1de 13

Yuri Adams Agile, Mobile e something more

Incio Posts Comentrios Android Boas Prticas Testes JSF hibernate Ant

DESENVOLVENDO PARA ANDROID: NOTIFICAES.


31/01/2012 Deixe um comentrio Opa galera, depois de tanto tempo, estou voltando para escrever um post rpido sobre android. Que so as notificaes, lugares onde possam ser armazenados pequenas mensagens de aviso para o usurio. Para criar uma nova notificao basta dar inicializar a classe Notification. Ela pode receber no construtor uma imagem, texto e o momento em que ela foi criada. Para mais informaes consulte a documentao do Android.
Notification notification = new Notification(R.drawable.imagem, message, System.currentTimeMillis());

Ela deve conter a ao no qual ocorrer quando ela for selecionada. Ento ela deve conter uma Intent para saber o que fazer quando isso ocorrer. Um ponto pra ser reparado o fato de colocar a flag Intent.FLAG_ACTIVITY_NEW_TASK na Intent. Assim ela iniciar uma nova Activity a sua escolha.
Intent notificationIntent = new Intent(ctx, Activity.class); PendingIntent contentIntent = PendingIntent.getActivity(ctx, 0, notificationIntent, Intent.FLAG_ACTIVITY_NEW_TASK);

A seguir o exemplo completo:


Notification notification = new Notification(R.drawable.imagem, message, System.currentTimeMillis());   Intent notificationIntent = new Intent(ctx, Activity.class); PendingIntent contentIntent = PendingIntent.getActivity(ctx, 0, notificationIntent, Intent.FLAG_ACTIVITY_NEW_TASK);  

//Aqui adicionamos o efeito de vibrar ao adicionar a notificao. Lembrando que para isso, precisamos adicionar a pe //<uses-permission android:name="android.permission.VIBRATE"></uses-permission> no AndroidManifest.xml notification.defaults |= Notification.DEFAULT_VIBRATE; long[] vibrate = {0,100,200,300}; notification.vibrate = vibrate; &nbsp; //Aqui estamos setando o ttulo para a notificao e o texto que ser exibido notification.setLatestEventInfo(ctx, "Ttulo", message, contentIntent); &nbsp; //Aqui estamos configurando o controle das notificaes. Para isso voc pega um servio do sistema NotificationManager manager = (NotificationManager) ctx.getSystemService(Context.NOTIFICATION_SERVICE); //Ento s exibir a notificao pronta no sistema manager.notify(idNoty, notification);

Arquivado em Android Etiquetado com Android

ANDROID: SINCRONIZANDO COM A WEB


30/09/2011 4 Comentrios Neste Post veremos como sua app android pode se comunicar e obter dados a partir de algum servidor web. Essa comunicao feita utilizando JSON (JavaScript Object Notation), que uma formatao leve de troca de dados e de fcil manipulao de dados formatados de sua maneira. Nesse exemplo, que apenas a captura de um arquivo json retornada pelo servidor, utilizaremos a classe HttpClient para abrir a comunicao. Vamos abrir uma InputStream e com a classe Scanner , receber os dados enviados do servidor e concatenar em uma StringBuffer. Exemplo do mtodo bastante simples carregaJsonDoServidor a seguir:
public String carregaJsonDoServidor() throws ClientProtocolException, IOException { HttpClient httpClient = new DefaultHttpClient(); HttpGet httpGet = new HttpGet(encode); HttpResponse response = httpClient.execute(httpGet); StringBuffer sb = new StringBuffer(); HttpEntity entity = response.getEntity(); if (entity != null) { Scanner s = new Scanner(entity.getContent()); s.useDelimiter(","); while (s.hasNext()) { sb.append(s.next()).append(","); } } return sb.toString(); }

Arquivado em Android

DESENVOLVENDO PARA ANDROID: MEXENDO COM MAPAS


18/08/2011 1 Comentrio Opa, voltando a falar sobre Android, vamos falar de um negcio bacana, que brincar com o GMap. Mas para manipularmos mapas, teremos que ter uma Google API Key . Para consegui-la, entre no link. Nele, voc deve colocar seu fingerprint, que pode ser conseguido atravs do comando: keytool -list -alias meualias -keystore minhachave.jks o google vai ti devolver uma tela aonde voc ter um trecho de cdigo que ser usado na sua view de mapas.
<com.google.android.maps.MapView android:layout_width="fill_parent" android:layout_height="fill_parent" android:apiKey="0BN1gWBPEYDQluZey4KPKZH_C4AMH2sG02G1GLg" android:id="@+id/map_view"/>

Vamos ao momento feliz, mo na massa!! O desafio ser o seguinte: Me achar no mapa. Mostrando a minha localizao pelo gps. I) Temos que criar uma o mapa.xml dentro do res/layout, uma vez que recebemos o cdigo do site do google que exibi acima.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent"> <com.google.android.maps.MapView android:layout_width="fill_parent" android:layout_height="fill_parent" android:apiKey="0BN1gWBPEYDQluZey4KPKZH_C4AMH2sG02G1GLg" android:id="@+id/map_view"/> </LinearLayout>

II) Como j foi visto , uma tela uma Activity. Mas neste caso ser um MapActivity pois queremos todas as funcionalidades que um mapa pode nos dar. Vamos criar uma classe Mapa.java que extenda MapActivity:
@Override protected boolean isRouteDisplayed() { return false; } @Override protected void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.mapa); mapView = (MapView) findViewById(R.id.map_view); mapController = mapView.getController(); //Pegamos os controles necessrios do nosso sistema. mapView.setSatellite(true); mapView.setStreetView(true); mapView.displayZoomControls(true); mapController.setZoom(14); final List<Overlay> overlays = mapView.getOverlays(); //Criamos um overlay, assim podemos nos achar no mapa e ainda mostrar o recurso de bssola(plus!). MyLocationOverlay myLocationOverlay = new MyLocationOverlay(this, mapView); overlays.add(myLocationOverlay); myLocationOverlay.enableCompass(); myLocationOverlay.enableMyLocation();

//E temos que atualizar o nosso sistema, quando tivermos em movimento. Para isso, criamos um listener, e //a LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); Criteria criteria = new Criteria(); criteria.setAccuracy(Criteria.ACCURACY_COARSE); criteria.setAltitudeRequired(false); criteria.setCostAllowed(true); criteria.setPowerRequirement(Criteria.POWER_HIGH); String provider = locationManager.getBestProvider(criteria, true); Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); atualizarMeuLocal(location); } LocationListener locationListener = new LocationListener() {

public void onStatusChanged(String provider, int status, Bundle extras) { } public void onProviderEnabled(String provider) { } public void onProviderDisabled(String provider) { atualizarMeuLocal(null); } public void onLocationChanged(Location location) { atualizarMeuLocal(location); } }; //Socilitamos que rode o listener a cada 2 segundos ou uma diferena de 20 metros. locationManager.requestLocationUpdates(provider, 2000, 20, locationListener ); }

//Agora temos que criar o nosso mtodo atualizarMeuLocal(Location location), repare que ele o location que private void atualizarMeuLocal(Location location) { if(location != null){ Double geoLat = location.getLatitude() * 1E6; Double geoLong = location.getLongitude() * 1E6; GeoPoint point = new GeoPoint(geoLat.intValue(), geoLong.intValue()); //Sempre que o o mtodo for chamado, ele ir mover o nosso mapa para a posio atual. mapController.animateTo(point); } }

Arquivado em Android Etiquetado com Android

DESENVOVER PARA ANDROID: INTENTS II (ENVIANDO SMS).


15/05/2011 Deixe um comentrio Outro post bem rpido que a respeito de enviar uma mensagem sms. Para isso temos que pedir permisso para o Android.
<uses-permission android:name="android.permission.CALL_PHONE"/> <uses-permission android:name="android.permission.READ_SMS"/> <uses-permission android:name="android.permission.SEND_SMS"/>

Fazendo mais um menu na sua app para dar essa opo ao usurio, temos:
SmsManager smsManager = SmsManager.getDefault(); PendingIntent sentIntent = PendingIntent.getActivity(this, 0, null, 0); if(PhoneNumberUtils.isWellFormedSmsAddress(pessoa.getTelefone())){ smsManager.sendTextMessage(aluno.getTelefone(), null, "Enviando uma mensagem SMS..", sentIntent,null); Toast.makeText(this, "SMS enviado com sucesso!!", Toast.LENGTH_LONG).show(); }else{ Toast.makeText(this, "Falha no SMS - Tente novamente..", Toast.LENGTH_LONG).show(); }

Para voc se acostumar com esses mtodos e aprender o que cada parmetro desses quer dizer recomendo a Documentao do Android. isso Boa Semana! Arquivado em Android

DESENVOLVER PARA ANDROID: INTENTS (CHAMADAS TELEFONICAS).


15/05/2011 Deixe um comentrio

A maneira fcil Para efetuarmos ligaes telefnicas no Android voc chamar uma intent(inteno, bem bvio. Voc no manda em nada! Tem que pedir antes) de ligar pra algum, como segue:
try{ Intent chamada = new Intent(Intent.ACTION_CALL); chamada.setData(Uri.parse("tel:" + pessoa.getTelefone())); startActivity(chamada); }catch(ActivityNotFoundException e){ Log.e("Exemplo de chamada", "falha", e); }

Para que isso se torne funcional, vamos incluir um uma opo na nossa classe principal de listagem. Integrando com um contextMenu na app aps um longclick e buscando as informaes na base de dados. Agora precisamos incluir a permisso no AndroidManifest.xml.
<uses-permission android:name="android.permission.CALL_PHONE"/>

Arquivado em Android Etiquetado com Android

DESENVOLVER PARA ANDROID: UTILIZANDO RECURSOS DA CMERA.


26/04/2011 2 Comentrios A utilizao da cmera pode ser feita pedindo a ela para tirar uma foto para voc. um mtodo bastante simples, pois voc no precisa saber exatamente como uma cmera funciona e tambm porque poder usar todos os controles j existentes na cmera, como efeitos de luminosidade, contraste, flash, etc. Basta chamar a Intent da cmera:
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(intent);

Com esse trecho de cdigo j ser possvel exibir a cmera do emulador ou no seu prprio dispositivo android. Agora vamos tratar do local onde sua app ir armazenar as fotos.
String arquivo = Environment.getExternalStorageDirectory() + "/" + System.currentTimeMillis() + ".jpg"; File file = new File(arquivo); Uri outputFileUri = Uri.fromFile(file); intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);

A manipulao do arquivo feita pela classe File(padro do java) e a localizao do seu SDCard encontrada pelo mtodo Environment.getExternalStorageDirectory() . E as operaes adicionais que fizemos foi dar nome imagem e iniciar a atividade. E dando continuidade no nosso formulrio, iremos listar algo a mais para increment-la. Na classe Formulario.java que ser chamada pela sua Activity principal ao clicar em um registro da sua ListView, adicione esse cdigo.
private ImageButton ib; ib = (ImageButton) findViewById(R.id.foto);

ib.setImageResource(R.drawable.noimage); ib.setOnClickListener(new OnClickListener() { public void onClick(View v) { Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); arquivo = Environment.getExternalStorageDirectory() + "/" + System.currentTimeMillis() + ".jpg"; File file = new File(arquivo); Uri outputFileUri = Uri.fromFile(file); intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri); startActivityForResult(intent, TIRA_FOTO); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if(requestCode == TIRA_FOTO){ if(resultCode != RESULT_CANCELED){ aluno.setFoto(arquivo); carregaImagem(); } } } private void carregaImagem() { FileInputStream fis; Bitmap bmp = null; try { fis = new FileInputStream(aluno.getFoto()); bmp = BitmapFactory.decodeStream(fis); fis.close(); } catch (Exception e) { e.printStackTrace(); } if(bmp != null){ bmp = Bitmap.createScaledBitmap(bmp, 50, 50, true); } } }); if(aluno.getFoto() != null){ carregaImagem(); } }

Aqui tratamos do resultado da operao com o mtodo onActivityResult() e a exibio da foto atravs da classe Bitmap e FileInputStrem. Agora o resultado como ficou no seu emulador.

Clicando no boto:

isso..

Arquivado em Android Etiquetado com Android

DESENVOLVER PARA ANDROID: PERSISTNCIA COM SQLite (Finalizando).


12/04/2011 47 Comentrios Para que tudo que ns fizemos faa sentido, preciso que possamos adicionar os registros no banco e com isso, alterar o nosso formulrio para a criao do registro Pessoa, e criar um evento no boto inserir funcione. Primeiro, temos que substituir o hardcoded por uma chamada ao PessoaDAO e alterar o ArrayAdapter para receber nossa lista de Pessoas. Depois, vamos substituir o cdigo do boto por algo que realmente funcione. Ento pegaremos os dados da tela, preencheremos o objeto Pessoa e diremos ao PessoaDAO que o salve. E agora testar. Ai vai o cdigo.
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.lista); lista = (ListView) findViewById(R.id.lista); PessoaDao dao = new PessoaDao(this); List<Pessoa> pessoas = dao.getLista(); dao.close(); ArrayAdapter<Pessoa> adapter = new ArrayAdapter<Pessoa>(this,android.R.layout.simple_list_item_1,pessoas); lista.setAdapter(adapter); lista.setClickable(true); }

Button botao = (Button) findViewById(R.id.botao); botao.setOnClickListener(new OnClickListener() { public void onClick(View v) { EditText nome = (EditText) findViewById(R.id.EditNome); EditText telefone = (EditText) findViewById(R.id.editTelefone); EditText site = (EditText) findViewById(R.id.editSite); EditText endereco = (EditText) findViewById(R.id.editEndereco); pessoa.setNome(nome.getEditableText().toString()); pessoa.setTelefone(telefone.getEditableText().toString()); pessoa.setSite(site.getEditableText().toString()); pessoa.setEndereco(endereco.getEditableText().toString()); PessoaDao dao = new PessoaDao(Formulario.this); if(posicao != -1){ pessoa.setId(posicao+1); dao.alterar(pessoa); }else{ dao.inserir(pessoa); } dao.close();

finish(); } });

Um ponto importante, se voc deixar desta maneira, a app vai comear a empilhar telas, ento vamos usar. Quando chamamos o mtodo finish, ele finaliza a Activity que est em primeiro plano, e ao voltar na anterior ele roda o mtodo onRestart() (Ver ciclo de vida das Activitys). Ento vamos implementar o onRestart na Activity principal.
@Override protected void onResume() { super.onResume(); carregaLista(); } private void carregaLista() { PessoaDao dao = new PessoaDao(this); List<Pessoa> pessoas = dao.getLista(); dao.close(); lista.setAdapter(new ArrayAdapter<View>(this, android.R.layout.simple_list_item_1,pessoas){ }

Quando eu j estiver inserido algum registro, o boto que ser renderizado ao clicar em um item na tela de listagem ser o boto de update de pessoa. Ento acesse o menu novo e veja o resultado.Ao final de tudo, o resultado ser esse.

Arquivado em Android

DESENVOLVER PARA ANDROID: PERSISTNCIA COM SQLite III (Criando nossa pgina de Formulrio).
03/04/2011 5 Comentrios Esse post no tem muito haver com persistncia em si. Porm precisaremos dele para demonstrar os resultados dos mtodos feitos anteriormente. Super rpido vou s demonstrar a tela gerada e o cdigo fonte.

Lembrando sempre, criando uma nova pgina, precisamos declar-la no AndroidManifest.xml.


<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"> <ScrollView android:layout_width="fill_parent" android:layout_height="fill_parent"> <LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"> <ImageButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/noimage" android:id="@+id/foto" android:layout_gravity="center"></ImageButton> <TextView android:text="Nome:" android:id="@+id/textNome" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView> <EditText android:layout_width="fill_parent" android:text="" android:layout_height="wrap_content" android:id="@+id/EditNome" android:hint="Digite o nome.."></EditText> <TextView android:text="Telefone:" android:id="@+id/textTelefone" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView> <EditText android:layout_width="fill_parent" android:text="" android:layout_height="wrap_content" android:id="@+id/editTelefone" android:hint="Digite o telefone.."></EditText> <TextView android:text="Endereo:" android:id="@+id/textEndereco" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView> <EditText android:layout_width="fill_parent" android:text="" android:layout_height="wrap_content" android:id="@+id/editEndereco" android:hint="Digite o endereo.."></EditText> <TextView android:text="Site:" android:id="@+id/textSite" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView> <EditText android:layout_width="fill_parent" android:text="" android:layout_height="wrap_content" android:id="@+id/editSite" android:hint="Digite o site.."></EditText> <Button android:text="Inserir" android:id="@+id/botao" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center"></Button> </LinearLayout> </ScrollView> </LinearLayout>

estranho esse ImageButton solto na tela n? pois , voltaremos para ele nos prximos captulos. E no prximo post integraremos a tela criada com os mtodos do nosso DAO. Arquivado em Android Etiquetado com Android

DESENVOLVER PARA ANDROID: PERSISTENCIA COM SQLite II (OUTROS MTODOS PARA O NOSSO CRUD.).
01/04/2011 14 Comentrios Tendo a estrutura do nosso esquema criado, vamos criar outros mtodos no nosso DAO que ser necessrio para fecharmos nosso CRUD de Pessoa. O estilo bastante semelhante com o JDBC do Java, ou seja, teremos que converter manualmente um objeto na estrutura da tabela. Com uma

diferena, no ser preciso escrever a query em si, os mtodos do SQLiteDatabase j as encapsula. Apenas temos que cuidar dos parmetros que passaremos pra eles. Um objeto SQLiteDatabase j tem pronto o mtodo insert, que recebe o nome da tabela. Assim, para inserir um novo registro no BD, no precisamos do SQL, basta usar o mtodo que o SQL ser gerado automaticamente. Segue o exemplo do mtodo inserir na nossa classe PessoaDAO:
public void inserir(Pessoa pessoa){ ContentValues valores = new ContentValues(); valores.put("nome", pessoa.getNome()); valores.put("site", pessoa.getSite()); valores.put("foto", pessoa.getFoto()); valores.put("telefone", pessoa.getTelefone()); valores.put("endereco", pessoa.getEndereco()); getWritableDatabase().insert(TABELA, null, valores); }

Tendo o nosso C do CRUD em ordem, vamos para a listagem das pessoas cadastradas no banco. Para buscar todas as pessoas teremos que lidar com o objeto Cursor, fazendo um paralelo com o jdbc, se trata de um primo do ResultSet. E da mesma forma do insert, contamos o mtodo query que nos d mais liberdade nas buscas(liberdade = maior nmero de parmetros
Cursor c = getWritableDatabase().query(TABELA, COLUNAS, null, null, null, null, null);

).

Os outros parmetros que deixamos em branco nos permite fazer select, groupBy, having, sortBy, por ai vai. s explorar a API para ganhar prtica nesses parmetros. Similarmente ao ResultSet, tendo o resultado da busca em um Cursor, bastamos iterar sobre suas linhas preenchendo o objeto Pessoa.
public List<Pessoa> getLista(){ Cursor c = getWritableDatabase().query(TABELA, COLUNAS, null, null, null, null, null); List<Pessoa> lista = new ArrayList<Pessoa>(); while(c.moveToNext()){ Pessoa pessoa = new Pessoa(); pessoa.setId(c.getInt(0)); pessoa.setNome(c.getString(1)); pessoa.setTelefone(c.getString(2)); pessoa.setEndereco(c.getString(3)); pessoa.setSite(c.getString(4)); pessoa.setFoto(c.getString(5)); lista .add(pessoa); } c.close(); return lista; }

A app do nosso crud ganhando corpo.. isso galera, agora dar uma olhada nas coisas da Faculdade porque a boca quente. Arquivado em Android Etiquetado com Android

DESENVOLVER PARA ANDROID: PERSISTENCIA COM SQLite I (Criando o Modelo e DAO).


30/03/2011 6 Comentrios Apesar da crescente capacidade dos aparelhos mveis, ainda no vivel guardar um banco de dados completo nesses dispositivos. Para persistirmos os dados no Android, usaremos o SQLite e alguns arquivos arquivos de sistema, os SharedPreferences, que permitem acessarmos dados persistidos. Esse post pretendo dividir em duas a quatro partes(to s o bagao pra pensar melhor). Ao final desses posts, teremos uma tela de formulrio com as principais funcionalidades para fazermos um CRUD ou perto disso. Nesse primeiro post comearemos fazendo nossa classe de modelo(POJO/JavaBean) e a classe DAO, para acesso do banco de dados. Deixando de mimimi, criaremos a classe de modelo que queremos representar no nosso BD, neste exemplo, a classe Pessoa (nada batido ).

private private private private private private &nbsp;

int id; String nome; String telefone; String endereco; String site; String foto;

//respectivos getters e setters //tambm seria interessante sobrescrever o mtodo toString().

Fazendo uma reprise, o DAO, ou Data Access Object, um padro que deve funcionar como ponte entre o mundo relacional do banco de dados, com o mundo OO das linguagens de alto nvel como o java. No caso do Android, o SQLite que um banco mais leve, salva os objetos em arquivos locais. Veremos que a metologia de implementao do DAO no Android se assemelha bastante com o JDBC do java. Para criar uma classe PessoaDAO.java, temos que estender SQLiteOpenHelper (ai est a diferena) e ter um construtor que receba um objeto do tipo Context. Esse objeto traz informaes sobre a aplicao. Ao receber esse objeto, chamamos o construtor da classe me, passando o contexto e algumas configuraes do seu banco em particular. Logo de sada, precisaremos sobrescrever dois mtodos: onCreate, mtodo que ao executar cria o nosso BD. onUpgrade, executado na alterao da estrutura do banco.
public class PessoaDAO extends SQLiteOpenHelper{ public PessoaDAO(Context context, String name, CursorFactory factory, int version) { super(context, name, factory, version); // TODO Auto-generated constructor stub } @Override public void onCreate(SQLiteDatabase db) { // TODO Auto-generated method stub } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // TODO Auto-generated method stub } }

Precisamos corrigir o construtor da classe, criaremos as constantes necessrias para configurao do banco:
private static final String TABELA = "Pessoa"; private static final int VERSION = 1; public PessoaDAO(Context context) { super(context, TABELA, null, VERSION); }

E por fim, para criarmos o banco, precisamos de um script SQL de criao informando as colunas e seus tipos.
"CREATE TABLE " + TABELA + "( id INTEGER PRIMARY KEY," + " nome TEXT UNIQUE NOT NULL," + " telefone TEXT," + " endereco TEXT," + " site TEXT, " + " foto TEXT" + ");";

Essa query ser executada na criao do banco, ento inserimos no mtodo onCreate(). E se alguma alterao for feita no banco, por exemplo, excluimos (essa no uma boa tcnica, perderemos os dados, mas isso s um pequeno tutorial) o anterior e criamos um novo com as alteraes. a seguir como ficaram os mtodos em questo:

@Override public void onCreate(SQLiteDatabase db) { String sql = "CREATE TABLE " + TABELA + "( id INTEGER PRIMARY KEY," + " nome TEXT UNIQUE NOT NULL," + " telefone TEXT," + " endereco TEXT," + " site TEXT, " + " foto TEXT" + ");"; db.execSQL(sql); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("DROP TABLE IF EXISTS " + PessoaDAO.TABELA); this.onCreate(db); }

To be continued.. Arquivado em Android Posts mais antigos JavaCE Community Conference EU VOU!

Tpicos recentes DESENVOLVENDO PARA ANDROID: NOTIFICAES. REFACTORING Caso Real e boas maneiras Parte IV (Keep Walking) REFACTORING Caso Real e boas maneiras Parte III (Solues) REFACTORING Caso Real e Boas Maneiras: Parte II (Bad Smells) REFACTORING Caso Real e boas maneiras Parte I (Intro) Arquivos janeiro 2012 novembro 2011 setembro 2011 agosto 2011 maio 2011 abril 2011 maro 2011 Categorias Android Ant Boas Prticas hibernate JSF Testes Mais Acessados

yuriadamsmaia.files.wordp yuriadamsmaia.files.wordp yuriadamsmaia.files.wordp yuriadamsmaia.files.wordp github.com/yuriadams. Lista de Links Cristiano Milfont Handerson Frota Igo Coelho JavaCE Marcos Brizeno Rafael Ponte Rodrigo Maia Rodrigo Maia Testes Yuri Adams Espancanento de putas e o Littlefinger na tenda do Renly? Wtf? 17 hours ago Nao estou gostando desse lado "for dummies" que game of thrones esta indo. 18 hours ago I unlocked the Game of Thrones: Garden of Bones sticker on @GetGlue! http://t.co/3b2HbRkq 18 hours ago RT @NFLBrasil: Trs jogos da MLB foram adiados hoje por causa da chuva. Pode at nevar que os jogos da NFL no so adiados! Logo NFL &gt ... 21 hours ago My Top 2 #lastfm Artists: Above & Beyond (2) & NC306 - Alottoni, Sra. Jovem Nerd, Portuguesa e Azaghal (1) http://t.co/20hEpVPE 22 hours ago Follow me! Digite seu endereo de email para acompanhar esse blog e receber notificaes de novos posts por email.

Blog no WordPress.com. Tema: Enterprise at StudioPress. Seguir

Follow Yuri Adams


Obtenha todo post novo entregue na sua caixa de entrada.

Powered by WordPress.com

Você também pode gostar