Aplicações Android
As aplicações são empacotadas em um
arquivo .apk (Android package)
Contém código compilado + arquivos usados
pela aplicação
São baixados da Loja do Android (Android
Play)
Mas podem ser distribuídos e instalados de outras
maneiras
Comportamento em execução
Cada aplicação é um usuário diferente no android
(linux multi-user)
Por padrão, cada aplicação recebe um único user id
(conhecido somente pelo Android)
componente
Só define o que fazer quando o estado muda
Tipos de componentes
Activities
Representam a interface com o usuário
Services
Executam em background
Content Providers
Gerenciam dados compartilhados entre
aplicações
Broadcast Receivers
Respondem a eventos do sistema
Activities
Uma Activity representa uma tela
Ex. Aplicação de email
Uma atividade para a lista de novos emails
Outra atividade para a tela de composição de email
Outra atividade para a tela de leitura de um email
Exemplos:
Um serviço pode tocar música em background, enquanto o
usuário está em outra aplicação
@Override
public void onCreate() {
super.onCreate();
}
@Override
public void onStart(Intent intent, int startId) {
Toast.makeText(this, "Hello Service Started", Toast.LENGTH_SHORT).show();
super.onStart(intent, startId);
}
@Override
public void onDestroy() {
}
Content Providers
Armazenam e gerenciam dados, fazendo-os
acessíveis para todas as aplicações
Maneira mais adequada de compartilhar dados entre
aplicações
Já existem vários provedores de conteúdo na
plataforma
Manipulação de dados comuns (audio, video, images,
personal contact information)
Estão presentes no pacote android.provider.
Diferentes aplicações!
Implementando um Content
Provider
Deve definir uma subclasse de
android.app.ContentProvider
<provider android:name="com.example.autos.AutoInfoProvider"
android:authorities="com.example.autos.autoinfoprovider"
. . . />
</provider>
Implementando um Content
Provider
Deve implementar os métodos:
query()
insert()
update()
delete()
getType()
onCreate()
content://com.example.autos.autoinfoprovider
Broadcast Receivers
Componente que responde a “anúncios”
(eventos) de todo o sistema
Diversos broadcast são gerados pelo sistema
Aviso de bateria fraca
Aviso que a tela foi desligada
Recebimento de SMS
Aplicações também podem gerar broadcast
Aviso que um download completou
Aviso que um determinado algoritmo terminou
Implementando um
BroadcastReceiver
Deve definir uma subclasse de
android.app.BroadcastReceiver
<receiver android:name=".MyReceiver">
<intent-filter>
<action android:name="com.teste.action.SAVE"/>
</intent-filter>
</receiver>
Enviando e recebendo mensagens
de broadcast
Mensagens de broadcast são
representadas por objetos do tipo Intent
<application>
.....
<receiver android:name=".PhoneReceiver">
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE" />
</intent-filter>
</receiver>
</application>
Exemplo: Recebendo notificação
de Ligação
Criando a classe Receiver...
if (extras != null) {
String state = extras.getString(TelephonyManager.EXTRA_STATE);
if (state.equals(TelephonyManager.EXTRA_STATE_RINGING)) {
String phoneNumber = extras.getString(TelephonyManager.EXTRA_INCOMING_NUMBER);
}
}
}
}
FIM