androido webvista che non carica in chitogatto...
Con #Android, ahinoi, nulla da fare: ogni volta che mi metto a programmare per esso, immediatamente me ne pento, perché il sistema operativo è così terribilmente terribile che minimo una volta su due qualcosa va storto, esce il solito caso limite frutto di un complotto contro gli sviluppatori, di questo passo credo che perderò la pazienza per sempre. (Mentre, invece, quando le cose non vanno storte mi dimentico di scriverle… spoiler per il prossimo post?) 😓
Vabbè. Volevo aggiornare un minimo il famigerato SpaccWebView, perché al mondo servirebbe un APK della Spacc BBS e a me servirebbe pure un’altra robina; e, come tutte le mie cose, probabilmente non sarà mai completo al 100%, però intanto una particolare cosa necessaria da implementare era il caricamento di file nelle pagine web… altrimenti immagina che merda la app per un forum dove nemmeno si riesce a caricare immagini. (E poi il copiare link tenendoli premuti; roba standard di qualunque browser, ci frega poco.) 🛸
Ecco, Android è l’unica piattaforma dove segui le istruzioni alla lettera e le cose non funzionano; anzi, le istruzioni spesso non ci sono, in questo caso per esempio mancavano almeno per Android inferiore a Lollipop… ma pure rubando i codici delle altre persone alla lettera non funziona un cazzo. Precisamente, sui miei dispositivi con Android ben aggiornato, il codice per Lollipop e superiori funziona normalmente; ma, sul Galaxy Ace 4 con #KitKat 4.4.4 non c’è stato verso (e non c’è tuttora). 🤗💣
E allora, qui ci sarebbe davvero da ridere, perché ho precisamente 1 altro dispositivo con Android 4.4.4 in casa, che subito mi è tornato utile per debuggare… il TIM Easy 4G. (Se entro questa settimana non finisco di editare l’unboxing che ho promesso mamma mia pestatemi perché non è possibile che ho il culo così pesante.) Lo stesso codice che è rotto per il Samsung, lì funziona, e allora… e allora per una volta forse non posso neanche dare la colpa con certezza a Google, ma almeno sono felice (insomma…) del fatto che in mezz’ora ho perso tempo a scrivere e riscrivere solo codice corretto, non sbagliato. 🙄
Il picco di questa storia era il TIM che da solo salva inaspettatamente il pomeriggio, quindi evito di annoiare ulteriormente e passo al piangere prima di chiudere: su Internet si legge che Android KitKat ha in effetti un #bug nel componente WebView, che appunto rompe il caricamento di file; nello specifico, quello che osservo è che il parametro ValueCallback<Uri>
del metodo void openFileChooser
di WebChromeClient
è null
(o almeno, lo è sicuramente quando la Activity si ricarica dopo l’apertura del file picker), quando dovrebbe invece essere un oggetto utile su cui chiamare un’altra funzione per passare i dati del file da caricare… 💱
- https://github.com/facebook/react-native/issues/5219#issuecomment-306445205
- https://stackoverflow.com/questions/36903996/file-upload-android-4-4-webview/43444089#43444089
- https://stackoverflow.com/questions/19882331/html-file-input-in-android-webview-android-4-4-kitkat/20386368#20386368
Che cazzo e vaffanculo, però!!! A capire questa stronzata gli LLM ovviamente non hanno aiutato, ho dovuto fare ricerche con un sacco di termini solo per arrivare a queste risposte estremamente deludenti, e in tutto questo non esiste nemmeno una vera soluzione (non si può nemmeno aggiornare il coso #WebView, che all’epoca non era modulare)… Per giunta, vai a capire come mai si dice che questo problema sia di KitKat in generale, ma dei miei due dispositivi su questa versione proprio quello di Samsung ha dato problemi… mentre il telefono preso per meme no. (Oh, per me si fotta il Galaxy, se funziona sul TIM allora la app va bene!) 🦇