Il s'agit de liens de type href="". Il ne subissent aucun traitement et sont affichés tels que les voit le navigateur. Les fichiers audio, les fichiers vidéo et les fichiers images sont affichés correctement quelque soit leur format.
Pour les fichiers seuls les type texte (.txt, .csv, .xml) sont affichés correctement. Android webView ne prend pas en charge les fichiers pdf ou office (ppt, doc, docx, xls ..).
Dans ce cas les url sont récupérées et les fichiers correspondant traités dans l'application.
Cette parenthèse ne fait pas tout à fait partie des tests d'évaluation d'une application avec webview, mais permet de voir ce que l'on peut faire dans ces cas là, et aussi de consulter le code source de l'activité en charge de cette customisation .
Cas des médias type AUDIO avec traitement dans l'application.
On utilise la classe MediaPlayer dans une Activité dédiée (MediaActivity) de façon à rendre l'exemple plus compréhensif.
Note : Entre autres méthodes disponibles avec cette classe, la méthode prepare() permet de récupérer et de décoder les données multimédias. Si les données à récupérer sont lourdes ce processus peut prendre du temps. Si la méthode est appelée à partir du thread de l’interface utilisateur de l’application, cela peut entraîner un retard désagréable pour l'utilisateur. Donc, au lieu d’exécuter la méthode prepare() sur le thread de l’interface utilisateur, il est judicieux de l’exécuter sur un autre thread. Ainsi lorsque la récupération et le décodage des données média sont faits, le thread notifie le thread principal et le thread principal enchaine directement et sans attente les actions prévues. Ce processus est fait avec l’aide de la méthode prepareAsync().
Cas des médias type VIDEO avec traitement dans l'application.
On utilise l'objet VideoView et la classe MediaPlayer dans une Activité dédiée (MediaActivity).
VideoView est est un composant personnalisé qui est la combinaison de MediaPlayer et de SurfaceView(permet de dessiner ou d'afficher sur la totalité de l’écran) qui permet de lire des vidéos facilement.
En complément de l'objet VideoView, l'objet MediaController, peut être utilisé pour l'affichage des contrôles des médias (démarrage, arrêt, rembobinage, pause, réglage du volume ...)
Cas des médias type PDF avec traitement dans l'application.
On va utiliser l'implementation 'com.github.barteksc:android-pdf-viewer:2.0.3' qui propose un ensemble d'objets et en particulier "PDFView" qui avec peu de code java va nous permettre d'ouvrir un fichier PDF dans l'application, sans utiliser d'application extérieures.
Cas des médias type FICHIER. Traitement par des intentions.
On va utiliser un Intent pour demander au système Android de rechercher le composant adéquat en se basant sur les données de l'Intent (Intent implicite).
ATTENTION : Android ne prend pas en charge le rendu des fichiers .doc ou .ppt. Comme souligné précédemment on doit utiliser une intention (intent) pour informer une application tierce pour afficher ces types de documents. Pour que cela fonctionne (mais c'est aussi valable pour les autres types de fichiers) il faut que l'application ad hoc soit installée sur le téléphone mais surtout qu'elle accepte les intents. Pour le moment je ne connais pas de telles d'applications en ce qui concerne les produits office.
Pour autoriser la lecture automatique d'un média audio ou vidéo il faut donner la permissions au navigateur