Cerca con Google

Translate

14 novembre 2011

Tutorial 25 - Il componente WebViewer di App Inventor


Eccoci arrivati al tutorial sul componente WebViewer
Questo componente è stato introdotto ultimamente in App Inventor dopo insistenti richieste dei suoi utilizzatori.

Per chi non sapesse cos'è una WebView possiamo semplificare dicendo che è una "finestra" all'interno della nostra app che visualizza un contenuto disponibile sul web.




La WebView esiste ormai in quasi tutti i linguaggi di programmazione, vediamo quindi in questo video un possibile esempio di come utilizzarla in App Inventor.

Il grande vantaggio che offre è che con l'aggiunta di pochi blocchi possiamo inserire nelle nostre app delle pagine web dinamiche, possiamo creare un app che crei un web browser "personalizzato", possiamo visualizzare delle immagini mantenendo i controlli pinch-to-zoom nativi del telefono oppure visualizzare una tabella di google docs, visualizzare una pagina nascondendo la barra degli indirizzi, etc, etc...

Insomma i suoi utilizzi sono veramente svariati e limitati solo dalla vostra fantasia!
Tanto per farvi un paio di esempi pratici, nella mia app "Acqua Alta a Venezia" utilizzo ben 3 componenti WebViewer
  1. Grafico della marea
  2. WebCam di Venezia
  3. Banner pubblicitario 
Moltissime app create con Eclipse per Android hanno una WebView (Google Docs ne è un esempio lampante)

Insomma, tutte le volte che vogliamo visualizzare nella nostra app dei contenuti presi dal web, questo elemento ci tornerà molto utile.

Se poi avete uno spazio web a disposizione, nulla vi vieta di creare delle pagine ad-hoc per la vostra app (magari uno slideshow per esempio) da far poi visualizzare sul vostro smartphone.

Buona visione:


Come di consueto vi lascio con la traduzione della documentazione originale:

WebViewer


Componente per la visualizzazione di pagine web. L'URL inziale può essere specificato nella finestra del design editor o nel blocks editor. Il componente può essere impostato per seguire i link quando sono cliccati. Attenzione: Questo non è un browser completo. Per esempio, premendo il tasto Indietro del telefono si uscirà dall'applicazione, piuttosto che tornare indietro nella cronologia del browser (come avverrebbe col browser del vostro telefono).

Proprietà

CurrentPageTitle
Titolo della pagina attualmente visualizzata
CurrentUrl
URL della pagina attualmente visualizzata. 
FollowLinks
Determina se seguire i link quando vengono cliccati nella WebViewer. Se abilitato, è possibile utilizzare GoBack e GoForward per navigare nella cronologia del browser.
HomeUrl
URL della pagina del WebViewer visualizzata all'apertura dell'applicazione. Se settato, la webview caricherà automaticamente la pagina.
Visibile
Se il componente è visibile
Eventi
nessuno

Metodi

boolean CanGoBack ()
Restituisce true se si può tornare indietro nella cronologia.
boolean CanGoForward ()
Restituisce true se si può andare avanti nella cronologia.
GoBack ()
Torna alla pagina precedente della cronologia. Non fa nulla se non c'è pagina precedente.
GoForward ()
Va avanti alla pagina successiva della cronologia. Non fa nulla se non c'è pagina successiva.
GoHome ()
Carica la pagina URL home impostata. 
GoToUrl (url text)
Carica la pagina all'URL specificato.


 I sorgenti li trovate qua

