文章目录
0 前置知识点
- 每个app安装后,会在/data/data/<apk package name>/路径下生成一个安装目录,这个位置对于当前apk来说是可以读写的,不过对于没有root的设备,用户看不到
- app安装后,原apk安装包,会在/data/app/*.apk有备份
- app删除时,其安装目录和相关备份都会被删除
1 android有两种资源文件:
- res目录下的、可编译的资源文件,可以通过R.xxx.id访问
- assets目录中的、不能被编译的、原生的资源文件。存在于apk中。因为apk安装之后会放在/data/app/**.apk目录下,以apk形式存在,asset被绑定在apk里,并不会解压到/data/data/YourApp目录下去,所以我们无法直接获取到assets的绝对路径,因为它们根本就没有。
那么我们该怎么访问assets中的资源呢?
2 通过AssetManager类访问asset中的资源
2.1 概述
提供对应用程序的原始资源文件进行访问;这个类提供了一个低级别的API,它允许你以简单的字节流的形式打开和读取和应用程序绑定在一起的原始资源文件。通过getAssets()方法获取AssetManager对象。
2.2 常用方法
Public Methods | |
---|---|
final String[] | list(String path) 返回指定路径下的所有文件及目录名。 |
final InputStream | open(String fileName) 使用 ACCESS_STREAMING模式打开assets下的指定文件。 |
final InputStream | open(String fileName, int accessMode) 使用显示的访问模式打开assets下的指定文件. |
2.3 应用实例
1.访问assets目录下的资源文件:
返回的是一个InputSteam类型的字节流,这里的filename必须是文件比如(aa.txt;img/semll.jpg),而不能是文件夹。
AssetManager.open(String filename)
2.获取assets的文件及目录名:
获取assets目录下的所有文件及目录名,content(当前的上下文如Activity,Service等ContextWrapper的子类的都可以)
String fileNames[] =context.getAssets()