CLASE 03
Broadcast Receiver
ViewGroups
BROADCAST RECEIVERS
Reciben mensajes propios o del sistema
Permisos
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
Depende el tipo de mensaje para el que nos queramos registrar, es posible que necesitemos un permiso.
Los permisos brindan seguridad al usuario.
Nos dicen que nivel que accedo va a tener la aplicación.
Se presentan cada vez que se va a instalar una aplicación, es importante presetarle atención y saber que significa cada uno.
Registro Estático
<receiver android:name=".AirplaneReceiver" >
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
</receiver>
Se registra de manera estática cuando se hace en el manifiesto. Tiene la ventaja de que permanece registrado aún cuando la aplicación no esta visible.
public void onReceive(Context con, Intent i){
if(i.getAction().equals("android.net.conn.CONNECTIVITY_CHANGE")){
ConnectivityManager conMan = (ConnectivityManager) con
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = conMan.getActiveNetworkInfo();
if (null == netInfo){
info += "Desconectado";
}else{
info += netInfo.getTypeName();
}
}
}
Registro Dinámio
// Registrar
IntentFilter filter = new IntentFilter();
filter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
registerReceiver(airplaneReceiver, filter);
// Desregistrar
unregisterReceiver(airplaneReceiver);
Es responsabilidad del desarrollador registrar y des-registrar el receiver.
private BroadcastReceiver airplaneReceiver = new BroadcastReceiver(){
@Override
public void onReceive(Context context, Intent intent){
if(i.getAction().equals("android.net.conn.CONNECTIVITY_CHANGE")){
ConnectivityManager conMan = (ConnectivityManager) con
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = conMan.getActiveNetworkInfo();
}
}
}
ViewGroups
Organizan las Views
LinearLayout
Ordena las vistas en filas o columnas, dependiendo de su orientación: vertical u horizontal.
No permiten más de una vista en cada una de estas filas o columnas.
RelativeLayout
Permite ordenar las vistas de manera relativa, ya sea entre ellas o respecto a su padre. Es necesario que las vistas tengan un ID, porque es lo que se usa para referenciarlas.
Es el más flexible de los ViewGroups
Weight (peso)
Es una propiedad muy interesante de las vistas, que permite darle un peso a cada una de ellas.
Util para dimensionar las vistas de manera relativa
ScrollView
Es un tipo de ViewGroup que nos resuelve el scroll (en este caso vertical).
Sólo puede tener una única view/viewGroup hijo que es la que va a scrollear.
Su dual, para hacer scroll de manera horizontal es el HorizontalScrollView
NOTIFICATIONS
Lanzar una Notificación
private static void showNotification(String eventtext, Context mContext, Intent i) {
PendingIntent contentIntent = PendingIntent.getActivity(mContext, 0,
i, PendingIntent.FLAG_UPDATE_CURRENT);
NotificationCompat.Builder mBuilder =
new NotificationCompat.Builder(mContext)
.setSmallIcon(R.drawable.ic_launcher)
.setContentTitle("TITULO")
.setContentText(eventtext)
.setTicker("nueva notif")
.setContentIntent(contentIntent)
.setAutoCancel(true);
// Gets an instance of the NotificationManager service
NotificationManager mNotifyMgr = (NotificationManager)
mContext.getSystemService(Context.NOTIFICATION_SERVICE);
// Builds the notification and issues it.
mNotifyMgr.notify(1, mBuilder.build());
}
Gracias!
No dejen de consultar cualquier duda que surja
sebasira@gmail.com
Android - Clase 03
By Ing. Sebastian M. Irazabal
Android - Clase 03
- 489