预置资源,恢复出厂设置保留
Posted Jokeyyu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了预置资源,恢复出厂设置保留相关的知识,希望对你有一定的参考价值。
说明:由于厂商要求预置自定义资源,须在Gallery显示及恢复出厂设置后仍然保留,前期想法为直接预置到data分区下,这样Gallery就可以直接读取,但是恢复出厂设置之后整个分区都会被格式化,所以这个办法行不通,要想解决这个问题,资源就必须放到一个system分区里备份,为了开放资源让应用程序能够共享,最终还得把资源复制到data(storage/emulated/0/...)分区里,所以这里就分两步走,第一是把资源预置到系统分区,然后第一个开机后再把资源复制到指定目录。
1.预置资源
可以把需要预置的资源先放置在vendor/mediatek/proprietary/custom/项目名/resource目录下,再在该目录新建一个MK文件,在前期编译的时候就可以把资源编进去
补充:大部分用户不会轻易恢复出厂设置,为了提高性能和安全,可以在编译的时候把资源也放到data分区里,这样就在第一次开机的时候不用加载数据了,可以节省开机时间和保证使用的流畅性。在device/厂商名/项目名/device.mk里加入代码
2.第一次开机复制资源到指定目录
可以在Settings模块下做一个监听开机完成广播后即开启后台服务异步加载数据流功能,为了保证只是第一次加载和重复加载,必须设置标识和检测指定目录内容情况
补充:在第一次开机后,多媒体数据库也是在接收到开机完成广播后加载数据到数据库的,由于复制资源需要一定的时间,可能出现多媒体数据库加载完成后资源还没有复制过去的情况,这样Gallery就不会显示。如有必要,可以自己发个广播更新数据库,具体如下:
private void refreshMediaDB(Context context, String filePath) {
Intent refreshIntent = new Intent(Intent.ACTION_MEDIA_MOUNTED);
refreshIntent.setData(Uri.fromFile(new File(filePath)));
context.sendBroadcast(refreshIntent);
}
以上是关于预置资源,恢复出厂设置保留的主要内容,如果未能解决你的问题,请参考以下文章