mastodon.uno è uno dei tanti server Mastodon indipendenti che puoi usare per partecipare al fediverso.
Mastodon.Uno è la principale comunità mastodon italiana. Con 77.000 iscritti è il più grande nodo Mastodon italiano: anima ambientalista a supporto della privacy e del mondo Open Source.

Statistiche del server:

6,2K
utenti attivi

#SpaccWebView

0 post0 partecipanti0 post oggi
minioctt<p><strong>il webdroide su sd</strong></p><p>Ed ecco un’altra combo di mattina+pomeriggio passata a sclerare con <a rel="nofollow noopener noreferrer" class="hashtag u-tag u-category" href="https://octospacc.altervista.org/tag/android/" target="_blank">#Android</a>, con le sue API terrificanti. E dato che voglio esplodere, è bene distrarmi… postando la spiegazione di come ho smesso di sclerare una settimana fa!!! 😇️</p><p>Ancora una volta <a href="https://octospacc.altervista.org/2024/11/01/androwebvista/" rel="nofollow noopener noreferrer" target="_blank">per SpaccWebView di SpaccDotWeb</a>, infatti, ci sono degli imbrogli… ma piano piano faccio tutto, ne sono certa, il Java è nelle mie vene visto che a casa abbiamo la moka. E appunto, <a href="https://octospacc.altervista.org/2024/11/03/androidiessedi/" rel="nofollow noopener noreferrer" target="_blank">l’altra cosa che avevo tecnicamente già detto</a>, poi son riuscita a finirla (e menomale)… 👌️😉️👌️</p><p>Ora il mio codice riesce a salvare i dati della <a rel="nofollow noopener noreferrer" class="hashtag u-tag u-category" href="https://octospacc.altervista.org/tag/webview/" target="_blank">#WebView</a> sulla memoria esterna. Evviva!!! Ciò è praticamente fondamentale sui <a href="https://octospacc.altervista.org/2024/10/05/memorroid/" rel="nofollow noopener noreferrer" target="_blank">dispositivi senza adoptable storage (il mio tablet)</a>, perché servirebbe a ben poco poter spostare una app di 100 KB su <a rel="nofollow noopener noreferrer" class="hashtag u-tag u-category" href="https://octospacc.altervista.org/tag/sdcard/" target="_blank">#SDcard</a>, se poi questa scrive 10, 20 MB sulla memoria interna… 🤨️</p><p>Non ho in realtà sistemato tutti quei TODO dell’archiviazione esterna, ma al momento non freca, visto che il codice per salvare lì i dati funziona comunque as-intended, su Android KitKat o superiori. Su versioni più vecchie funziona comunque, anche se meno intended, perché Android hack rogne API spacc… non fatemi ripetere. 💤️</p><p>Il tempo mi serviva per implementare cose accessorie, tipo il fatto che l’applicazione ora all’avvio controlla la posizione di installazione, e, nel caso sia cambiata dall’ultima volta (dalle impostazioni di Android), allora obbliga a spostare i dati verso lo stesso posto. Col dialogo bellino così, tutto automatico, senza ricorrere a configurazioni complicate! 🎉️</p><p>Forzare i <a rel="nofollow noopener noreferrer" class="hashtag u-tag u-category" href="https://octospacc.altervista.org/tag/dati/" target="_blank">#dati</a> in sync in questo modo non solo migliora la UX, ma evita rogne strane, perché ci pensa il sistema Android a garantire che (per esempio) la app non possa trovarsi senza i suoi dati perché l’utente è stronzo e rimuove la scheda SD. 🤫️ (Devo però gestire il caso in cui l’utente sposta la app, ma toglie la memoria coi dati prima di trasferirli, che palle…)</p><p></p>In foto qui si vedono entrambi gli scenari: la cartellina coi dati su microSD, e la app che chiede di spostarli dopo esser stata messa su <a rel="nofollow noopener noreferrer" class="hashtag u-tag u-category" href="https://octospacc.altervista.org/tag/archiviazione/" target="_blank">#archiviazione</a> interna. Damn, così elegante, funzionale, incredibile… Android quando funge… 🤤️<p></p><p>Ovviamente, ho ricompilato la magica app di 2048 che uso come demo con questo miglioramento blessato; l’APK è <a href="https://hlb0.octt.eu.org/Drive/Misc/SpaccWebView-2048.apk" rel="nofollow noopener noreferrer" target="_blank">allo stesso posto dell’altra volta, </a><a href="https://hlb0.octt.eu.org/Drive/Misc/SpaccWebView-2048.apk" rel="nofollow noopener noreferrer" target="_blank"><strong>qui</strong></a>. E, in questo caso ho omesso gli scleri… dato che sono a tema WebView, ma questo componente di merda non smette di regalare sofferenza. Prima o poi vuoto il sacco… 🙃️🙂️</p><p><a rel="nofollow noopener noreferrer" class="hashtag u-tag u-category" href="https://octospacc.altervista.org/tag/android/" target="_blank">#Android</a> <a rel="nofollow noopener noreferrer" class="hashtag u-tag u-category" href="https://octospacc.altervista.org/tag/archiviazione/" target="_blank">#archiviazione</a> <a rel="nofollow noopener noreferrer" class="hashtag u-tag u-category" href="https://octospacc.altervista.org/tag/dati/" target="_blank">#dati</a> <a rel="nofollow noopener noreferrer" class="hashtag u-tag u-category" href="https://octospacc.altervista.org/tag/sdcard/" target="_blank">#SDCard</a> <a rel="nofollow noopener noreferrer" class="hashtag u-tag u-category" href="https://octospacc.altervista.org/tag/spaccwebview/" target="_blank">#SpaccWebView</a> <a rel="nofollow noopener noreferrer" class="hashtag u-tag u-category" href="https://octospacc.altervista.org/tag/webview/" target="_blank">#WebView</a></p>
minioctt<p>Ho realizzato tipo oggi una cosa che tecnicamente già sapevo di <a rel="nofollow noopener noreferrer" class="hashtag u-tag u-category" href="https://octospacc.altervista.org/tag/android/" target="_blank">#Android</a>, ma boh, non ci ho mai riflettutto. <strong>La memoria di archiviazione</strong> normale per i file <strong>è tutta una gigantesca hack!!!</strong> E programmando applicazioni si deve pagare le conseguenze di ciò… ooooooODIO ANDROID, <strong>diamine</strong>. 😩️</p><p>Anche me di 8 anni rimaneva un po’ puzzled dal fatto che, sui dispositivi che avevo all’epoca, il percorso <code>/sdcard</code> non era la schedina microSD, ma la memoria interna del coso. Però, cosa doveva frecarmi? Voglio dire, a funzionare funzionava comunque tutto… E idem quando poi iniziai a vedere <code>/storage/emulated/0</code>: emulazione di non si sa che sfaccimm, ma vabbé. 😴️</p><p>A quanto pare, storicamente gli androidi non avevano alcuna <a rel="nofollow noopener noreferrer" class="hashtag u-tag u-category" href="https://octospacc.altervista.org/tag/archiviazione/" target="_blank">#archiviazione</a> di file utente interna (!) standardizzata. Quindi, c’erano i dispositivi con relativamente tanta flash, che montavano una parte di questa su <code>/sdcard</code> (o simili) come succede oggi… e poi c’erano quelli sfigati con solo la partizione interna privata (<code>/data</code>), e che senza microSD fisica non facevano fare nulla, manco scattare foto (cacca). 😳️</p><p>A leggere oggi i metodi <a rel="nofollow noopener noreferrer" class="hashtag u-tag u-category" href="https://octospacc.altervista.org/tag/java/" target="_blank">#Java</a> per l’ottenimento dei percorsi usciti fuori da quei tempi — che ancora non sono stati deprecati eh, e quindi ancora devono essere usati per fare determinate cose — si impazzisce per davvero. Perché si ha in sostanza roba <code>getExternal...Dir()</code> e <code>getExternalStorage...()</code> che, su qualunque dispositivo degli ultimi 10 anni (forse 15), in realtà puntano all’archiviazione interna. 😔️</p><p>Il disastro in retrospettiva non si capisce esattamente quando si è fermato, ma credo con l’arrivo di KitKat… che ha rotto un sacco le scatole all’epoca, per chi si ricorda, con i suoi permessi nuovi (quando Google rompe qualcosa, non è mai la prima volta), però intanto credo sia stata la versione che ha standardizzato la memoria fisicamente esterna come “memoria secondaria”. 🤧️</p><p>E quindi da quel momento c’è la <a rel="nofollow noopener noreferrer" class="hashtag u-tag u-category" href="https://octospacc.altervista.org/tag/api/" target="_blank">#API</a> <code>getExternalFilesDirs()</code> (plurale), che da in lista tutte le “memorie esterne”, con la prima che è quella in realtà interna (e si chiama “primaria”), e le altre che sono in genere esterne per davvero, però si chiamano “esterne secondarie”. Troppo confusionario? <strong>Immaginate di dover programmare</strong>. 😉️🗡️</p><p>La cosa bella è che tutto questo non tiene neanche conto in primis dell’archiviazione adottabile aggiunta tempo dopo (Marshmallow), che è talmente un casino da essere buggata su molti dispositivi e infatti disattivata da molti vendor, e poi dell’archiviazione scoped introdotta ancora dopo (10-11) che come sapete da utente amo tantissimo (sarcasmo). Ma, <em>io digresso</em>. 💀️</p><p>In realtà, a parte i lati negativi, lo scoped <a rel="nofollow noopener noreferrer" class="hashtag u-tag u-category" href="https://octospacc.altervista.org/tag/storage/" target="_blank">#storage</a> ha un suo vantaggio, cioè che genericizza ancora di più l’accesso a memorie esterne e non solo (anche a percorsi della memoria interna privata di app programmate per condividerli, ad esempio Termux!). Lo dico semplicemente per riconoscere che, prima di lui, la API era veramente terribile, e lo sto sperimentando sulla mia pelle adesso. 🥶️</p><p></p>Il mood è letteralmente: <a rel="nofollow noopener noreferrer" class="hashtag u-tag u-category" href="https://octospacc.altervista.org/tag/todo/" target="_blank">#TODO</a> implementare le <a rel="nofollow noopener noreferrer" class="hashtag u-tag u-category" href="https://octospacc.altervista.org/tag/hack/" target="_blank">#hack</a> per supportare TUTTI gli Androidz sulla terra, dai dinosauri con API level 1 e mount stranissimi per colpa di OEM scassatutto, fino ai dispositivi correnti e futuri!!! 💣️💣️<p></p><p>Ho a malapena iniziato a scrivere quello che serve per supportare tutte le minchiate della memoria nella <a rel="nofollow noopener noreferrer" class="hashtag u-tag u-category" href="https://octospacc.altervista.org/tag/spaccwebview/" target="_blank">#SpaccWebView</a> Android, e già è lollissimo, nonostante tutti i TODO ancora da sostituire. E tutto ciò serve… per via di OEM tipo Samsung (ma non solo): <a href="https://stackoverflow.com/questions/5524105/how-could-i-get-the%20%20-correct-external-storage-on-samsung-and-all-other-devices" rel="nofollow noopener noreferrer" target="_blank">su Stackoverflow leggo</a> che i developer dell’epoca non erano felici del fatto che la microSD fosse montata in <code>/sdcard/external_sd</code> (o simili)… 🤭️</p><p>Per chi vuole approfondire oltre: <a href="https://medium.com/@emilynguyen1212/demystifying-internal-vs-external-storage-in-modern-android-54df92bbc563" rel="nofollow noopener noreferrer" target="_blank">https://medium.com/@emilynguyen1212/demystifying-internal-vs-external-storage-in-modern-android-54df92bbc563</a>, <a href="https://blog.wislon.io/posts/2014/11/20/xamarin-and-android-kitkat-and-your-external-sd-card" rel="nofollow noopener noreferrer" target="_blank">https://blog.wislon.io/posts/2014/11/20/xamarin-and-android-kitkat-and-your-external-sd-card</a> (, e altro non so). Io ora <strong>basta</strong>. 🥴️</p><p><a href="https://octospacc.altervista.org/2024/11/03/androidiessedi/" class="" rel="nofollow noopener noreferrer" target="_blank">https://octospacc.altervista.org/2024/11/03/androidiessedi/</a></p><p><a rel="nofollow noopener noreferrer" class="hashtag u-tag u-category" href="https://octospacc.altervista.org/tag/android/" target="_blank">#Android</a> <a rel="nofollow noopener noreferrer" class="hashtag u-tag u-category" href="https://octospacc.altervista.org/tag/api/" target="_blank">#API</a> <a rel="nofollow noopener noreferrer" class="hashtag u-tag u-category" href="https://octospacc.altervista.org/tag/archiviazione/" target="_blank">#archiviazione</a> <a rel="nofollow noopener noreferrer" class="hashtag u-tag u-category" href="https://octospacc.altervista.org/tag/hack/" target="_blank">#hack</a> <a rel="nofollow noopener noreferrer" class="hashtag u-tag u-category" href="https://octospacc.altervista.org/tag/java/" target="_blank">#Java</a> <a rel="nofollow noopener noreferrer" class="hashtag u-tag u-category" href="https://octospacc.altervista.org/tag/spaccwebview/" target="_blank">#SpaccWebView</a> <a rel="nofollow noopener noreferrer" class="hashtag u-tag u-category" href="https://octospacc.altervista.org/tag/storage/" target="_blank">#storage</a> <a rel="nofollow noopener noreferrer" class="hashtag u-tag u-category" href="https://octospacc.altervista.org/tag/todo/" target="_blank">#TODO</a></p>