织梦CMS - 轻松建站从此开始!

罗索

当前位置: 主页>嵌入式开发>Android>

ICS原生来电归属地修改教程,5月20更新ext.jar加入数据库方法!

落鹤生 发布于 2012-09-27 08:58 点击:次 
为什么我要写这样的教材,现在网上大把归属地,智能拨号等本地方的文件可以替换.但是这些文件出自谁手从来都没人会注明作者!ICS种类繁多,比如你用AOKP的phone替换到CM,轻则来电界面出错,重则无信号FC
TAG:

为什么我要写这样的教材,现在网上大把归属地,智能拨号等本地方的文件可以替换
但是这些文件出自谁手从来都没人会注明作者!
ICS种类繁多,比如你用AOKP的phone替换到CM,轻则来电界面出错,重则无信号FC

ICS的归属地很简单,ext.jar 数据库  phone.apk 用于显示归属地
现在自己动手修改配置你的phone.apk
用于显示归属地

先提取ROM中phone.apk,再提取里面的classes.dex
使用到工具baksmali及smali
DOS命令
java -jar baksmali-1.3.jar -o abc classes.dex  abc为目录
在abc目录下得到smail文件
找到com\android\phone\CallCard.smali用Notepad++打开(或你喜欢的文本编辑类软件)
在最后添加代码 用于修改来电去电归属地显示

 
  1. .method private setGeoDescription(Lcom/android/internal/telephony/CallerInfo;)V
  2.     .locals 3
  3.     .parameter "info"
  4.  
  5.     .prologue
  6.     const/16 v2, 0x8
  7.  
  8.     .line 36
  9.     if-nez p1, :cond_1
  10.  
  11.     .line 51
  12.     :cond_0
  13.     :goto_0
  14.     return-void
  15.  
  16.     .line 38
  17.     :cond_1
  18.     iget-object v0, p0, Lcom/android/phone/CallCard;->mCallTypeLabel:Landroid/widget/TextView;
  19.  
  20.     invoke-virtual {v0}, Landroid/widget/TextView;->getVisibility()I
  21.  
  22.     move-result v0
  23.  
  24.     if-ne v0, v2, :cond_0
  25.  
  26.     .line 39
  27.     iget-object v0, p1, Lcom/android/internal/telephony/CallerInfo;->geoDescription:Ljava/lang/String;
  28.  
  29.     invoke-static {v0}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z
  30.  
  31.     move-result v0
  32.  
  33.     if-eqz v0, :cond_2
  34.  
  35.     .line 40
  36.     invoke-virtual {p0}, Lcom/android/phone/CallCard;->getContext()Landroid/content/Context;
  37.  
  38.     move-result-object v0
  39.  
  40.     iget-object v1, p1, Lcom/android/internal/telephony/CallerInfo;->phoneNumber:Ljava/lang/String;
  41.  
  42.     invoke-virtual {p1, v0, v1}, Lcom/android/internal/telephony/CallerInfo;->updateGeoDescription(Landroid/content/Context;Ljava/lang/String;)V
  43.  
  44.     .line 42
  45.     :cond_2
  46.     iget-object v0, p1, Lcom/android/internal/telephony/CallerInfo;->geoDescription:Ljava/lang/String;
  47.  
  48.     invoke-static {v0}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z
  49.  
  50.     move-result v0
  51.  
  52.     if-nez v0, :cond_0
  53.  
  54.     .line 43
  55.     iget-object v0, p0, Lcom/android/phone/CallCard;->mCallTypeLabel:Landroid/widget/TextView;
  56.  
  57.     const/4 v1, 0x0
  58.  
  59.     invoke-virtual {v0, v1}, Landroid/widget/TextView;->setVisibility(I)V
  60.  
  61.     .line 44
  62.     iget-object v0, p0, Lcom/android/phone/CallCard;->mCallTypeLabel:Landroid/widget/TextView;
  63.  
  64.     iget-object v1, p1, Lcom/android/internal/telephony/CallerInfo;->geoDescription:Ljava/lang/String;
  65.  
  66.     invoke-virtual {v0, v1}, Landroid/widget/TextView;->setText(Ljava/lang/CharSequence;)V
  67.  
  68.     .line 45
  69.     iget-object v0, p0, Lcom/android/phone/CallCard;->mCallTypeLabel:Landroid/widget/TextView;
  70.  
  71.     iget v1, p0, Lcom/android/phone/CallCard;->mTextColorCallTypeSip:I
  72.  
  73.     invoke-virtual {v0, v1}, Landroid/widget/TextView;->setTextColor(I)V
  74.  
  75.     .line 46
  76.     iget-object v0, p1, Lcom/android/internal/telephony/CallerInfo;->geoDescription:Ljava/lang/String;
  77.  
  78.     iget-object v1, p0, Lcom/android/phone/CallCard;->mPhoneNumber:Landroid/widget/TextView;
  79.  
  80.     invoke-virtual {v1}, Landroid/widget/TextView;->getText()Ljava/lang/CharSequence;
  81.  
  82.     move-result-object v1
  83.  
  84.     invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
  85.  
  86.     move-result v0
  87.  
  88.     if-eqz v0, :cond_0
  89.  
  90.     .line 47
  91.     iget-object v0, p0, Lcom/android/phone/CallCard;->mPhoneNumber:Landroid/widget/TextView;
  92.  
  93.     invoke-virtual {v0, v2}, Landroid/widget/TextView;->setVisibility(I)V
  94.  
  95.     goto :goto_0
  96. .end method

 再用Notepad++搜索功能找到下面的一行代码

invoke-direct {p0, v14, v13, v0}, Lcom/android/phone/CallCard;->updateSocialStatus(Ljava/lang/String;Landroid/graphics/drawable/Drawable;Lcom/android/internal/telephony/Call;)V

在下面添加

 
  1.         move-object/from16 v0, p1
  2.         
  3.         invoke-direct {p0, v0}, Lcom/android/phone/CallCard;->setGeoDescription(Lcom/android/internal/telephony/CallerInfo;)V

最后打包
DOS命令
java -jar smali-1.3.jar abc -o classes.dex
得到classes.dex拖到phone.apk中替换就完成了。

在ext.jar添加归属地数据库方法也是非常简单
下载附件解压得到ext.jar
再打开ext.jar/com/android/i18n/phonenumbers/geocoding/data/找到86_zh
86_zh就是归属地的数据库,把它提取出来替换到你想添加归属的ROM的ext.jar里


附件是的数据库支持运营商显示

(yearn)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/201209/16291.html]
本文出处:lidroid 作者:yearn 原文
顶一下
(1)
100%
踩一下
(0)
0%
------分隔线----------------------------
相关文章
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容