定制android ROM禁止SIM卡状态改变系统弹出提示框

来源:互联网 发布:js修改div id 编辑:程序博客网 时间:2024/05/16 03:16

按上一篇文章,搭建可修改android 系统的环境

http://blog.csdn.net/karts/article/details/64124098


SIM卡状态改变系统弹出提示框,是在 Keyguard 这个apk里面进行的。

1、copy设备的 /system 目录到本机。

2、使用 apktool,对所有apk进行 反编译,主要获取 strings.xml。

3、然后在xml查找 “SIM card is unplugged”。

4、发现<string name="lockscreen_missing_sim_dialog_message">SIM card is unplugged. Please make sure your SIM card is properly plugged in.</string>

在Keyguard apk里面, 那初步判断,这个功能是在 该apk实现。

5、接着在 smali 文件里查找 lockscreen_missing_sim_dialog_message

.field public static final lockscreen_missing_sim_dialog_message:I = 0x7f05002f

6、接着看看 0x7f05002f (2131034159十进制,在class文件查看java源码的时候,会是10进制)在 smali 哪里使用, 

如果smali 看得比较麻烦,用dex2jar,得到class,然后用jd-gui 查看java源码,对照着smali 看。

7、发现是在 KeyguardDialogManager 里面的  private void handleSIMCardChanged() 弹出提示框的。

private void handleSIMCardChanged()
  {

...........
    if ((SIM_DETECT_REMOVE.equals(str)) && (i == 0))
    {
      localBuilder.setCancelable(false);
      localBuilder.setTitle(17039380);
      localBuilder.setIcon(17301543);
      localBuilder.setMessage(2131034159);
      localObject = this.mContext.getResources().getString(2131034159);
      localBuilder.setMessage(this.mIOperatorSIMString.getOperatorSIMString((String)localObject, -1, IOperatorSIMString.SIMChangedTag.UIMSIM, this.mContext));
      localBuilder.setPositiveButton(17039370, null);
      this.mPromptView = null;
    }

里面的 2131034159,就是提示框的文本了。

8、修改 smali 文件,让函数直接返回,那就不会弹提示框了。

.method private handleSIMCardChanged()V
........

    const/4 v9, 0x0

    return-void


然后重新编译,签名apk,放进设备,大功告成!


0 0
原创粉丝点击