Android Tutorials - Herong's Tutorial Examples - v3.05, by Herong Yang
Web Archive File - XML File of Base64 Encoded Data
This section provides a tutorial example on how to view contents of a Web archive file, which is really an XML file with Base64 encoded data.
In previous tutorials I use able to build my own Web browser, AndroidWeb, to visit Web sites and save page contents into Web archive files. In this tutorial, I want to spend some time to explore those Web archive files.
First copy AndroidWeb "files" folder from the emulator to my Windows file system:
C:\herong>\local\android-sdk-windows\platform-tools\adb pull /data/data/com.herongyang.web/files .\files pull: building file list... pull: /data/data/com.herongyang.web/files/Activity.log -> .\files/Activity.log pull: /data/data/com.herongyang.web/files/1323772666133.xml -> .\files/1335017266133.xml pull: /data/data/com.herongyang.web/files/1323772679558.xml -> .\files/1335017279558.xml pull: /data/data/com.herongyang.web/files/1323772686866.xml -> .\files/1335017286866.xml 4 files pulled. 0 files skipped.
I have 3 Web archive .xml files, because I visited 3 Web pages in the previous tutorial:
Open 1323772666133.xml in a Web browser, I see this XML file structure:
<?xml version="1.0" ?> <Archive> <mainResource> <ArchiveResource> <url>aHR0cDovL3d3dy5nb29nbGUuY29tLw==</url> <mimeType>dGV4dC9odG1s</mimeType> <textEncoding>dXRmLTg=</textEncoding> <frameName /> <data>PCFkb2N0eXBlIGh0bWw+PGh0bWwgbWFuaWZlc3Q9Imh0dHA6Ly...</data> </ArchiveResource> </mainResource> <subresources> <ArchiveResource> <url>ZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5T...</url> <mimeType>aW1hZ2UvcG5n</mimeType> <textEncoding>VVMtQVNDSUk=</textEncoding> <frameName /> <data>iVBORw0KGgoAAAANSUhEUgAAAFQAAABUCAYAAAAcaxDBAAAABH...</data> </ArchiveResource> <ArchiveResource> <url>ZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5T...</url> <mimeType>aW1hZ2UvcG5n</mimeType> <textEncoding>VVMtQVNDSUk=</textEncoding> <frameName /> <data>iVBORw0KGgoAAAANSUhEUgAAAFQAAABUCAYAAAAcaxDBAAAABH...</data> </ArchiveResource> <ArchiveResource> <url>ZGF0YTppbWFnZS9naWY7YmFzZTY0LFIwbEdPRGxoR0FBZUFLSUhB...</url> <mimeType>aW1hZ2UvZ2lm</mimeType> <textEncoding>VVMtQVNDSUk=</textEncoding> <frameName /> <data>R0lGODlhGAAeAKIHAOvr69DQ0N3d3b+/v8DAwP////Pz8////y...</data> </ArchiveResource> <ArchiveResource> <url>ZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5T...</url> <mimeType>aW1hZ2UvcG5n</mimeType> <textEncoding>VVMtQVNDSUk=</textEncoding> <frameName /> <data>iVBORw0KGgoAAAANSUhEUgAAAFQAAABUCAYAAAAcaxDBAAAABH...</data> </ArchiveResource> <ArchiveResource> <url>ZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5T...</url> <mimeType>aW1hZ2UvcG5n</mimeType> <textEncoding>VVMtQVNDSUk=</textEncoding> <frameName /> <data>iVBORw0KGgoAAAANSUhEUgAAACYAAAAmCAYAAACoPemuAAAAAX...</data> </ArchiveResource> <ArchiveResource> <url>ZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5T...</url> <mimeType>aW1hZ2UvcG5n</mimeType> <textEncoding>VVMtQVNDSUk=</textEncoding> <frameName /> <data>iVBORw0KGgoAAAANSUhEUgAAAFQAAABUCAYAAAAcaxDBAAAABH...</data> </ArchiveResource> <ArchiveResource> <url>ZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5T...</url> <mimeType>aW1hZ2UvcG5n</mimeType> <textEncoding>VVMtQVNDSUk=</textEncoding> <frameName /> <data>iVBORw0KGgoAAAANSUhEUgAAAFQAAABUCAYAAAAcaxDBAAAABH...</data> </ArchiveResource> <ArchiveResource> <url>ZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5T...</url> <mimeType>aW1hZ2UvcG5n</mimeType> <textEncoding>VVMtQVNDSUk=</textEncoding> <frameName /> <data>iVBORw0KGgoAAAANSUhEUgAAAFQAAABUCAYAAAAcaxDBAAAABH...</data> </ArchiveResource> <ArchiveResource> <url>ZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5T...</url> <mimeType>aW1hZ2UvcG5n</mimeType> <textEncoding>VVMtQVNDSUk=</textEncoding> <frameName /> <data>iVBORw0KGgoAAAANSUhEUgAAAFQAAABUCAYAAAAcaxDBAAAABH...</data> </ArchiveResource> <ArchiveResource> <url>ZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5T...</url> <mimeType>aW1hZ2UvcG5n</mimeType> <textEncoding>VVMtQVNDSUk=</textEncoding> <frameName /> <data>iVBORw0KGgoAAAANSUhEUgAAAFQAAABUCAYAAAAcaxDBAAAABH...</data> </ArchiveResource> <ArchiveResource> <url>ZGF0YTppbWFnZS9wbmc7YmFzZTY0LG...</url> <mimeType>aW1hZ2UvcG5n</mimeType> <textEncoding>VVMtQVNDSUk=</textEncoding> <frameName /> <data>iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAADIm...</data> </ArchiveResource> <ArchiveResource> <url>aHR0cDovL3d3dy5nb29nbGUuY29tL2ltYWdlcy9zcnByL2xvZ28z...</url> <mimeType>aW1hZ2UvcG5n</mimeType> <textEncoding /> <frameName /> <data>iVBORw0KGgoAAAANSUhEUgAAARMAAABfCAMAAAD8mtMpAAAC/V...</data> </ArchiveResource> </subresources> <subframes> <Archive> <mainResource> <ArchiveResource> <url>YWJvdXQ6Ymxhbms=</url> <mimeType>dGV4dC9odG1s</mimeType> <textEncoding /> <frameName>d2dqZg==</frameName> <data /> </ArchiveResource> </mainResource> <subresources /> <subframes /> </Archive> </subframes> </Archive>
This tells me that:
Table of Contents
Installing JDK 1.8 on Windows System
Installation of Android SDK R24 and Emulator
Installing Apache Ant 1.9 on Windows System
Developing First Android Application - HelloAndroid
Android Application Package (APK) Files
Android Debug Bridge (adb) Tool
AboutAndroid - Application to Retrieve System Information
android.app.Activity Class and Activity Lifecycle
View Objects and Layout Resource Files
Using "adb logcat" Command for Debugging
Build Process and Package File Content
►Building Your Own Web Browser
android.webkit.WebView - Web Browser Base Class
AndroidWeb - My Own Web Browser
WebViewClient Subclass - Content Rendering Callbacks
saveWebArchive() Method - Saving Web Archive Files
►Web Archive File - XML File of Base64 Encoded Data
Samsung Galaxy Tab 3 Mini Tablet
USB Debugging Applications on Samsung Tablet
USB Debugging Applications on LG-V905R Tablet