【Android】资源系列(二) -- 文件原样保留的资源assets和res/raw文件夹
这两个文件夹都能够存放文件。而在打包的时候被原样保留。
那用这两个文件夹可以做什么事呢?
1、放一个apk,要用的时候调出来。免得去下载server下载。
2、放一个sql,当app数据库非常大的时候。这能够省事非常多。
3、放一段视频、录音等,作为开机启动的介绍。是不是非常炫。。。。。
那问什么要弄两个文件夹呢。
。。
。
事实上assets翻译为"资源",raw翻译为"原始的",而且在res文件夹下。res故名思议,它以下放的就是资源,还有非常多呢。比如动画、图片、xml、ids、values 等等。。
。
所以通俗的理解就是
1、assets是为apk的外部资源准备的,能够理解为外挂文件夹。它能够有文件结构。
2、raw属于apk的自有资源。而且会在R文件里生成它的ID。
明确了它们存在的理由,那也就知道訪问它们的方式是不一样的。
assest :利用AssetManager来获取资源。
getAssets()定义在Context中,用于获取AssetManager。至于AssetManager,它以下的list,open等方法就是读取文件的咯。
raw:它会在R中生成ID,那获取就更加easy了,getResources().openRawResource() 用于获取输入流。
这里聊下怎样将apk放在raw中,而且在程序中安装。
1、拷贝须要放的apk放在raw文件夹下,改名为tmp.apk
2、在须要安装的地方调用安装方法。ps(用uri的"android.resource"怎么都不行,求高人指点。用apache-common-io包提供的简洁方法更迅速)
File file = new File(Environment.getExternalStorageDirectory().getAbsolutePath()+"/app_tmp.apk");
try {
FileUtils.copyInputStreamToFile(getResources().openRawResource(R.raw.tmp), file);
} catch (NotFoundException e) {
} catch (IOException e) {
}
Util.install(AddDeviceActivity.this, Uri.fromFile(file));
/**
* 安装一个app
* @param context
* @param filePath 须要安装的文件路径
* @return
*/
public static void install(Context context, Uri uri) {
Intent i = new Intent(Intent.ACTION_VIEW);
i.setDataAndType(uri, "application/vnd.android.package-archive");
// i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
}
3、原理是不是一看就懂啊。是的,将输入流输出到SD卡上并生成一个文件。将file传入uri就能够安装了。
【Android】资源系列(二) -- 文件原样保留的资源assets和res/raw文件夹的更多相关文章
- AssetsUtils【读取assets、res/raw、./data/data/包名/目录下的文件】
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 封装了以下功能: 1.读取assets目录下的资源html.文件.图片,将文件复制到SD卡目录中: 2.读取res/raw目录下的文 ...
- Android反编译(二)之反编译XML资源文件
Android反编译(二) 之反编译XML资源文件 [目录] 1.工具 2.反编译步骤 3.重新编译APK 4.实例 5.装X技巧 6.学习总结 1.工具 1).反编译工具 apktool http ...
- ANDROID Porting系列二、配置一个新产品
ANDROID Porting系列二.配置一个新产品 详细说明 下面的步骤描述了如何配置新的移动设备和产品的makefile运行android. 1. 目录//vendor/创建一个公 ...
- android资源目录---assets与res/raw区别
android资源目录---assets与res/raw的不同 Android 2011-05-24 14:40:21 阅读20 评论0 字号:大中小 订阅 assets:用于存放需要打包到应用程 ...
- assets与res/raw资源目录的区别
1.简介 assets和res/raw工程目录下都可以放一些小于1M的文件(2.3版本以前要求,否则将不能读出数据.),这些文件将被原样打包到APK中应用使用. 2.不同 assets目录下的文件将原 ...
- Android画图系列(二)——自己定义View绘制基本图形
这个系列主要是介绍下Android自己定义View和Android画图机制.自己能力有限.假设在介绍过程中有什么错误.欢迎指正 前言 在上一篇Android画图系列(一)--自己定义View基础中我们 ...
- 【转】android资源目录---assets与res/raw区别
blog.csdn.net/hshm20517/article/details/6461890 assets:用于存放需要打包到应用程序的静态文件,以便部署到设备中.与res/raw不同点在于,ASS ...
- res/raw文件的存放和读取
通常,如果Android开发者有些文件比如音频,视频,.html,.mp3等等这些文件不希望编译器编译而保持原始原貌打包进apk文件(这在游戏开发中很常见和普遍,如游戏用到的游戏音乐.图等资源),那么 ...
- android assets与 assets与res/raw 的相同、不同点
1.获取资源的输入流 资源文件 sample.txt 位于 $PROJECT_HOME/assets/ 目录下,可以在 Activity 中通过 //也可以放置图片等资源,获取方式相同 Conte ...
随机推荐
- Android开发进度02
1,今日:目标:创建第一个android项目,创建android虚拟机 2,昨天:完成eclipseandroid环境的搭建 3,收获:修改.xml文件,将出错地方解决 4,问题:版本问题
- Java 多线程均匀处理同一个List中的数据
需求:使用多线程来处理同一个List中的数据,希望每个线程处理的数量是均匀的 事例代码如下: public class Test { static class HandleThread extends ...
- mysql存储小数
线下不知道什么版本的古董了,经本人亲测,varchar类型的数据,可以直接执行mysql的sum函数. ________________________________________________ ...
- leetCode(24):Binary Search Tree Iterator
Implement an iterator over a binary search tree (BST). Your iterator will be initialized with the ro ...
- sizeof()函数的使用——————【Badboy】
1.sizeof的使用:sizeof操作符以字节形式给出了其操作数的存储大小. sizeof操作符不能用于函数类型,不全然类型或位字段.不全然类型指具有未知存储大小的数据类型,如未知存储大小的数组类型 ...
- mysql int(m)与int(m)的差别
预计大多数開始接触mysql的朋友们都会有这个问题:int(M) 里面的数值究竟是什么意思? 依据相关资料总结了下: int(M) zerofill,加上zerofill后M才表现出有点点效果,比方 ...
- php,二维数组的输出出现了问题,提示:Notice: Array to string conversion
<?php $arr=array(array("111","222","333"),array("444",&qu ...
- bzoj5157: [Tjoi2014]上升子序列(树状数组LIS)
5157: [Tjoi2014]上升子序列 题目:传送门 题解: 学一下nlogn的树状数组求最长上生子序列就ok(%爆大佬) 离散化之后,用一个数组记录一下,直接树状数组做 吐槽:妈耶...一开始不 ...
- bzoj1293: [SCOI2009]生日礼物(stl堆)
1293: [SCOI2009]生日礼物 题目:传送门 题解: 据说这道题乱搞随便就水过了 本蒟蒻想到了一个用堆的水法(还专门学了学queue): 如果把每一种颜色的下一个位置都记录一下的话,一开始就 ...
- zzulioj--1609--求和(数学规律)
1609: 求和 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 209 Solved: 67 SubmitStatusWeb Board De ...