为什么我要写这样的教材,现在网上大把归属地,智能拨号等本地方的文件可以替换
但是这些文件出自谁手从来都没人会注明作者!
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++打开(或你喜欢的文本编辑类软件)
在最后添加代码 用于修改来电去电归属地显示
- .method private setGeoDescription(Lcom/android/internal/telephony/CallerInfo;)V
- .locals 3
- .parameter "info"
-
- .prologue
- const/16 v2, 0x8
-
- .line 36
- if-nez p1, :cond_1
-
- .line 51
- :cond_0
- :goto_0
- return-void
-
- .line 38
- :cond_1
- iget-object v0, p0, Lcom/android/phone/CallCard;->mCallTypeLabel:Landroid/widget/TextView;
-
- invoke-virtual {v0}, Landroid/widget/TextView;->getVisibility()I
-
- move-result v0
-
- if-ne v0, v2, :cond_0
-
- .line 39
- iget-object v0, p1, Lcom/android/internal/telephony/CallerInfo;->geoDescription:Ljava/lang/String;
-
- invoke-static {v0}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z
-
- move-result v0
-
- if-eqz v0, :cond_2
-
- .line 40
- invoke-virtual {p0}, Lcom/android/phone/CallCard;->getContext()Landroid/content/Context;
-
- move-result-object v0
-
- iget-object v1, p1, Lcom/android/internal/telephony/CallerInfo;->phoneNumber:Ljava/lang/String;
-
- invoke-virtual {p1, v0, v1}, Lcom/android/internal/telephony/CallerInfo;->updateGeoDescription(Landroid/content/Context;Ljava/lang/String;)V
-
- .line 42
- :cond_2
- iget-object v0, p1, Lcom/android/internal/telephony/CallerInfo;->geoDescription:Ljava/lang/String;
-
- invoke-static {v0}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z
-
- move-result v0
-
- if-nez v0, :cond_0
-
- .line 43
- iget-object v0, p0, Lcom/android/phone/CallCard;->mCallTypeLabel:Landroid/widget/TextView;
-
- const/4 v1, 0x0
-
- invoke-virtual {v0, v1}, Landroid/widget/TextView;->setVisibility(I)V
-
- .line 44
- iget-object v0, p0, Lcom/android/phone/CallCard;->mCallTypeLabel:Landroid/widget/TextView;
-
- iget-object v1, p1, Lcom/android/internal/telephony/CallerInfo;->geoDescription:Ljava/lang/String;
-
- invoke-virtual {v0, v1}, Landroid/widget/TextView;->setText(Ljava/lang/CharSequence;)V
-
- .line 45
- iget-object v0, p0, Lcom/android/phone/CallCard;->mCallTypeLabel:Landroid/widget/TextView;
-
- iget v1, p0, Lcom/android/phone/CallCard;->mTextColorCallTypeSip:I
-
- invoke-virtual {v0, v1}, Landroid/widget/TextView;->setTextColor(I)V
-
- .line 46
- iget-object v0, p1, Lcom/android/internal/telephony/CallerInfo;->geoDescription:Ljava/lang/String;
-
- iget-object v1, p0, Lcom/android/phone/CallCard;->mPhoneNumber:Landroid/widget/TextView;
-
- invoke-virtual {v1}, Landroid/widget/TextView;->getText()Ljava/lang/CharSequence;
-
- move-result-object v1
-
- invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
-
- move-result v0
-
- if-eqz v0, :cond_0
-
- .line 47
- iget-object v0, p0, Lcom/android/phone/CallCard;->mPhoneNumber:Landroid/widget/TextView;
-
- invoke-virtual {v0, v2}, Landroid/widget/TextView;->setVisibility(I)V
-
- goto :goto_0
- .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
在下面添加
- move-object/from16 v0, p1
-
- 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) |