[DEV]: Utilizzare le immagini della galleria nella nostra applicazione
static class Image { // i metadati della tabella, accessibili ovunque
static final String IMAGE_TABLE = "immagini";
static final String ID = "_id";
static final String IMAGE = "immagine";
}
private static final String IMAGE_TABLE_CREATE = "CREATE TABLE IF NOT EXISTS "
+ Image.IMAGE_TABLE + " ("
+ Image.ID+ " integer primary key autoincrement, "
+ Image.IMAGE + " text not null);"
Fatto questo passiamo alla classe in cui vogliamo visualizzare l’immagine scelta:
public class Immagine extends Activity {
private static final int IMAGE_FROM_GALLERY=0;
MyDatabase db;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.image);
db=new MyDatabase(getApplicationContext());
db.open();
Cursor cursor=null;
String sql="SELECT immagine FROM immagini";
cursor=db.rawQuery(sql, null);
startManagingCursor(cursor);
if(cursor.moveToFirst()){
((ImageView)findViewById(R.id.image)).setImageURI(Uri.parse(cursor.getString(0)));
}
editimg.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) { //apre la galleria
Intent i = new Intent( Intent.ACTION_PICK, MediaStore.Images.Media.INTERNAL_CONTENT_URI );
startActivityForResult( i, IMAGE_FROM_GALLERY );
}
}
Nel codice sopra abbiamo aperto il database e tramite una query sql abbiamo ottenuto le immagini presenti
nella tabella del db. Poi apriamo la galleria tramite il pulsante editImg e assegnamo all’imageView
presente nell’xml l’uri che andiamo a leggere sempre nella tabella delle immagini,
ma siccome è salvato come una stringa dobbiamo fare il parse();
@Override protected void onActivityResult ( int requestCode, int resultCode, Intent data ) { if ( requestCode == IMAGE_FROM_GALLERY ) { if ( resultCode == RESULT_OK ) { Uri selectedImage = data.getData(); db.deleteAllImg(); db.insertImg(selectedImage.toString()); launchImageActivity(); } //assegni alla tua ImageView l'immagine selezionata } super.onActivityResult( requestCode, resultCode, data ); }Quest'ultimo è il metodo collegato all'apertura della galleria con il quale riusciamo ad
ottenere l'url dell'immagine scelta dall'utente per salvarlo nel db.
Il metodo db.deleteAllImg() serve per cancellare ogni immagine presente nella tabella
prima di sceglierne una nuova.
Questo ci serve perchè nel codice sopra avevamo chiesto al cursore di ritornare solamente
la prima occorrenza della
tabella in quanto a noi serve sapere qual'è l'ultima immagine scelta.
Dopo aver cancellato si inserisce la nuova immagine scelta,
cosi da avere sempre come prima occorrenza l'ultima scelta dell'utente.
Infine lanciamo di nuovo l'activity dell'immagine per aggiornare.




Perché non scrivi una bella guida completa alla programmazione? O almeno all’appinventor? Sarebbe fantastico.
Cioè ma è quasi identico a Java!! Allora fra un po’ potrei anche cominciare a programmare su android