* R AMAN K AZHAMIAKIN O SCAR Z G IOVANNI D E ITT M. B UONARROTI, T RENTO A NDROID D EVELOPMENT E LEMENTI BASE
* * 1.Permissions 2.Intent 3.Intent espliciti e impliciti 4.Intent filter 5.Fragments 6.Elementi di UI Sommario
* * Permissions Android usa un sistema a permessi. Ci sono molti permessi predefiniti (e lo sviluppatore può definirne di nuovi). INTERNET, CHIAMATE, SMS, LOCATION, BLUETOOTH… I permessi sono mostrati prima dell’installazione di una app, l’utente decide se concederli. Se non lo fa l’app non viene installata. Il controllo dei permessi è fatto durante l’installazione e essi non possono essere gestiti dopo l’installazione (anche se…). L’app dichiara i permessi richiesti nel suo file Manifest, AndroidManifest.xml Lista completa delle permissions di sistema
* * <manifest xmlns:android=" package="com.android.app.myapp" > … Permissions Lista completa delle permissions di sistema
* * Intent Gli intent sono messaggi asincroni che permettono ai componenti delle app di richiedere funzionalità di altri componenti. Con gli intent si può interagire con componenti della propria app o di altre applicazioni. Esempi: una activity può lanciare una activity di un’altra app per scattare una foto, o mandare una mail. Oppure può aprire una seconda activity della vostra app, con altre funzionalità.
* * Intent espliciti Gli intent espliciti definiscono il componente che verrà lanciato usando la sua classe Java come identificativo. Intent i = new Intent(this, SecondActivity.class); i.putExtra("key", "value"); startActivity(i); Esempio: se la classe specificata rappresenta una activity il sistema la lancia. È possibile includere dei dati da passare.
* * Intent impliciti Gli intent impliciti specificato l’azione che deve essere svolta. È possibile includere dei dati da passare. Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(" startActivity(i); Se viene lanciato un intent implicito il sistema cerca tutti i le app che hanno un componente registrato per fare quella specifica azione e/o per gestire quei dati. ●Se viene trovato un solo componente Android lo lancia direttamente ●se ne viene trovato più di uno viene presentata una lista dei possibili, e l’utente può decidere quale usare di default le volte successive.
* * Intent filter Come fa Android a capire quali componenti possono rispondere a un certo intent? Si usano gli intent filter. Un intent filter specifica se una activity può “rispondere all’appello” per un certo intent. Gli intent filter sono definiti nel file AndroidManifest.xml. Un intent filter è definito da: categoria, azione, filtro per dati e altre configurazioni.
* * Intent filter: esempi Browser Condivisione di testo
* * Fragment Il fragment è un componente indipendente che può essere usato da una activity. Un fragment racchiude funzionalità. Questo rende più semplice il riutilizzo. Un fragment gira nel contesto di una activity ma ha il suo life cycle separato e solitamente la sua grafica. I fragment possono essere aggiunti ad una activity in maniera statica o dinamica.
* * Fragment: perché?
* * Fragment - ciclo di vita Fragment aggiunto onAttach() onResume() onStart() onActivityCreated() onCreateView() onCreate() Fragment attivo Fragment distrutto onPause() onDetach() onDestroy() onDestroyView() onStop() Il fragment ritorna al layout dalback stack L’utente fa back o il fragment è removed/replaced oppureil fragment è aggiunto al back stack e poi removed/replaced
* * Fragment - aggiunta via XML <LinearLayout xmlns:android=" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="match_parent"> <fragment android:name="com.example.news.ArticleListFragment" android:layout_weight="1" android:layout_width="0dp" android:layout_height="match_parent" /> <fragment android:name="com.example.news.ReaderFragment" android:layout_weight="2" android:layout_width="0dp" android:layout_height="match_parent" />
* * Fragment - aggiunta via codice // Si crea il nuovo fragment e la sua transaction Fragment newFragment = new ExampleFragment(); FragmentTransaction transaction = getFragmentManager().beginTransaction(); // Sostituiamo nell’elemento di layout con id R.id.fragment_container transaction.replace(R.id.fragment_container, newFragment); // Cosi’ il sistema rifarà questa transaction in caso di back transaction.addToBackStack(null); // Lanciamo la transaction transaction.commit(); È necessario utilizzare add, remove o replace di un fragment conoscendone l’elemento del layout dove si trova. Es.: R.id.fragment_container
* * Elementi di UI: Layout, TextView, Button... <LinearLayout xmlns:android=" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello, I am a TextView" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello, I am a Button" />
* *