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

按上一篇文章,搭建可修改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、发现SIM card is unplugged. Please make sure your SIM card is properly plugged in.

在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,放进设备,大功告成!


你可能感兴趣的:(定制android ROM禁止SIM卡状态改变系统弹出提示框)