Class AssetURLConnection

  • public class AssetURLConnection
    extends PiggybackURLConnection<AssetURLContext>
    See base class PiggybackURLConnection for motivation.

    asset resource location protocol connection.

    See AssetURLContext.resolve(String) how resources are being resolved.


    Assuming the plain asset entry test/lala.txt is being resolved by a class test.LaLaTest, ie. using the asset aware ClassLoader, one would use the following asset aware filesystem layout:
    The above maybe on a plain filesystem, or within a JAR or an APK file, e.g. jogamp.test.apk. The above would result in the following possible URLs reflecting the plain and resolved state of the asset URL:
      0 Entry          test/lala.txt
      1 Plain    asset:test/lala.txt
      2 Resolved asset:jar:file:/data/app/jogamp.test.apk!/assets/test/lala.txt

    The sub protocol URL of the resolved asset

      3 Sub-URL        jar:file:/data/app/jogamp.test.apk!/assets/test/lala.txt
    can be retrieved using PiggybackURLConnection.getSubProtocol().

    In all above cases, the asset entry is test/lala.txt, which can be retrieved via getEntryName().

    General Implementation Notes:

    An asset URL is resolved using AssetURLContext.getClassLoader().getResource(String), hence the only requirement for an implementation is to have an asset aware ClassLoader as described in AssetURLContext.getClassLoader().


    Since the asset protocol is currently not being implemented on all platform with an appropriate ClassLoader, a user shall not create the asset URL manually.

    Android Implementation Notes:

    The Android ClassLoader AssetDexClassLoader resolves the resource as an asset URL in it's ClassLoader.findResource(String) implementation.

    Currently we attach our asset URLStreamHandlerFactory to allow URL to handle asset URLs via our asset URLStreamHandler implementation.