您的位置:首页 > 移动开发 > Android开发

Android 7.0中apn FOTA升级问题解决

2017-07-24 14:53 281 查看
最近在做一个海外项目,项目已经封板,但是客户反馈手机还是存在不能上网的情况,通过排查发现我们的apn配置有问题,我们修改后提交,
编软件制作升级包给客户,但是用户通过升级包升级,这个无法上网的问题还是无法解决,因为Fota升级后手机不会重新加载apns数据库,
客户不可能把已发行的手机召集回来重新刷机,这是不现实的。那有什么办法可以解决这个问题呢?答案就是重新加载数据库。

下面我们来讲述一下如何让Android 7.0中apn FOTA升级后重新加载数据库。

第一步:修改你做了客制化的apn.xml,一般路径为…/device/mediatek/common/apns-conf.xml。


<apns version="8">   ------> <apns version="9"> 版本号+1


第二步:修改framework中的apns.xml 路径一般为/frameworks/base/core/res/res/xml/apns.xml,如果有做客制化则需要修改客制化中的该文件。


<apns version="8">   ------> <apns version="9"> 版本号+1


第三步:修改TelephonyProvider.java(packages/providers/TelephonyProvider/src/com
/android/providers/telephony/TelephonyProvider.java)中onUpgrade方法。


public class TelephonyProvider extends ContentProvider
{
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)   {
............省略部分代码.........
//xiaoxiansen add  begin
if(oldVersion < newVersion){
log("onUpgrade for apn delete carriers table & initDatabase");
upgradeToVersionDB(db);
}
//xiaoxiansen add  end
}
//删除掉之前的数据库,重新加载数据库
//xiaoxiansen add  begin
private void upgradeToVersionDB(SQLiteDatabase db){
log("upgradeToVersion9");
try {
db.delete(CARRIERS_TABLE, null, null);
} catch (SQLException e) {
loge("got exception when deleting to restore: " + e);
}
initDatabase(db);
}
//xiaoxiansen add  end
}


通过上面的修改就能解决apn Fota升级问题,亲自测试有效,这里mark一下,方便后面总结。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