104 commenti:

  1. Grande! Persona sempre molto gentile e disponibile, nonchè fonte inesauribile di consigli.
    Grazie
    Alessio

    RispondiElimina
  2. Ciao cpmplimenti per il blog innanzitutto, molto interessante. Ho creato una app che utilizza il componente webviever, è possibile inserire un controllo,che verifichi se è attiva sul dispositivo android una connessione dati (wifi 0 3G)?

    RispondiElimina
  3. Non esiste nulla di specifico, però questo signore

    http://www.taiic.com/2011/03/20/no-data-connection-handling/

    l'ha fatto usando location sensor, prova a seguire la sua guida, l'idea è di impostare locationsensor su network only (quindi usare solo il 3G per determinare la posizione) se entro 5 secondi non ottengo la posizione, al 99% vuol dire che non ho una connessione internet.
    Se hai difficoltà a capire quel che ha scritto fammi sapere e vedo di chiarirti le idee,ciao

    RispondiElimina
  4. Ciao Seb,
    grazie non ho ancora visto il link che hai postato, però sono riuscito a trovare la soluzione senza utilizzare il locationsensor, così hai un alert se non hai una connessione dati di nessun tipo (WIFI o 3G). Qualora ti andrebbe di farne un tutorial affinchè possa essere utile a chiunque o magari aggiornare quello del webviewer fammi saper che ti invio la procedura.
    Luca

    RispondiElimina
  5. Certo Buffalo, mandamela pure, la vedo ed eventualmente potrei ricavarci del materiale per un tutorial, grazie ancora!

    RispondiElimina
  6. Ciao Seb,
    non ho ancora visto il link che hai segnalato, però sono riuscito a risolvere il problema, sono riuscito a trovare il modo per effettuare il controllo se ci sono connessioni dati attive (wifi, 3G, etc). Qualora ti andrebbe di fare un tutorial così da metterlo a disposizione di tutti fammi sapere che ti mando l'e-mail.
    Luca

    RispondiElimina
  7. ciao! sono interessato al controllo della connessione attiva o meno (senza usare il metodo con il locationsensor). puoi condividere il codice usato ? tnx!!

    RispondiElimina
  8. Ciao, supercomplimeto a seb, io non sono un grande programmatore ma grazie a lui ho fatto 4 cosette che appena finisco pubblico, sono interessato anc'io alla questione del controllo della connessione, magari con un messaggio all'utente in quanto la mia app fa praticamente ascoltare musia e necessita di connessione.. grazie

    RispondiElimina
  9. Ciao a tutti Seb è fantastico e grazie a lui ho rispoperto il gusto di trafficare... son interessato anchio al controllo della connessione attiva... inoltre qualcuno mi dice come si fa copia e incolla dei blocchi??

    RispondiElimina
    Risposte
    1. purtroppo non si può fare copia incolla dei blocchi,speriamo in una delle prossime versioni di AI, è una cosa veramente necessaria (ma un copia incolla di base lo puoi fare con control-c , control-v se è quello che intendi...io intendo tra schermate diverse...)
      per il controllo della connessione qualcuno aveva risolto usando il sensore gps ma ora non ricordo bene come avesse fatto,se trovo la discussione relativa ti faccio sapere

      Elimina
    2. si si intendevo anche all'interno, avevo provato con chrome a fare control c e v ma non andava invece con firefox va, poi ho cambiato tastiera, non so cosa centri ma la vecchia non mi faceva nemmeno il print screen ed adesso funzia tutto... ??? booo, dai ragazzi mi manca solo la questione del banner x la versione free e sono pronto per la pubblicazione della mia opera prima grazie a Seb... anzi, Seb.. se autorizzi ti aggiungo nei ringraziamenti e cito il sito

      Elimina
  10. Salve per prima cosa complimenti per i tutorial fatti molto bene, penso di essere riuscito a fare tutto l'unico inconveniente è che non si formatta per android la pagina internet che ho inserito come home, se hai qualche suggerimento sarebbe gradito ancora grazie

    RispondiElimina
    Risposte
    1. Ciao alessandro, purtroppo il componente web viewver usa il browser che hai sul tuo cellulare e non è possibile modificare lo user agent
      pertanto se la pagina non si visualizza come vorresti non c'è altra soluzione che cambiare direttamente il codice della pagina originale per formattarlo secondo le tue preferenze

      Elimina
  11. Ciao e grazie per la risposta fulminea, puoi spiegarmi perchè per esempio (sempre seguendo le tue indicazioni alla lettera)con lo stesso browser (galaxi note) sia google che libero vengono formattati per android in automatico mentre invece altri siti es:http://www.jazzsetorchestra.it/ no??? grazie ancora per l'attenzione continuerò a formarmi con i tuoi tutorial.... buona serata ale

    RispondiElimina
    Risposte
    1. può essere che il sito che hai indicato non abbia il riconoscimento dell'user agent come hanno google o libero. Come detto il componente webview usa il browser stock del telefono su cui fai girare l'app, quindi ci possono essere differenze sia usando telefoni diversi che usando siti diversi.
      Se conosci il link diretto al sito mobile per esempio su blogger è così:http://seblogapps.blogspot.it/?m=1 (aggiungendo il ?m=1 alla fine) puoi usare quello sulla webview.
      In buona sostanda dipende da come è fatto il sito web che vuoi visualizzare...

      Elimina
  12. Arigrazzie un'altra volta adesso penso di aver capito....continua così sei un grande... alessandro

    RispondiElimina
  13. ciao! ho una piccola domanda legata a questo componente in relazione alla visualizzazione di pubblicita' (adSense x mobile) al suo interno.
    Quando metto nel viewver la pagina web in cui c'e' il mio adSense, nel cellulare si visualizza come spostata verso destra (di poco). Non riesco a centrare l'annuncio nella viewver(anche se uso le stesse dimensioni dell'annuncio adsense). So che non serve usare i vari vertical arrangement.. immagino si debba agire direttamente nella pagina in cui c'e' l'annuncio adSense. Nella tua app, noto che ci riesci (e' centrato e non viene tagliato l'annuncio)..
    Puoi suggerirmi qualche idea per rendere l'annuncio adsense (con dimensioni: google_ad_width = 320; google_ad_height = 50;), centrato nella viewver ?
    TNX in anticipo!!!!!!!!

    RispondiElimina
    Risposte
    1. Ciao Michele, non ho nessun codice speciale nella pagina col banner admob (e non adsense per cellulari, magari questa è la differenza?)
      la width è in automatic e uso le height a 50px fissi (finchè non viene selezionato il banner a quel punto la metto in automatic per visualizzare l'annuncio)
      spero di averti dato una mano, ciao!

      Elimina
  14. Ciao Sebastiano. Complimenti per il blog. Fantastico. Pieno di informazioni utilissime. Volevo farti una domanda. Non riesco a visualizzare interamente una pagina web all'interno del componente web view, ovvero si visualizza ma devo sempre zoommare per vedere l'intera pagina all'interno delle dimensione del componente. Per intenderci, se cerco di visualizzare la stessa webcam che usi nella tua applicazione acqua alta, devo sempre zoomare per riuscire a vederla nelle dimensioni del display. Vorrei riuscire a visualizzare una immagine presa da una pagina sul web, ma vederla interamente subito e non solo un pezzo e poi zoomando indietro allora riuscire a vederla tutta. Nono so se sono riuscito a spigarmi. Spero di si. Grazie.

    RispondiElimina
  15. La pagina che visualizzo è stata rifatta da me in html per adattarsi bene, quindi lo scaling viene fatto nelweb server e non nell'app

    RispondiElimina
  16. Ciao Seba,
    ho provato una piccola applicazione che mostra direttamente il sito da me inserito.. come se fosse una specie di collegamento diretto dal desktop del pc.. Solo che visitando il sito in questione dall'ap la navigazione risulta molto lenta, mentre visitando lo stesso sito dal browser del cellulare va una scheggia.. Come mai? ed esiste un sistema per risolvere?
    Grazie

    RispondiElimina
    Risposte
    1. Molto strano, io non ho mai notato questa cosa anche perchè il browser che utilizza nella webview è lo stesso di quello stock del telefono,non esiste nessun parametro o "trucchetto" per cambiare questo comportamento.

      Elimina
  17. Ciao Sebastiano.
    Prima di tutto complimenti per il tuo preziosissimo blog.
    Sto facendo una semplice app che tra le altre cose deve visualizzare tramite WebView una pagina che contiene un'animazione in flash.
    Mi sembra di aver capito che in teoria l'app usa il browser del telefono, eppure tramite browser vedo correttamente il filmato flash, ma attraverso l'applicazione si blocca e mi dice che è da installare flash....

    Qualche suggerimento in proposito?

    Grazie mille e ancora complimenti

    RispondiElimina
    Risposte
    1. purtroppo mi risulta che la webview che è disponibile in App Inventor non sia compatibile con i contenuti in Flash (pure se il plugin è correttamente installato nel tuo device)
      fonte (https://groups.google.com/forum/?fromgroups=#!searchin/programming-with-app-inventor/flash/programming-with-app-inventor/PxrgD3eucok/BvFmtm3oXL4J)
      speriamo sistemino visto che la webview di Android SDK funziona correttamente...

      puoi usare un activitystarter per far partire la pagina col browser di sistema ma forse per la tua applicazione questa soluzione non va bene, vedi te

      Elimina
  18. Ciao,
    ho scoperto da 5 minuti questo blog e devo dire di aver visto dei tutorial veramente molto ben fatti; compiimenti.

    Visto che qui tratti di WebViewer, colgo l'occasione per chiederti una possibile soluzione a questo mio problema (magari può essere utile anche per altri)

    Ho la necessità di distribuire su di un sito php delle app persomalizzate per ogni utente iscritto, in maniera tale che ogni app, una volta consegnata, apra solo ed unicamente una determinata pagina web.
    In pratica è come se dovessi compilare in automatico un'app diversa volta per volta, che di diverso ha solo il fatto che apra une url diversa.

    Ovviamente su un normale host pubblico non ho la possibilità di compilare applicazioni Android, quindi dovrei fare diversamente...

    Ho pensato di partire da un'app standard già compilata, che ha la url da aprire memorizzata su di un file xml o giù di lì, tipo file di risorse, e ogni volta modificare tramite php il file xml all'interno del file apk, che non è altro che un file in formato zip (php può aprire e manipolare completamente un file zip e tutto ciò che contiene).
    In questo modo potrei 'confezionare' un'app diversa ogni volta.

    E' possibile fare questo con un'app realizzata con AppInventor?
    E se invece utilizzo un'ide Java (Ecliple) avendo quindi più primitive, ho più possibilità?

    Grazie anticipatamente.
    Fed

    RispondiElimina
    Risposte
    1. Ciao "t", ottima e complessa domanda, non ho esperienza di php ma quel che so è che non basta "scompattare" e poi "ricompattare" l'apk per farla funzionare, ma bisogna usare i comandi dell'apk tool (come si vede nei vecchi tutorial sulla pubblicazione delle app in play store),
      dunque il server a "monte" dovrebbe occuparsi di tutto questo, se riuscisse ad eseguire uno script appunto di questo tipo allora forse la cosa è fattibile.
      Potresti per esempio mettere l'url da caricare come "asset" nei file media del design editor, questi file se controlli quando scompatti l'apk stanno in una cartella asset appunto, il file lo chiami che ne so "listaurl.txt" e poi col tuo script php lo cambi ogni volta prima di ricreare l'app con gli apktools...
      poi dal blocks editor non è difficile usare il componente webviewer e dirgli di aprire l'url che trova leggendo il file testuale "listaurl.txt"...
      spero di averti dato qualche idea in più, fammi sapere come va, ciao

      Elimina
  19. Ciao Sebastiano
    Ho avuto il piacere di vedere il tuo tutorial e provarlo su un app che sto creando.
    Il mio problema è che non mi apre i link https://, forse perchè tira vuori l'alert della sicurezza e il webviewr non lo visualizza, fatto sta che sembra non restituire niente.
    Hai qualche dritta o problema conosciuto su questo "errore" ( che errore non è)?

    Grazie e ottimo lavoro.

    Cristiano

    RispondiElimina
    Risposte
    1. Purtroppo il componente webviewer usa la webview del kit android "compilato" assieme alla specifica versione di App Inventor, di fatto quindi per esempio non supporta il flash più altre cosette varie :(
      se non hai modo di modificare te la pagina e renderla "adatta" alla tua app, al momento non ci sono purtroppo soluzioni, speriamo anche qui in un aggiornamento di app inventor ed all'implementazione di una webview più recente :)

      Elimina
    2. Ah! altra cosa....
      C'è modo di mettere un immagine di attesa durante il caricamento della pagina?
      Il cerchietto che gira per intenderci, magari una gif animata che indica l'attesa di carica del browser

      Elimina
    3. no, non mi risulta sia possibile metterlo in maniera semplice, al massimo potresti provare visualizzando una label o una gif animata fintanto che il "currentPageTitle" non è quello che vuoi te, ma è una soluzione non ottimale in quanto dovresti sempre sapere qual'è il currentPageTitle a pagina completamente caricata...:(

      Elimina
  20. Ciao Sebastiano,
    Vorrei chiederti una cosa (te la chiedo qui per dare visibilità magari anche a qualcun altto interessa)
    Con la web view avre la necessità di fare l'upload di alcuni file nella pia pagina php. Quando però viene visualizzato lo "scegli file" e dall'app lo premo non accade nulla. Invece da browser carica correttamente aprendo le varie app che mi consentono la scelta del file.
    Credo che anche questa funzione non sia supportata dalla web view corrente? Dobbiamo aspettare aggiornamenti?

    RispondiElimina
    Risposte
    1. Esatto, credo che sia proprio così, la webview che han messo in app inventor è abbastanza obsoleta e limitata, probabilmente non riesce a fare quello che invece fa il browser del telefono,
      non resta altro da fare che trovare un'altra soluzione o sperare che in una prossima versione di AI utilizzino la webview più aggiornata :)

      Elimina
    2. "non resta altro da fare che trovare un'altra soluzione"
      Eh, è una parola xD
      Io ho un form mail e dovrei gestire l'upload degli allegati. Non credo di avere altre soluzioni T.T

      Il form mail è in php. Non credo di poter trasferire il tutto in appinventor. Cioè non credo di poter utilizzare appinventor come client mail :/
      Inoltre ho notato che lo scrolling è molto lento all'interno dell'app.

      Al mit rilasciano notizie riguardo i futuri aggiornamenti?

      Elimina
    3. per quanto riguarda le novità si può vedere qua:
      https://github.com/mit-cml/appinventor-sources/commits/master

      praticamente vedi su cosa stanno lavorando, per ora più che altro direi bug fix,
      per il tuo problema, potresti provare con il componente web e il metodo POST?
      invii delle richieste POST al tuo server web, e formattando correttamente l'http post coi suoi parametri magari ci riesci, non sono molto esperto di web server quindi più di così non ti posso aiutare, fammi sapere se scopri qualcosa di interessante :)

      Elimina
    4. Sicuramente ti faccio sapere se trovo una soluzione, ma credo sia improbabile poichè per l'upload uso una classe molto complessa e non so se posso fare quello che hai suggerito

      Elimina
  21. Buongiorno e complimenti per tutto il lavoro svolto fin qui! Mi piacerebbe sapere se è solo un mio problema o è comune il fatto che il componente non riesce ad incorporare Twitter. Lo attribuisco al fatto che il protocollo sia https e non http... Grazie per il supporto!

    RispondiElimina
    Risposte
    1. onestamente non ho mai provato, però esiste anche il componente apposito per Twitter (anche se forse anche quello non è aggiornato, non ho mai provato)
      https è supportato dalla webview ma magari qualche altro attributo utilizzato da Twitter non lo è.
      Se qualcuno ha fatto delle altre prove può aggiornarci qua, grazie!

      Elimina
    2. Assolutamente, anche perchè Google+ lo prende benissimo via Webviewer... Mi resta solo Twitter in sospeso, il resto va più che bene! Attendo altre verifiche

      Elimina
  22. Ciao Sebastiano,
    grazie anzitutto per i tuoi preziosissimi tutorial, utili, chiari, vitali (per lo meno per me)...Vorrei sottoporti una domanda: sto creando una app per la mia associazione culturale, che organizza eventi (gratis)in giro per l'italia, ora, ho provato (come da te suggerito in un tutorial) ad importre i dati in una tabella usando google drive, e fin li tutto ok, li ho trasferiti nella mia app, ma si si presentano due dilemmi 1) che gli eventi vengano visualizzati secondo il principio di "vicinanza" con l'utente che li sta visualizzando (quindi ciascuno dovrebbe visualizzarli in ordine diverso rispetto la sua collocazione geografica) 2) che cliccando sul singolo evento (caratterizzato da luogo, data e ora dell'evento) all'utente si apra la mappa con le indicazioni stradali per raggiungere rispetto la sua posizione l'evento stesso.... E' a tuo dire una cosa fattibile o mi sto scervellando per nulla? Se è fattibile puoi aiutarmi, magari con un tutorial? Grazie infinite per il tempo e la pazienza che vorraio dedicarmi...Andrea

    RispondiElimina
    Risposte
    1. Ciao Andrea, premetto che non posso aiutarti con un tutorial apposito...
      fare quello che chiedi non è semplicissimo ma credo sia fattibile.
      Io procederei così:
      1)studiati per bene le Fusion Tables, esiste il componente con cui le puoi leggere e "interrogare" in AI come se fosse un database sql, il vantaggio che ne trai è che esistono tutta una serie di query basate sulla localizzazione, quindi se memorizzi nell'evento anche il dato di latitudine/longitudine poi lo potresti paragonare con la posizione attuale del telefono dell'utente e visualizzare gli eventi con l'ordine corretto
      2)se riesci a fare questo, quando con le fusion tables leggi la colonna relativa all'indirizzo dell'evento, puoi dare in pasto questo indirizzo ad un activity starter che ti fa partire Google Navigator (per come fare guarda il tutorial su google maps e navigator...)

      Tecnicamente quello che chiedi di fare è fattibile, complicato ma fattibile :)
      in bocca al lupo!

      Elimina
  23. Salve Sebastiano,
    volevo chiederti se è possibile, se è possibile reindirizzare l'app se non c'è intenet ad un text che dica che non c'è una connessione attiva ad internet

    RispondiElimina
  24. Ciao Sebastiano, Io Ho Un Problema Se Metto Le Mie App create con app inventor Sul Cellulare non esce a tutto schermo, ( http://i40.tinypic.com/nzvqr.png ) cosi, Perche?

    RispondiElimina
    Risposte
    1. Devi provare a cambiare dei tag nell'AndroidManifest.xml,
      la maniera più semplice è farlo usando Marketizer Cloud ed impostando in advanced settings i parametri come vedi qua:
      http://i.imgur.com/0FuguMz.jpg
      L'importante è che ovviamente dopo che hai modificato il manifest generi nuovamente l'apk.
      Segui il tutorial sul Marketizer Cloud per vedere il procedimento, ciao

      Elimina
  25. Ciao Sebastiano, Complimenti innanzitutto per il blog. Mi stò cimentando nel realizzare un programmino che mi permetta di vedere la mia webcam. Quando vado all'indirizzo della cam dal browser riesco a vedere bene l'immagine, mentre quando utilizzo web viewer per visualizzare la stessa pagina, al posto dell'immagine esce un quadratino piccolo azzurro con un punto interrogativo.

    RispondiElimina
    Risposte
    1. dovresti vedere in che formato sono le immagini della webcam, per esempio se fossero in un applicazione flash player, con la webview non le puoi vedere.
      Devono essere in jpg, gif o altre immagini statiche simili,forse è questo il tuo problema?

      Elimina
  26. Non saprei dirti che formato ha il video, l'indirizzo è http://cianservice.dyndns.org:5000/videostream.cgi?user=admin&pwd=admin&resolution=32&rate=0 ho provato anche a inserirlo con il video player ma mi da errore 701. Puoi aiutarmi?

    RispondiElimina
    Risposte
    1. mi dispiace ho provato a darci un occhio ma non capisco, sembra che scarichi un sacco di immagini jpg in sequenza, infatti se resta pochi min connesso scarica molti Mb di dati.
      Ho provato con "inspect element" di chrome ma non trovo ad esempio la posizione della singola immagine, se hai il sw della telecamera IP puoi magari vedere se la puoi impostare per prendere solo non so , un immagine ogni minuto, e salvare in jpg.
      Insomma io lavorerei alla "fonte" cercando di generare un flusso di immagini od un video visualizzabile con la webview di App Inventor

      Elimina
  27. Buonasera Sebastiano,
    grazie ai tuoi Tutorial sto costruendo pian piano la mia prima APP.
    Ho riscontrato un problema con la WEBVIEW, non so se è lo stesso di alcuni già citati, ma se per esempio vai sul link http://www.kisskissnapoli.it/player/ da PC o da Browser cellulare, parte l'audio, se lo faccio tramite il WEBVIEW non parte l'audio.
    Ho provato il tutto con l'Activity e funziona, ma questo a me non servirebbe perché così facendo escono dalla mia APP.
    Ho anche provato a fare come il tuo tutorial sulle WEB RADIO, ma non parte l'audio se inserisco come Player http://www.kisskissnapoli.it/player/
    HELP ME !
    Fabio

    RispondiElimina
    Risposte
    1. ciao Salvo, la webview non supporta i plugin, la tua web radio probabilmente è in flash o altro plugin e per quello non va ...
      devi trovare l'indirizzo dello stream (sempre che sia in mp3 e non aac+) ed allora puoi usare ad esempio il tutorial sulle web radio che ho fatto per fare ascoltare la radio dalla tua app.
      Per trovare l'indirizzo esatto dello stream puoi provare con il metodo che faccio vedere nel tutorial per creazione di app per radio in streaming in 10minuti

      Elimina
    2. Ciao Sebastiano,
      ti ringrazio prima di tutto per la risposta..
      Quindi non è possibile aprire tramite ActivityStarter una pagina all'interno della mia APP??
      Purtroppo le radio che cerco io non hanno l'MP3 della diretta, sono tutte in FLASH.
      Grazie
      Fabio Di Salvo

      Elimina
    3. Purtroppo allora no, l'unica soluzione è lanciare con activitystarter il browser web (sperando che supporti il flash nel cellulare del tuo utente) all'indirizzo della radio in questione.
      Però così facendo il tuo utente esce dalla tua app ed usa il browser del telefono.

      Elimina
  28. Ciao complimenti per i tutorial,davvero fatti bene..Sto creando un app con la webviewer ed in pratica è un app che permette di eseguire ricerche su google visualizzandole direttamente sull'app..fin qui tutto ok ma vorrei anche che se si cliccasse su un file tipo pdf o zip o qualsiasi estensione partisse il download,come succede nel browser integrato in android..
    Si può fare o in AI ancora non c'è una simile funzione?
    grazie per la risposta :)

    RispondiElimina
    Risposte
    1. al momento non è possibile, la webview non permette il download di file ma serve solo per visualizzare pagine internet ...

      Elimina
    2. E non si può implementare in nessun modo in AI? magari usando il componente web o activity starter? che limitazione però..avevo pronta la mia app già..peccato!

      Elimina
  29. Ciao Sebastiano, sono abbastanza avanti con la creazione della mia App. Mi sn fermato su un punto importante.
    È possibile effettuare il collegamento LINK tramite activity starter che però prenda l url da una label che prende i dati da spreedsheet.
    Es. La label può cambiare continuamente perché è collegata ad una tabella XML.

    RispondiElimina
    Risposte
    1. Credo sia possibile, magari usando il componente web per prendere i dati dallo spreadsheet poi con le funzioni testuali manipoli il tuo url e quando è pronto nel formato http:// lo dai in pasto all'activitystarter.
      Più o meno questo può essere il procedimento,non avendo più informazioni mi è difficile spiegare più nel dettaglio! :)

      Elimina
    2. Ciao Sebastiano, un problema gravissimo, il programma non mi fa piu' salvare l'applicazione.
      Quando clicco su Package for phone e sceldo di salvarlo sul PC, mi esce la scritta in alto
      "Build failed! Can not contact the BuildServer at buildserver.appinventor.mit.edu"

      cosa è successo secondo te???

      Elimina
    3. Cosa importante è che se provo a salvare qualche altro progetto di prova, quello funziona!

      Elimina
    4. E' un problema noto, uscito da qualche giorno, il MIT è già al lavoro per risolverlo, ne parliamo anche qua:
      http://venicetideads.altervista.org/index.php?p=/discussion/1315/errore-nel-packaging#Item_30
      speriamo risolvano al più presto!

      Elimina
    5. Si, mi sono iscritto proprio l'altra sera a quel blog perchè avevo letto di questa discussione.
      Speriamo si risolva presto, teniamo le dita incrociate e lo sguardo in alto a destra :)

      Elimina
    6. :) sono sicuro che se si mettono seriamente quelli del MIT ed anche qualcuno del team di Google la cosa verrà risolta presto!

      Elimina
  30. ciao Sebastiano scusa la mia ignoranza ma vorrei chiederti una cosa,

    uso il webviewer per visualizzare una immagine messa su un sito ... come mai dopo aver aggiornato la pagina web, nell'applicazione scaricata già dal play store questa pagina non viene aggiornata e mi lascia quella vecchia?

    c'e' qlc che potrei fare?

    RispondiElimina
    Risposte
    1. Ciao, ma dopo che la tua pagina web è cambiata, in App Inventor hai dato il reload della pagina?
      perchè se per caso l'app era solo andata in secondo piano ma non fai un reload della pagina allora ti resta l'immagine vecchia ovviamente.

      Elimina
    2. l'app e' gia' pubblicata ... il link web non dovrebbe aggiornarsi da solo???
      devo ripubblicare ogni volta?
      considera ke l'app serve per pubblicare contenuti da modificare ogni giorno

      grz mille sebastiano

      Elimina
    3. se la webview punta ad un sito internet (e quindi non è un asset memorizzato nell'app stessa), dovrebbe aggiornarsi senza bisogno di fare nulla (ad esempio nella mia app Acqua Alta le webcam e il grafico marea sono fatti proprio con una webview su un sito ad-hoc)
      Come però già detto se per esempio il tuo utente ha un dispositivo con molta memoria, può essere che l'app non venga mai chiusa e quindi quando la rilancia in realtà la riporta solo in primo piano e quindi visualizza la vecchia versione della pagina web.
      Ti consiglio di provare a dare un webviewer goHome su screen1.initialize così forzi un "reload" della pagina all'apertura dell'app.
      Prova e fammi sapere, ciao

      Elimina
  31. ora provo di sicuro ma ti voglio fare una domanda ...
    tu come faresti a riportare una lista di prodotti i cui prezzi sono giornalmente modificati...

    l'idea e' di non aggiornare l'app ogni giorno inviando aggiornamenti agli utenti (che fra l'altro non so fare )ma di fare tutto in automatico

    RispondiElimina
    Risposte
    1. puoi fare come hai fatto te con la webview,
      oppure puoi creare un foglio di calcolo su gdrive (equivalente ad un excel per capirci) e poi importare questi dati in AI
      (con il tutorial per l'import di dati html che ho già fatto potresti farti un'idea...)
      ovviamente l'idea di aggiornare l'app tutte le volte è la peggiore :)
      l'app deve restare sempre uguale ma deve essere in grado di leggere dati aggiornati da una fonte esterna :)

      Elimina
  32. Gentile Seb volevo porti questa domanda: è possibile direttamente o indirettamente (quindi anche con un metodo poco ortodosso...) far capire all'applicazione cosa si sta digitando sulla pagina web vista con il componente webview. Grazie.

    RispondiElimina
    Risposte
    1. Direttamente no,
      indirettamente forse si, forse dovresti provare a usare javascript ed il componente webviewer, e javascript dovrebbe cambiare il titolo della pagina in base al testo digitato dall'utente,
      infatti il titolo della pagina è l'unica cosa che può essere letta dalla webview,
      questo sistema viene usato ad esempio in molti tutorial di TaiFun, te ne linko uno come esempio:
      http://puravidaapps.com/tutorials.php#html
      prova a vedere se così riesci a fare qualcosa... :)

      Elimina
  33. Ciao Seba,
    Effettuare il collegamento Link all'interno della propria App tramite webview e non activity starter è legale? Ovvero la schermata della mia app sarà poi divisa in 2,il lato di sopra è della mia app, il lato di sotto è webview con il sito scelto dall utente.
    Grazie per il supporto giornaliero che ci fornisci,

    RispondiElimina
    Risposte
    1. non capisco cosa intendi per legale...nella tua app puoi fare quello che vuoi!
      (l'unico limite è con dei circuiti banner tipo admob per cui non vogliono che i banner vengano visualizzati nelle webview)
      se vuoi mostrare sopra parte della tua app e sotto un altro sito con webview penso non violi alcuna regola (a meno che il sito visualizzato non abbia delle regole specifiche e restrittive al riguardo) per questo dovresti informarti col gestore del sito che vuoi visualizzare.

      Elimina
    2. Un es.
      dalla mia App, nella webview faccio visualizzare Facebook, è possibile secondo te?

      Elimina
    3. certo è possibile e anche molto facile da realizzare, basta che metti l'indirizzo di FB come url della webview,
      non credo ci siano limiti "legali" da parte di FB nell'utilizzo delle loro pagine in webview...

      Elimina
    4. ciao, qualcuno sa se esiste un programma che mi permetta di aprire l apk sul PC per vedere la programmazione dell'applicazione? se apro con il blocco note escono tutti simboli e codici nn decifrabili.
      ovviamente l apk che voglio aprire non è la mia.
      Grazie

      Elimina
    5. nessuno risponde?
      Sebastiano nemmeno tu conosci qualche programma che faccia al mio caso.?

      Elimina
    6. i programmi creati con App Inventor non possono venire decompilati, quindi anche se hai l'apk al massimo puoi usare programmi tipo App2Market per decomprimere l'apk e recuperare le immagini e i suoni al suo interno, ma non il codice sorgente.
      Se invece sono programmi fatti in java con Android sdk allora esistono alcuni tool tipo Apk2Java ma non funzionano sempre al 100%
      Ma se vuoi imparare e vedere come sono fatte alcune app, molto spesso si trovano i sorgenti perchè sono app magari freeware e open source, prova a cercare su google le parole chiave nome della app e source files magari lo trovi.
      spero di averti aiutato,ciao

      Elimina
  34. Ma ci sono problemi con APP INVENTOR?
    mi esce questo messaggio quando provo a salvare il progetto

    Build failed! Reflecting exception for userid 114806468113641112678 projectId 16252075, original exception com.google.appinventor.server.storage.BlobReadException: Error trying to read blob from /blobstore/writable:AD8Bvunh7B40nSYQ8HJzdFkf0uwflJJVhtYTBheWFCQBg2VPDp1o1NI66O0GZZwM3z1SJKoPK1Feeg13NdDgQ7lFWQa9uavLcbwxUU1kxzfleiZn4-dEojt9eHYY6VdtW9hYDqm01gof6TKD0i-AMyVQYskVKTd9bs0--vx8QpCDD1v-YwgMvXDpJW7Cfjowm4jhGJcVU1R5u5IUUHgSQcm48q4AXw73I_A5R9OLM0xBPO1SkvGshibF0BqSFSWMF8x8T1Pz-KBcOgeE97wQieHrCRqCcEWkwt4e92usKG_o26b3L-zVYvCX8PDrVAxUsGFTR-1rCBmeJPgEF1SNZ4A6Ki_3QxFXnfsQqYpZZaiUYvThfVSNNRrD089avPZWa2PjUGG9_7zMlVQMkU2lFF3G79fF3M4aTv1Cg-eS-UREzKk7RCk3u1Lqih-_nrjS0EeBNphH5_w4utIK_LQirSLwiKjtlfFiboeUlMeXMkNSyqwiMBx3ruq1asWN3EgDk-hug1HAPrSG2bmojjoBd9nJo88vOYM8swDypet7_Ndu8-tmpwLUCqN5EhB5BVNG0WYInOOocqQQAZAYPMc2zKhdJohiDMqp10eFdFd7J5FDI3lDVUD-gfaVCebKADgumBXqSFVM7gFaq4UN5xnbcd7DiCsQJ2Sb7ex66d0wHHLS-FRbLO-5Pue7eN-bzz5rsdoGOPSobbLRyG9YnlASQW9xR508ToRlE-8fMsx35K3y4GjiHwRVNabP7tTXfmnGgtmPTbAaERiCQEEJ8DsEVhU8JpXQvt3Mt-WTxtX6AbT_LY-5isFI9B_80j5vZz1PmMEWWac2Zd1ArT5RyYDldifV5LstJfmeb0LivjdA2EGUJa9-F3MeAP4G86ETY94plbR-ELKRhdYIb0Y6Jbx0UaFqwHG80iC9OEEgQZv5GrtBF40EDVGqHALCzlc3sW92E7xNPO6Z2O0YoMrcioxcbCqe6ih1k2-T0fboIN_wjtZMcAmzvhemLNQp2Y-OvgwA0NdNL54MLbsknLygcBBUJIQlTuj3o8M-RHZ0yh7bsm8juXXkUbzE2zM, blobkey =

    RispondiElimina
    Risposte
    1. può essere che ci siano problemi temporanei sul server, credo che il MIT ne sia a conoscenza, ora hai ancora l'errore?

      Elimina
    2. purtroppo si, o esce un errore tipo quello sopra citato, o resta perennemente al 100% della costruzione dell Apk, ma non parte il download sul mio PC.
      sto fermo da parecchi giorni mannaggia.

      Elimina
    3. se non lo hai già fatto puoi provare ad installarti in locale AI (con i progetti ai4a o ailivecomplete)
      scaricare il tuo sorgente dal MIT app inventor e caricarlo sull'AI in locale, così magari riesci a compilare il tuo progetto e generare l'apk correttamente.

      Elimina
    4. Grazie per il consiglio.
      stasera provo a seguire il tuo Tutorial
      Tutorial 41 - Installare App Inventor in locale sul proprio pc (metodo semplice)
      ti faccio sapere tra 1oretta!

      Elimina
  35. Salve, volevo innanzitutto complimentarmi con lei e con i suoi video tutorial di facile comprensione. Detto questo mi è sorto un quesito riguardo l'utilizzo della componente webviewer e cioè: "è possibile inserire un loading gif/testuale o un alert nel frattempo che la componente carichi completamente la pagina?"
    Grazie e complimenti ancora. ;-)

    RispondiElimina
  36. Ciao, c'è modo di avere i pulsanti fissi e solo la webview scrollabile? Se la pagina è lunga, bisogna tornare all'inizio per trovare il pulsante per tornare indietro.

    RispondiElimina
    Risposte
    1. Mi sono risposto da solo.
      Basta togliere la spunta alla voce Scrollable dello Screen...

      Elimina
  37. Salve a tutti, ho cercato visualizzare il sito di youtube con WebViewer inserendo l'indirizzo di un video specifico e ho riscontrato le seguenti anomalie:

    1. Il video non parte in automatico;
    2. quando clicco su play viene riprodotto solo l'audio e non le immagini.

    Saluti

    RispondiElimina
    Risposte
    1. Credo che la webview di base in App Inventor non sia compatibile con flash e con html5 ecco perchè ci sono problemi nel visualizzare i video di YouTube, spero che nelle prossime release di AI aggiornino anche la webview in modo da non avere più questo tipo di problemi. Grazie della segnalazione

      Elimina
  38. Buonasera cerco un aiutino sulla mia app radio web vorrei mettere un qualcosa che scorre dal momento del click sul play alla connessione dello streaming e in caso di errore restituisca un messaggio da me scelto. Grazie a tutti

    RispondiElimina
    Risposte
    1. Ti conviene mettere un notifier, oppure se controlli te il sito web della radio puoi caricare una pagina web apposita (creata da te) che mostra un testo di caricamento per tot secondi

      Elimina
  39. Buongiorno ancora a tutti...la mia app radio è completa e funzionante ma ho bisogno di iserire qualcosa che al click del play avverta l'utente dell'attesa fino alla connessione...perchè alcuni utenti precipitosi cliccano play e dopo 2 secondi chiudono perchè lo streaming non parte...aiuto grazie

    RispondiElimina
    Risposte
    1. when Button click - notifier alert= e scrivi il testo che vuoi che esca

      Elimina
  40. Sto imparando da qualche giorno. Ho un problema con webviewer perchè scarica correttamente una pagina web ma poi non la aggiorna più quando la pagina viene modificata. Praticamente è come se la prima versione della pagina linkata fosse memorizzata da qualche parte. Come fare per vedere l'ultima versione della pagina linkata e non la prima immutabile? Grazie mille per l'aiuto

    RispondiElimina
    Risposte
    1. Ciao Paolo, basta che forzi un reload della pagina chiamando webviewer.gohome
      oppure webviewer.gourl e specifichi l'indirizzo URL che ti interessa

      Elimina
  41. Ciao Seb, ma è possibile disabilitare lo zoom sulla web viewer?

    RispondiElimina
  42. Buon giorno Seb.
    Prima di tutto è d'obbligo un complimento sentito per l'aiuto che ci stati dando.
    Dopo una domanda: Ho appena fatto una piccola app che consenti l'utilizzo di un mioprogramma php e tutto sembra funzionare alla perfezione.
    Ciò che non comprendo è come mai quando tento uno zoom della pagina web (sia in + che in - appare in basso a destra dello schermo il vecchio pulsante di zoom che android utilizzava quando ancora non c'era lo zoom incorporato nel sistema.
    Non che la cosa sia brutta ma è un tantino antipatica in quanto, specialmente sul tablet, l'immagine del pulsante appare gigantesca e copre parte dell'ultima riga della pagina.
    Ho provato a cercare nel settagio di androi (versione 4.0, 4.2 e 4.4) ma niente da fare non c'è traccia di come fare.
    Grazie

    RispondiElimina
  43. Ciao Seb
    come faccio a creare una torcia
    Semplice app con tasto on off accende e spegne il flash Grazie

    RispondiElimina
    Risposte
    1. Non è previsto un tale componente, se vuoi la versione di Hossein (trovi più info nel mio forum)
      http://venicetideads.altervista.org/index.php?p=/discussion/1638/nuovo-prezzo-promo-per-l-acquisto-della-versione-ai2livecomple-ai1livecomplete-online-by-hossein#latest
      mi pare ci sia un componente per la torcia,
      questa versione è a pagamento ma è altamente raccomandata per le sue molte funzionalità in più

      Elimina
  44. Ciao Seba, inserendo un riquadro con visualizzatore web indirizzato a youtube, sento l'audio ma non vedo il video, come posso risolvere? Grazie in anticipo

    RispondiElimina
  45. ciao. grazie per il tutorial. fatto davvero bene.complimenti. ho seguito i tuoi passi ma quando mi apre un sito web specifico questo mi appare enorme e sborda dai margini dell'app senza adattarsi alla sua grandezza, come posso risolvere? grazie anticipate.

    RispondiElimina
  46. Buonasera. Non sono riuscito a trovare il modo di inserire in un'app, del testo formattato in formato txt o html, senza l'utilizzo di pagine web remote visualizzabili tramite il Web Viewer. I testi devono essere disponibili per l'app in locale.
    Grazie e cordiali saluti.

    RispondiElimina
  47. Ho risolto in parte con i caratteri speciali ma sarebbe auspicabile che in App Inventor si aggiungesse, nella User Interface, un componente "Testo" formattabile, ben più potente della "Label".

    RispondiElimina