三星归属地数据文件HomeLocationDB.bin和HomeLocationVersion.bin分析

三星国行的手机都是可以显示来电归属地的,自带的就是要比其他软件的节省资源,但是归属地数据就不是最新,虽然每周可以更新,但是更新出来的数据有问题,没有系统原始的准确。

归属地数据文件原始版本是存放在以下路径:

system\etc\HomeLocationDB.bin
system\etc\HomeLocationVersion.bin

这个两个文件只是软件的初始数据库。也就是你在“通话设置”--“所有通话”--“来电归属地”--“版本”里面点击“还原到默认”的数据。如果手动替换system\etc\的这两个文件,然后点击“还原到默认”也可以更新的。

真正使用的数据库(也就是通过网络更新之后的数据库)保存在/data/data/com.android.phone/下面。

所以删除这个数据库是不影响使用的。

请注意看三星的归属地调用代码,有两个文件可用:

private static final String BIN_DEFAULT_DIR = "/data/data/com.android.phone/HomeLocationDB.bin";
private static final String BIN_ORIG_DEFAULT_DIR = "/system/etc/HomeLocationDB.bin";
...

if (ois!= null)
{
ois.seek(0L);
}
else if (new File(BIN_DEFAULT_DIR).exists())
{
ois= new RandomAccessFile(BIN_DEFAULT_DIR, "r");
}
else
{
ois= new RandomAccessFile(BIN_ORIG_DEFAULT_DIR, "r");
}

意思是说当BIN_DEFAULT_DIR不存在的时候会去找BIN_ORIG_DEFAULT_DIR

具体来说流程是这样的:

默认访问的是用户文件下的内容(这个估计在第一次运行会调用系统文件,或联网自动更新数据库),在用户文件里面没有的情况下才访问etc的系统文件。

原文地址:
http://bbs.gfan.com/android-5235685-1-1.html

Related Posts