Cerca con Google

Translate

14 aprile 2014

Usare il componente Sharing in MIT App Inventor 2


Finalmente è stato implementato!!!
Era stato chiesto a gran voce da un enorme numero di utenti, e qualche giorno fa, il team del MIT App Inventor ha finalmente aggiunto un componente tanto semplice quanto essenziale nella realizzazione di quasi tutte le App Android.

Stiamo parlando del componente "sharing", questo componente ci permette di condividere (share in inglese significa appunto condivisione) in maniera facile e veloce un testo o un elemento multimediale tramite la nostra app.

Avete ovviamente presente l'icona presente nel 99,9% delle app Android, la famosa icona condividi:
bene da oggi possiamo implementare la stessa funzionalità anche nelle nostre App create con MIT App Inventor.

Vediamo subito come è possibile farlo...


Il componente si trova nella palette "social" ed è di tipo "non visible", non ha nessuna proprietà impostabile da design editor e quindi andrà programmato totalmente nel blocks editor.

A questo indirizzo potete leggere la documentazione ufficiale (in inglese)
http://ai2.appinventor.mit.edu/reference/components/social.html#Sharing

Mentre qui sotto vi fornisco la mia traduzione sull'utilizzo di tale componente, non ci sono particolari difficoltà ed il suo utilizzo è alquanto immediato.




Sharing

Componente non visibile che permette la condivisione di file e/o messaggi tra la tua app ed altre app installate nel dispositivo. Il componente mostra una lista delle app installate che possono gestire le informazioni fornite, e permette all'utente di scegliere quale di queste deve essere usata per la condivisione del contenuto, ad esempio un app per le email, un app di social networking, un app messaggi e così via...

Proprietà:
nessuna

Eventi:
nessuno

Metodi:

ShareFile(text file)
Condivide un file tramite un app capace di gestire il contenuto installata nel dispositivo facendo vedere una lista delle app disponibili e permettendo all'utente la scelta dell'app da usare.
L'app selezionata verrà aperta con il file scelto inserito in essa.

ShareFileWithMessage(text file, text message)
Condivide sia un file che un messaggio tramite un app capace di gestire il contenuto installata nel dispositivo facendo vedere una lista delle app disponibili.
L'app selezionata verrà aperta con il file ed il messaggio inserito in essa.

ShareMessage(text message)
Condivide un messaggio tramite un app capace di gestire il contenuto installata nel dispositivo facendo vedere una lista delle app disponibili.
L'app selezionata verrà aperta con il messaggio inserito in essa

Vediamo adesso i blocchi che utilizzato nel video tutorial che ho creato per voi:

Condivisione di una stringa testuale
Scatto di una foto ed invio tramite componente "sharing"
Condivisione di una foto presa dalla galleria (tramite ImagePicker) - NOTA: Attualmente questo metodo ha dei problemi se si condivide la foto con varie app, ad esempio Gmail, Email, Facebook - funziona correttamente con altre ad esempio Dropbox, Whatsapp... - penso che il componente verrà sistemato velocemente
Vi consiglio di visionare per intero il video tutorial che ho creato per ulteriori approfondimenti e curiosità!!!


Se volete scaricare il sorgente del mio esempio lo potete fare cliccando qua

Ps: in attesa di un fix da parte del team del MIT, è possibile usare il componente ImagePicker per scegliere e poi inviare una foto dalla galleria inserendo nel path della foto la stringa file:// come mostrato nei blocchi seguenti:
Fix per poter usare ImagePicker e componente Sharing

