Professional Documents
Culture Documents
ndice
Introduccin Interfaces de Usuario Actividades Servicios Eventos Mens Almacenamiento de Datos ContentProviders Seguridad Listados de Bibliotecas
Elementos
Views: interfaz grfica visual Activity: presentacin de la aplicacin (casi siempre asociado a una pantalla) Services: procesos no visuales ejecutado en background Broadcast receivers: consumidores de Broadcast Intents Intents: paso de mensajes Notifications: eventos de/para usuario Content Providers: almacn compartido de datos
ndice
Introduccin Interfaces de Usuario Actividades Servicios Eventos Mens Almacenamiento de Datos ContentProviders Seguridad Listados de Bibliotecas
Interfaces de Usuario
View y ViewGroup
View: Punto de interaccin con el usuario ViewGroup: agrupacin lgica de elementos visuales
Views
Unidad bsica de GUI Todas las clases visuales heredan de View rea rectangular de pantalla
Sabe dibujarse Gestiona eventos
Especificacin XML
Desacopla detalles visuales de lgica de control
View en XML
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:id=@+id/myTextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> </LinearLayout>
View en XML
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } ... // buscamos el TextView por el ID TextView myTextView= (TextView)findViewByID(R.id.myTextView);
ViewGroups
View contenedora de Views Clase base para layouts Jerarqua de objetos visuales
Widget
View con funcionalidad (compleja) Creacin de Widget
Se crea una View Se aade gestin de eventos, componentes visuales,
Widgets
TextView: etiqueta de slo lectura EditText: campo de texto modificable ListView: crea y gestiona lista de Views Spinner: control compuesto: TextView + ListView, para seleccin de tem Button: botn CheckBox: botn de dos estados RadioButton: seleccin exclusiva entre varios tems
Widgets
Formulario Spinner
Widgets
Autocompletar Google Map
Layout
Gestores de elementos visuales
Heredan de ViewGroup
Layouts
FrameLayout: el ms simple
Cada View hija se aade en la esquina sup. izq. tapando a la anterior
LinearLayout: Views alineadas (hor. / ver.) RelativeLayout: nuevas Views en posicin relativa a las anteriores TableLayout: grid de filas/columnas AbsoluteLayout: Views con coordenadas absolutas
Layout
LinearLayout
RelativeLayout
TableLayout
Layout
GridView
TabView
ListView
Jerarqua Layout
java.lang.Object android.view.View android.view.ViewGroup Known Direct Subclasses AbsoluteLayout, AdapterView<T extends Adapter>, FrameLayout, LinearLayout, RelativeLayout, SlidingDrawer AbsoluteLayout This class is deprecated. Use FrameLayout, RelativeLayout or a custom layout instead.
Jerarqua Layout
Known Indirect Subclasses AbsListView, AbsSpinner, AppWidgetHostView, DatePicker, DialerFilter, ExpandableListView, Gallery, GestureOverlayView, GridView, HorizontalScrollView, ImageSwitcher, ListView, MediaController, RadioGroup, ScrollView, Spinner, TabHost, TabWidget, TableLayout, TableRow, TextSwitcher, TimePicker, TwoLineListItem, ViewAnimator, ViewFlipper, ViewSwitcher, WebView, ZoomControls
Adapters
Enlace Views con Datos
Normalmente externos
AdapterView
Las Views hijas se crean e inicializan con datos externos
Los ms comunes
CursorAdapter: vista de base de datos ArrayAdapter: array arbitrario
Adapters
ArrayAdapter<String> myAdapter;
myAdapter= new ArrayAdapter<String>(this, layoutID, myStringArray); myListView.setAdapter(myAdapter);
Adapter
android.widget.Adapter Known Indirect Subclasses ArrayAdapter<T>, BaseAdapter, CursorAdapter, HeaderViewListAdapter, ListAdapter, ResourceCursorAdapter, SimpleAdapter, SimpleCursorAdapter, SpinnerAdapter, WrapperListAdapter java.lang.Object android.view.View android.view.ViewGroup android.widget.AdapterView<T extends android.widget.Adapter>
ndice
Introduccin Interfaces de Usuario Actividades Servicios Eventos Mens Almacenamiento de Datos ContentProviders Seguridad Listados de Bibliotecas
Activity
Hereda de android.app.Activity Casi siempre contiene una GUI Responsabilidad limitada (alta cohesin, bajo acoplamiento) Una aplicacin puede contener varias Activity
Una de ellas ser la principal
Pueden usar componentes visuales, interactuar con servicios, crear Intents, etc. Se puede invocar a otra (subactividad)
Invocacin subActivity
Fire and Forget
Se crea la subactividad La subactividad toma el foco La creadora no espera respuesta
Y baja en la pila
Async callback
Se crea la subactividad que al finalizar invoca al mtodo de regreso onActivityResult() de la principal Se crea con startActivityForResult()
ActivityManager
Controla ciclo de vida de cada actividad Controla la pila de actividades Monitoriza
Deteccin ANR (Application Not Responding)
Actividad sin responder a un evento en 5 segundos BroadcastReceiver no finaliza en 10 segundos
Ejemplo ANR
Ejemplo FC
Cambio de estado
Transicin notificada mediante mtodos de Actividad
sobreescribirlos
Ciclo de Vida
onCreate(), onDestroy(): Abarcan todo el ciclo de vida. Invocados al principio (arranque o rearranque) y al fin de la actividad onStart(), onStop(): Parte visible del ciclo de vida. Desde onStart() hasta onStop(). Podra no disponder de foco (usuario interactuando con actividades superpuestas). Pueden ser llamados mltiples veces. onResume(), onPause(): Parte til del ciclo de vida. Desde onResume() hasta onPause(), actividad visible, y con foco: el usuario puede interactuar con ella.
ndice
Introduccin Interfaces de Usuario Actividades Servicios Eventos Mens Almacenamiento de Datos ContentProviders Seguridad Listados de Bibliotecas
Servicios
Ejecutados en segundo plano, sin GUI Ms prioridad que Activity
LocationManager MediaController NotificationManager
Conexiones al Servicio
IBinder onBind(Intent intent): un cliente se conecta. Devuelve un canal (IBinder) para interactuar Boolean onUnbind(Intent intent): un cliente se desconecta void onRebind(Intent intent): el cliente vuelve a conectarse
Despus de haberse desconectado
NotificationManager
Comunicacin de eventos al usuario
Invisibles, sin interfaz grfica
Tipos
Icono persistente en barra de estado Encendido y apagado de LED Vibracin Audio Iluminacin
ndice
Introduccin Interfaces de Usuario Actividades Servicios Eventos Mens Almacenamiento de Datos ContentProviders Seguridad Listados de Bibliotecas
Intenciones
Intent: mecanismo basado en paso de mensajes para (intentar) realizar una accin Inicia Actividades y Servicios o difunde mensajes Desacoplamiento componentes
Innecesario conocer implementaciones
Late binding en ejecucin
Intents
Invocan Actividades y Servicios Anuncian e Informan de cosas que pasan a los BroadcastReceivers Intent: objeto pasivo, estructura de datos con descripcin abstracta de la accin invocada o el evento que ha ocurrido
Mecanismos de Entrega
Invocacin de Actividad
Context.startActivity() : lanza actividad Activity.startActivityForResult() : pide a una actividad que haga algo nuevo Tambin: Activity.setResult() : callback de vuelta para obtener la inforamacin
Invocacin de Servicio:
Context.startService() : inicia el servicio o nueva peticin a servicio activo Context.bindService() : establece comunicacin con un servicio Lo inicia si no estaba en ejecucin
Anuncios a BroadcastReceivers
Objetos Intent se pasan a los mtodos de broadcast
Context.sendBroadcast() Context.sendOrderedBroadcast(), Context.sendStickyBroadcast()
Gestin de Intents
Android encuentra Actividad, Servicio o BroadcastReceivers adecuados
Y los instancia si es necesario
Sin solape
Broadcast intents slo para BroadcastReceivers startActivity slo para actividades Start/bind Service slo para servicios
Components de Intent
Accin: la accin a realizar
ACTION_VIEW, ACTION_EDIT,.
Ejemplos:
ACTION_VIEW: content://contacts/people/1 ACTION_DIAL: tel://915551234 ACTION_DIAL: content://contacts/people/2
Atributos adicionales
Category: informacin adicional tipo componente que debe recoger el intent Type: MIME-TYPE de los datos del intent Component: componente (clase) que recibir el Intent
Declarado en AndroidManifest.xml Si se especifica: Android busca instancia de clase
Si no, Android buscar el ms adecuado
Ver IntentResolution para detalles
Sin destinatario
Hay que incluir suficiente info en el Intent para que Android encuentre candidato adecuado
Slo se usa:
Action Data (tanto URI como tipo) Category
Mediante Intent-Filters
Acciones predefinidas
ACTION_CALL ACTION_EDIT ACTION_MAIN activity activity activity Initiate a phone call. Display data for the user to edit. Start up as the initial activity of a task, with no data input and no returned output. Synchronize data on a server with data on the mobile device.
activity
broadcast receiver A warning that the battery is low. broadcast receiver A headset has been plugged into the device, or unplugged from it. The setting for the time zone has changed.
*:
Filtros de Intenciones
Elementos de Actividades, Servicios y BroadcastReceiver
Declarados en AndroidManifest.xml
Filtros de Intenciones
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="projects.helloworld" android:versionCode="1" android:versionName="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".MainActivity" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
Difusin de intenciones
Broadcast Intents para notificar a oyentes de determinadas acciones o eventos Difusin de eventos del sistema
Batera baja Llamada entrante
Difusin de Intenciones
BroadcastReceiver
void onReceive(Context curCtx, Intent broadcastMsg): Punto de entrada principal El Broadcast Receiver se considera activo mientras est ejecutando este mtodo
Al finalizar, pasa a inactivo
Implementacin
import android.context.BroadcastReceiver; import android.content.Context; import android.content.Intent;
public class MiReceptorBroadcast extends BroadcastReceiver { public void onReceive (Context context, Intent intent) { // cdigo reaccin al intent } }
BroadcastReceiver
Escuchan Broadcast Intents Registrados
Via cdigo o AndroidManifest.xml
ndice
Introduccin Interfaces de Usuario Actividades Servicios Eventos Notificaciones Mens Almacenamiento de Datos ContentProviders Seguridad Listados de Bibliotecas
Notificaciones al usuario
Algunos sucesos deben notificarse al usuario
Independientemente de lo que se ejecuta Algunos requieren respuesta del usuario
Ejemplos: batera baja, fichero salvado, barra de progreso, Se requieren diferentes tipos de notificacin
Toast Notification
Mensaje Breves
Tipo pop-up, aparece en la pantalla No bloqueante: app activa sigue No requiere interaccin con el usuario
Dialog Notification
Pequea ventana, delante de actividad activa Coge el foco
Interacciona con el usuario
ndice
Introduccin Interfaces de Usuario Actividades Servicios Eventos Mens Almacenamiento de Datos ContentProviders Seguridad Listados de Bibliotecas
Mens
Componente importante de una aplicacin: proporciona una interfaz agradable y familiar al usuario Acceso a funcionalidad y configuracin Fcil programacin en Android
Tipos de Mens
Options Menu: aparece al pulsar el botn MENU del dispositivo. Se divide en:
Icon Menu: hasta 6 botones disponibles al pulsar MENU
El nico que soporta iconos Pero no soporta checkboxes o radiobuttons
Context Menu: lista flotante que aparece al presionar largo en una View Submenu: lista flotante, aparece al presionar un tem del Option Menu o men contextual
No soporta submens anidados
Definir Mens
Definicin en XML
Mejor que programticamente (se puede)
Separa diseo del interfaz de lgica de control
Aadir recursos en cdigo de aplicacin <menu> Crea un Menu, contenedor de tems de men.
Nodo raz. Contiene al menos uno de los siguientes elementos. Se puede anidar dentro de <item>
<item> Crea un MenuItem, elemento simple de un men <group> Contenedor no vidisble de <item>
Categoriza <item>s Comparten propiedades como estado y visibilidad
Ejemplo (Definicin)
Fichero game_menu.xml en res/menu/
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/andr oid"> <item android:id="@+id/new_game" android:icon="@drawable/ic_new_game" android:title="@string/new_game" /> <item android:id="@+id/quit" android:icon="@drawable/ic_quit" android:title="@string/quit" /> </menu>
Ejemplo (Definicin)
Recurso ID para manejo en la app Recurso visual Icono para el usuario
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/andr oid"> <item android:id="@+id/new_game" android:icon="@drawable/ic_new_game" android:title="@string/new_game" /> <item android:id="@+id/quit" android:icon="@drawable/ic_quit" android:title="@string/quit" />String visible </menu> para el
usuario
Acceso al men
Convierte el cdigo XML en un objeto
Mediante MenuInflater.inflate()
@Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.game_menu, menu); return true; }
Cambiar un Men
Se puede cambiar al men cuando se abre onCreateOptionsMenu(): se invoca slo la primera vez que se abre Options Menu
El sistema guarda y resa el Men hasta que la Actividad se destruye
NOTA: no se deben cambiar los tems dependiendo de la View activa (con foco)
En modo touch, las Views no pueden coger el foco: inapropiado para cambiar men tems segn contexto: usar Context Menu
Context Menu
onCreateContextMenu() usa context_menu.xml
@Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, v, menuInfo); MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.context_menu, menu); }
Context Menu
public boolean onContextItemSelected(MenuItem item) { AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo(); switch (item.getItemId()) { case R.id.edit: editNote(info.id); return true; case R.id.delete: deleteNote(info.id); return true; default: return super.onContextItemSelected(item); } }
Submenus
Men desplegado al seleccionar un tem de otro men
Se puede aadir a cualquier men, excepto un submen
No se pueden anidar
Ejemplo submenu
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/andr oid"> <item android:id="@+id/file" android:icon="@drawable/file" android:title="@string/file" > <!-- "file" submenu --> <menu"> <item android:id="@+id/new" android:title="@string/new" /> <item android:id="@+id/open" android:title="@string/open" /> </menu> </item> </menu>
ndice
Introduccin Interfaces de Usuario Actividades Servicios Eventos Mens Almacenamiento de Datos ContentProviders Seguridad Listados de Bibliotecas
Almacenamiento de Datos
SO ofrece SF para compartir datos entre apps En Android los ficheros son privados por app La informacin se comparte mediante ContentProviders
Almacenamiento de Datos
Opciones para almacenar datos: Shared Preferences
Pares clave-valor: datos primitivos privados
Internal Storage
Datos privados en memoria del dispositivo
External Storage
Datos pblicos en almacenamiento externo compartido
SQLite Databases
Datos structurados en BD privada
Network Connection
Datos almacenados en un servidor de red
Preferencias
Pares clave-valor Datos primitivos: boolean, float, int, long, string Datos persistentes aunque maten la actividad Uso tpico: preferencias de aplicacin
Colores, fuentes, tamaos, Preferible la PreferenceActivity Guardar datos en onSaveInstance() o onStop()
Clase SharedPreferences
SharedPreferences getSharedPreferences(String name, int mode) : se necesitan varios ficheros de preferencias identificados por nombre SharedPreferences getPreferences(int mode): se necesita slo un fichero en la Activity
No necesita nombre de fichero
Mtodos SharedPreferences
Para escribir valores:
1. Llamar edit() para conseguir un SharedPreferences.Editor 2. Aadir valores con mtodos como putBoolean() o putString() 3. Almacenar los nuevos valores con commit()
Ejemplo Preferencias
public class Calc extends Activity { public static final String PREFS_NAME = "MyPrefsFile"; @Override protected void onCreate(Bundle state) { super.onCreate(state); . . .
// Restore preferences SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); boolean silent = settings.getBoolean("silentMode", false);
setSilent(silent); }
@Override protected void onStop() { super.onStop(); // We need an Editor object to make preference changes // All objects are from android.context.Context SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); SharedPreferences.Editor editor = settings.edit(); editor.putBoolean("silentMode", mSilentMode);
Ficheros
Son privados de la aplicacin
Ni otras aplicaciones ni el usuario
Permisos UNIX
Ficheros: ejemplo
String FILENAME = "hello_file"; String string = "hello world!"; FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE); fos.write(string.getBytes()); fos.close();
Ficheros temporales
getCacheDir(): abre ficheros temporales para cachear datos
El sistema puede borrarlos si se queda sin memoria
Pero es responsabilidad del programa borrar dichos ficheros: el sistema podra no borrarlos
Almacenamiento externo
Medios de almacenamiento removibles
Externos: Tarjetas SD, Internos
Disponibilidad
getExternalStorageState(): comprueba si el medio de almacenamiento est disponible
Comprobacin Disponibilidad
boolean mExternalStorageAvailable = false; boolean mExternalStorageWriteable = false; String state = Environment.getExternalStorageState(); if (Environment.MEDIA_MOUNTED.equals(state)) { // We can read and write the media mExternalStorageAvailable = mExternalStorageWriteable = true; } else if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) { // We can only read the media mExternalStorageAvailable = true; mExternalStorageWriteable = false; } else { // Something else is wrong. It may be one of many other states, // but all we need to know is we can neither read nor write mExternalStorageAvailable = mExternalStorageWriteable = false; }
Nivel 7 o anterior:
getExternalStorageDirectory()
Datos en /Android/data/<package_name>/files
package_name de Java
Ficheros compartidos
Ficheros no especficos de la app: salvarlos en directorios pblicos
Music/, Pictures/, Ringtones/, API Nivel 8: getExternalStoragePublicDirectory()
DIRECTORY_MUSIC, DIRECTORY_PICTURES, DIRECTORY_RINGTONES, Los crea si no existen
Ficheros Cach
API nivel 8: getExternalCacheDir() API nivel 7 o anterior: getExternalStorageDirectory()
/Android/data/<package_name>/cache
Bases de Datos
Soporte completo de BD SQLite BD accesible desde cualquier clase de la app
Pero no desde fuera
BD SQLite
Cdigo Abierto Ligera Cursor: resultado de las consultas (queries) Usado en reproductores MP3, iPhone/iPods, http://www.sqlite.org
Manejo BD SQLite
Mecanismo recomendado creacin BD SQLite
Crear subclase de SQLiteOpenHelper
Y sobreescribir onCreate()
Ejemplo SQLite
public class DictionaryOpenHelper extends SQLiteOpenHelper { private static final int DATABASE_VERSION = 2; private static final String DICTIONARY_TABLE_NAME = "dictionary"; private static final String DICTIONARY_TABLE_CREATE = "CREATE TABLE " + DICTIONARY_TABLE_NAME + " (" + KEY_WORD + " TEXT, " + KEY_DEFINITION + " TEXT);";
DictionaryOpenHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL(DICTIONARY_TABLE_CREATE); } }
Acceso BD
getWritableDatabase() / getReadableDatabase()
Devuelven una BD para escribir o leer con mtodos para operar la BD
SQLiteDatabase.query(): consultas simples SQLiteQueryBuilder(): consultas complejas Las consultas devuelven Cursor
Apunta a las filas encontradas en la consulta Mecanismo para manejar resultados y leer filas y columnas
sqlite3: herramientas para consultar BD, ejecutar comandos SQL, (incluida en Android SDK)
Cursores
Recorren y procesan consultas
moveToFirst: cursor en la primera fila moveToNext: avanza el cursor moveToPrevious: retrocede el cursor moveToPosition: mueve cursor a dicha posicin getPosition: devuelve posicin actual del cursor getCount: cantidad de registros en la consulta getColumnIndexOrThrow: ndice de la columna dada getColumnName: nombre de la columna por ndice getColumnNames: array con nombres de columnas
Ejemplo de Cursores
Conexiones en Red
Cada vez ms, se almacenan los datos en servidores externos
Servicios de Google, Yahoo,
ndice
Introduccin Interfaces de Usuario Actividades Servicios Eventos Mens Almacenamiento de Datos ContentProviders Seguridad Listados de Bibliotecas
Content Providers
Mecanismo genrico de compartir datos entre aplicaciones Android: Predefinidos audio, video, imgenes, contactos,
Algunos requieren permisos explcitos
ContentResolver
nico por contexto de aplicacin
ContentResolver cr= getContentResolver();
Usado para transacciones y consultas a ContentProviders Al iniciar una consulta, Android identifica el ContentProvider y se asegura de que est ejecutndose El sistema instancia los ContentProviders
Suele ser nica para cada tipo de datos Y comunican con muchas instancias de ContentResolvers de diferentes aplicaciones
Acceso a ContentProvider
Como las BD, se manejan con Cursor
Con mtodos especializados para diferentes tipos de datos
Para acceder a un campo, hay que saber el tipo del contenido
Consultar ContentProvider
Para consultar un ContentProvider se requiere:
URI que identifica el proveedor Nombre de los campos de datos a consultar Tipos de datos de dichos campos
Mtodos tiles:
ContentUris.withAppendedId() Uri.withAppendedPath()
Facilitan la concatenacin de un ID a un URI
Consultas
Cursor ContentResolver.query() Cursor Activity.managedquery()
Mismos argumentos La actividad gestiona el ciclo de vida del Cursor
String[] projection = new String[] { _id, number, name }; Cursor managedCursor = managedQuery(new ContentURI (content://contacts/phones), projection, null, null, name + " ASC");
En detalle
import android.provider.Contacts.People; import android.database.Cursor; // Especificamos columnas deseadas String[] projection = new String[] { People._ID, People._COUNT, People.NAME, People.NUMBER }; // URI base para la tabla de People en el proveedor de Contacts Uri contacts = People.CONTENT_URI;
// Gestiona la consulta Cursor managedCursor = managedQuery(contacts, projection, // Qu columnas se devuelven null, // Qu filas se desean (todas) null, // Filtro de seleccin (ninguno) // Ordenado en orden ascendente // por nombre People.NAME + " ASC");
URI
A: prefijo estndar B: identificador del ContentProvider
Full-qualified class name, minsculas
ContentProviders de Android
Browser: bookmarks, historial, bsquedas CallLog: llamadas entrantes y salientes ContactsContract: informacin de contactos
Contacts deprecado
LiveFolder: carpeta especial poblada por un ContentProvider MediaStore: metadatos de medios disponibles
Internos o externos
Implementar un ContentProvider
Los principales mtodos a implementar son:
Boolean onCreate(): Invocado al inicializar el proveedor Cursor query(Uri uri, String[] projection, String selection , String[] selectionArgs, String sortOrder) : devuelve datos al usuario Uri insert(Uri, ContentValues) inserta datos nuevos en el proveedor int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) actualiza datos existentes en el proveedor int delete(Uri uri, String selection, String[] selectionArgs) borra datos del proveedor String getType(Uri uri) devuelve el tipo MIME de los datos contenidos en el proveedor hay muchos ms
ndice
Introduccin Interfaces de Usuario Actividades Servicios Eventos Mens Almacenamiento de Datos ContentProviders Seguridad y Permisos Listados de Bibliotecas
Seguridad y Permisos
Basada en Kernel Linux
ID nico por paquete Procesos en sandbox
Previene interferencias entre aplicaciones
Excepto con permiso explcito
Uso de Permisos
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.android.app.myapp" > <uses-permission android:name="android.permission.RECEIVE_SMS" /> </manifest>
Permisos propios
Declararlos en AndroidManifest
Tag: <permission>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.me.app.myapp" > <permission android:name="com.me.app.myapp.permission.DEADLY_ACTIVITY" android:label="@string/permlab_deadlyActivity" android:description="@string/permdesc_deadlyActivity" android:permissionGroup="android.permission-group.COST_MONEY" android:protectionLevel="dangerous" /> </manifest>
ndice
Introduccin Interfaces de Usuario Actividades Servicios Eventos Mens Almacenamiento de Datos ContentProviders Seguridad Listados de Bibliotecas
Otras bibliotecas
FreeType SGL Libc SQLite SSL
Bibliotecas Google
http://code.google.com/intl/es/android/add-ons/googleapis/ Paquete com.google.android.maps.MapView
Subclase de ViewGroup