【Android】资源系列(二) -- 文件原样保留的资源assets和res/raw文件夹
2023-09-11 14:14:10 时间
这两个文件夹都能够存放文件。而在打包的时候被原样保留。
那用这两个文件夹可以做什么事呢?
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 高仿微信(QQ)滑动弹出编辑、删除菜单效果,增加下拉刷新功能
- Android Studio(十二):打包多个发布渠道的apk文件
- Android开发之旅:组件生命周期(一)
- Android开发学习---使用Intelij idea 13.1 进行android 开发
- Android开发学习---android下的数据持久化,保存数据到rom文件,android_data目录下文件访问的权限控制
- 如何在使用eclipse的情况下,清理android项目中的冗余class文件和资源文件以及冗余图片
- Android学习---SQLite数据库的增删改查和事务(transaction)调用
- Eclipse开发Android程序如何在手机上运行
- android xml文件中出现如下提醒:This tag and its children can be replaced by one <TextView/> and a compound drawable
- Android版OpenCV图像处理技术亲自验证[四]之直方图的咆哮
- Android中new Canvas(Bitmap)引发的对Canvas和Bitmap关系的疑问
- Android驱动入门系列
- Android源码 在framework中加入一张图片资源,获取不到资源文件
- 【Android笔记02】Android目录结构及相关文件介绍
- Android 弹窗
- Android源码中com.android.support依赖迁移到AndroidX库
- Android 12.0 SystemUI状态栏屏蔽掉通知栏不显示通知
- Android 多线程读写文件
- Android AlarmManager闹钟的使用
- 【Android Gradle 插件】组件化中的 Gradle 构建脚本实现 ⑤ ( 优化 Gradle 构建脚本 | 构建脚本结构 | 闭包定义及用法 | 依赖配置 | android 块配置 )
- Android - 文件读写操作 总结
- Android lsof查看已打开文件(七十八)
- Android培训班(57)Dalvik虚拟机运行ZygoteInit类
- Android 11.0 Launcher3 folder文件夹文件居中显示的定制