33 commenti:

  1. Ottimo componente! Ma insieme a questa novità non è uscito altro ?

    RispondiElimina
  2. ciao seba come al solito tutorial fantastico...conosco però un modo migliore per far capire che sta inviando la foto dalla galleria , basta inserire https://ssl.gstatic.com/s2/oz/images/notifications/spinner_32_041dcfce66a2d43215abb96b38313ba0.gif oppure https://ssl.gstatic.com/ui/v1/activityindicator/loading_16.gif nel web viewr. lo trovo migliore a livello grafico e spero possa tornarti utile

    RispondiElimina
    Risposte
    1. Ciao Alberto, grazie del consiglio, quelli che hai linkato sono due animgif che fanno vedere il progresso della nostra azione,
      ma non capisco come li vorresti usare in app inventor e con il componente sharing,
      Potresti fare un esempio magari inserendo il tuo sorgente o tuoi blocchi che usi, magari torna utile anche ad altri,
      grazie!

      Elimina
    2. scusa ho fatto un pò di errori...volevo solo mostrarti questa funzione utile a simboleggiare il caricamento di qualcosa in app inventor

      Elimina
  3. Sebastiano ti si sta robotizzando la voce....sembri quasi er finestra....naturalmente scherzo :-)

    RispondiElimina
  4. Ciao Seba per quanto riguarda questo componente devo dirti che per l'invio del semplice file di testo, a me apre una finestra enorme, dove è visibile solamente parte dell'icona di DopBox. Considera che il mio device è il Sam S4. sai spiegarmi il perchè? ho dipende sempre dagli errori di cui parlavi?

    RispondiElimina
    Risposte
    1. Come dico nel video purtroppo sembra un problema del componente con kitkat, speriamo risolvano alla svelta nel frattempo puoi condividere testo e immagine senza mettere l'immagine (non ho provato ma secondo me funziona )

      Elimina
  5. Ottimo tutorial come sempre. Questo componente apre molte porte, speriamo risolvino subito i bug. Intanto volevo aggiungere che da una prova da me fatta con l'invio email senza mettere il path, questo mi ha mandato in crash l'app di gmail e l'app si interrompeva spesso anche dopo il riavvio del dispositivo. Ho risolto il problema cancellando i dati dell'app di gmail da impostazioni - applicazioni .

    RispondiElimina
    Risposte
    1. esatto, senza il fix che ho mostrato dava grossi problemi anche a me con Gmail, credo per fortuna riguardi solo chi ha kitkat...
      devono risolvere in fretta, il bug è veramente grosso :)

      Elimina
  6. Scusate se posto qui questo commento, è possibile rendere fissa una barra menu in alto?

    RispondiElimina
  7. Ciao Seba. scusate tutti se anche io metto questo commento qui, ma credo che forse l'informazione interessi tutti.
    La richiesta è questa: dei tutorial sull'utilizzo di tinywebdb e fusiontabletcontrol, ma soprattutto (scusatemi lo sfogo) su come configurare sto benedetto Google app engine e python per sfruttare tinywebdb. Scusate tutti e grazie in anticipo

    RispondiElimina
    Risposte
    1. Vedrò cosa posso fare, in effetti sembra che siano argomenti che interessano a molti

      Elimina
  8. Buongiorno Sebastiano,
    ho creato una App nella quale cliccando un pulsante appare un'immagine.
    Ho provato ad applicare al pulsante la proprietà Sharing, facendo si che tentendo premuto il pulsante a lungo, si possa inviare l'immagine ad esso associato.
    Il comando sembra funzionare ma mi dice che il file richiesto di inviare, non è presente sul mio device.
    (questo nonostante l'app funzioni correttamente e l'immagine appaia clieccando sul pulsante - ho copiato l'App in cui fai apparire i personaggi di South Park ;-) )
    Come posso fare?
    gb

    RispondiElimina
    Risposte
    1. spiegata così mi sembra sia tutto a posto, magari commetti un errore banale, se vuoi postami i tuoi blocchi o segui di nuovo per bene il tutorial , sono sicuro che hai commesso un errore anche minimo da qualche parte, fammi sapere, ciao

      Elimina
    2. Come posso fare per postare i miei blocchi?
      Oppure come posso fare per mandarti il file della mia applicazione?
      Forse è meglio attraverso il Forum?

      ps: complimenti per il blog e per i tutorial, sono davvero belli e mi hanno dato lo spunto per fare questa mia piccola App ...
      fantastico!!!!
      gb

      Elimina
  9. Questo commento è stato eliminato dall'autore.

    RispondiElimina
  10. Ciao Sebastiano ottimo tutorial come sempre.
    Ho rilevato un proble con il componente sharing.
    Ovvero al momento della condivisione si apre la lista con le app scelgo facebook.
    All'apertura di facebook non mi mostra quanto vorrei condividere:nello specifico si vedono le immagini da condividere ma non il messaggio, come se quanto scritto nel campo message non venisse considerato. Confermo che con altre app (whatsapp, chaton, sms,gmail )è tutto regole......da cosa potrebbe dipendere? Aggiungo che ho effettuato dei test su vari device è tutti mostrano questo problema.
    Grazie di tutto.
    Ciao

    RispondiElimina
  11. Buongiorno,
    ho iniziato da qualche giorno da utilizzate mit app 2.... tutto abbastanza chiaro....l'unica cosa è che non capisco cosa fa lievitare la dimensione dell'app.....ho creato una piccola app per il dimensionamento di una ventilazione con 6 operazioni matematiche, funziona in emulazione ma quando cerco di compilarlo mi dice che è troppo grande (11 mb anzichè 5 mb)... qualcuno mi sa aiutare ?

    RispondiElimina
  12. Questo commento è stato eliminato dall'autore.

    RispondiElimina
  13. salve ragazzi vorrei che mi chiariate un dubbio è possibile condividere un file tipo un'immagine o un video utilizzando la funzione sharing
    cioè se io inserisco delle immagini nello screen di app inventor e poi possibile condividere quella foto o video o con quel file tramite la nuova funzione di sharing?
    grazie spero in una immediata risposta saluti a Sebastiano t. ottimo blog

    RispondiElimina
  14. Avrei la necessità di inviare tramite il componente Sharing un file CSV dopo averlo compilato, il problema è il percorso del file creato da inserire in sharing,
    che purtroppo cambia in base alle varie versioni di android, ho provato a scattare prima una foto e tramite "get image" ho copiato il percorso alla foto ed utilizzato anche per salvare
    ed inviare il mio CSV, però così devo per forza scattare una foto, conosci per favore qualche altro sistema per individuare un percorso comune a tutti i dispositivi?

    grazie, ciao

    RispondiElimina
    Risposte
    1. ciao ... hai riaolto? mi capita di dover affrontare lo stesso problema.
      cordialitá
      Enzo SERRA

      Elimina
    2. Succede anche a me. Mostra la lista solo la prima volta e poi continua a voler condividere con la stessa applicazione utilizzata la prima volta. Come si può risolvere?

      Elimina
  15. Ciao, ho seguito le indicazioni, nel mio caso, devo inviare solo un link di un sito web tramite il tasto condividi, Tutto funziona, soltanto che una volta scelto l app da condividere (esempio whatsapp), una seconda volta che volgio condividere non appare più la lista ma direttamente mi fa condividere su whatsapp ... come mai??
    come risolvere ?? Grazie !!
    magari rispondete via mail.. secondoguadagno@hotmail.com

    RispondiElimina
  16. Ne è passato di tempo dal tutorial ... chissà se qualcuno mi può rispondere ... con Android 6, ma forse anche con il 5, dopo aver scelto per la prima volta la app con cui fare la condivisione, le successive volte usa sempre quella è peggio ancora, anche dopo aver disinstallato la app tutto rimane come la prima scelta fatta in precedenza, e quel che è peggio è che se si crea un apk con un altra app e si usa lo stesso componente usa quella usate la prima volta che si è scelto.

    RispondiElimina
  17. Ciao Seba
    ho inserito questo componente tutto funzionante tutto ok soltanto che alla successiva condivisione rimane come predefinito l'app usata in precedenza. Sai come ovviare a questo problema?
    Grazie
    Fabio

    RispondiElimina
  18. Ad oggi il componente ha problemi con il testo che non "passa" mentre funziona con le foto

    RispondiElimina
  19. A me non fa scegliere l'APP ma va direttamente su Whatsapp

    RispondiElimina
  20. Anche a me la prima volta fa scegliere l'app ma le successive volte non fa più scegliere e utilizza l'app selezionata la prima volta. Come si può risolvere?

    RispondiElimina
  21. Scusami ma volevo chiederti come inviare un file di testo .txt o .csv tramite il componente sharing

    RispondiElimina
  22. Da ogni parte trovo solo esempi di invio di immagini o messaggi ma mai file.txt o file .csv e possibile sapere quale percorso usare perchè ho provato con il percorso (/sensor/pippo.txt) ma niente da fare mi da errore,

    RispondiElimina