Eccomi qui, il Natale è passato e la voglia di programmare per Android in voi è tanta :-P quindi vi pubblico il sorgente della mia ultima semplicissima applicazione per Android.

I punti che andrò a toccare in questa applicazione sono principalmente 2:

  1. Come creare un widget
  2. Come usare gli Intent

Il programmino l’ho fatto con Eclipse, ottimo programma per scrivere sorgente per Android (Guida per installare e configurare Eclipse per programmare per Android). Per tutte le informazioni sono disponibile sul forum sezione development!
Partiamo dall’inizio:

  1. Ho creato un nuovo progetto (File->New->Android Project)
  2. Ho compilato i campi come segue:
    Project Name -> Merry Christmas Widget TA
    Contents -> lasciato invariato
    Build Target -> Android 1.5
    Properties -> Application Name: Merry Christmas Widget TA; Package Name: ta.widget.mc; Create Activity: merrychristmas; Min SDK Version: 3
  3. Premendo finish Eclipse creerà il progetto coi vari file di default e qui si inizia a programmare :P
  4. Apriamo il file AndroidManifest.xml e dobbiamo modificarlo a dovere perchè è quello che avverte al sistema di che applicazione si tratta, con quale Hardware deve comunicare e così via:
    
    
     
     
     
     
     
     
     
     
     
    
    

    Andiamo a spiegare per bene: nel primo pezzo di codice viene dichiarata la versione dell’applicazione quella che viene mostrata nel market, il tag application invece indica l’icona dell’app quella che si vede nel market sempre e il nome dell’app (string/app_name). Da ora in poi parte il codice che dice che questo è un widget e l’unica cosa da cambiare è xml/widget_info che sarebbe un file dove sono presenti le caratteristiche che il widget deve avere (dimensioni ecc..)

  5. Ora che il Manifest è copleto andiamo a vedere i file xml di layuot e configurazioni, widget_info.xml (dentro xml):
    
    
    

    Questo è il file di cui parlavo prima con le caratteristiche del widget come vedete ho impostato 145dp la larghezza e 145dp l’altezza, come layout gli ho indicato il main.

  6. Visto che ne ho parlato andiamo subito a vedere il main.xml dentro alla cartella layout:
    
    
     
    
    

    Il main.xml è ciò che verrà mostrato usando il widget e ovviamente dovrà avere un layout il widget ho impostato un 125dp di larghezza e altezza (inferiori al widget_info perchè così attorno al widget c’era del vuoto) e alla base di tutto c’è la stringa del background infatti questo tag mostra l’immagine che vedete utilizzando l’app.

  7. Ultimo file xml è lo strings.xml dove sono presenti le costanti per così dire:
    
    
     Merry Christmas Widget TA
    
    

    Come vedete ci ho messo solo una costante cioè il titolo della app perchè il widget non ha bisogno di testo

  8. Ecco arrivati quindi al file più importante merrychristmas.java colui che fa girare il widget:
    package ta.widget.mc;
    import android.app.PendingIntent;
    import android.appwidget.AppWidgetProvider;
    import ta.widget.mc.R;
    import android.appwidget.AppWidgetManager;
    import android.content.ComponentName;
    import android.content.Context;
    import android.content.Intent;
    import android.net.Uri;
    import android.widget.RemoteViews;
    public class merrychristmas extends AppWidgetProvider
     {
     @Override
     public void onUpdate( Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds )
     {
     RemoteViews remoteViews;
     ComponentName watchWidget;
     remoteViews = new RemoteViews( context.getPackageName(), R.layout.main );
     watchWidget = new ComponentName( context, merrychristmas.class );
     remoteViews.setTextViewText(R.id.widget_textview, "");
     Intent BrowserIntent = new Intent("android.intent.action.VIEW", Uri.parse("https://www.tuttoandroid.net"));
     PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, BrowserIntent, 0);
     remoteViews.setOnClickPendingIntent(R.id.widget_textview, pendingIntent);
     appWidgetManager.updateAppWidget(watchWidget, remoteViews );
     }
     }
    

    Qui sarò molto riassuntivo e andrò a toccare più il secondo punto che ho detto a inizio articolo, l’Intent. Dall’alto verso il basso troviamo gli import per le varie funzioni e la classe merrychristmas, qui dentro c’è il codice che fa girare l’applicazione. Il codice si descrive da solo fino a Intent che prima di tutto con new Intent dichiara un evento, crea l’activity del Browser, e infine associa l’intent con il click sullo schermo (pendingIntent). L’ultima riga di codice è quello che pubblicherà i risultato ottenuto tra layout e codice java di questo file.

Scusatemi magari se non sono stato troppo chiaro ma andare a spiegare a grandi linee un sorgente non è mai facile :-D sono comunque disponibile per ogni vostra domanda nella sezione Development del Forum dove troverete anche il progetto Eclipse di questo widget.