1.下载XposedBridgeApi-54.jar,将它放在libs目录下面,并右击将jar包添加到构建路径

2.AndroidMenifest.xml文件里添加三个meta-data数据

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <!-- Xposed -->
    <meta-data
        android:name="xposedmodule"
        android:value="true"/>

    <meta-data
        android:name="xposedminversion"
        android:value="54"/>

    <meta-data
        android:name="xposeddescription"
        android:value="修改设备IMEI"
        />

</application>

3.通过EditText将设备的IMEI显示出来,将修改的数据保存到SharedPreference中

public class MainActivity extends AppCompatActivity{private TelephonyManager phone;

    //IMEI修改输入框
    private EditText imeitx;

    private Button btnSave;
    @Override
    protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        phone = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);

        imeitx = (EditText) findViewById(R.id.et_imei);

        btnSave = (Button) findViewById(R.id.btn_save);

        //点击按钮,将数据保存到SharedPreference中
        btnSave.setOnClickListener(new View.OnClickListener() {@Override
            public void onClick(View view) {saveData();
            }});
    }/**
     * 将数据展示在EditText里面
     */
    @Override
    protected void onResume() {super.onResume();
        //读取当前设备的IMEI
        imeitx.setText(phone.getDeviceId());
    }/**
     * 使用Sharedpreferences保存数据
     */
    private void saveData(){try {SharedPreferences sh = this.getSharedPreferences("prefs",Context.MODE_WORLD_READABLE);
            SharedPreferences.Editor pre = sh.edit();
            pre.putString("imei",imeitx.getText().toString());
            pre.apply();
            Toast.makeText(MainActivity.this, "修改成功", Toast.LENGTH_SHORT).show();
        }catch (Throwable e){e.printStackTrace();
        }}
}

4.创建一个类MainHook实现IXposedHookLoadPackage,使用XSharedPreference获得保存的数据。 XposedHelpers注入监听TelephonyManager#getDeviceId方法

public class MainHook implements IXposedHookLoadPackage{@Override
    public void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) throws Throwable{//获得Sharedpreference保存的数据
        XSharedPreferences pre = new XSharedPreferences(this.getClass().getPackage().getName(), "prefs");
        HookMethod(TelephonyManager.class, "getDeviceId",
                pre.getString("imei", null));
        String imei = pre.getString("imei", null);
        Log.d("pre", "handleLoadPackage() returned: " +imei );
    }private void HookMethod(final Class cl, final String method,
                            final String result){try
        {XposedHelpers.findAndHookMethod(cl, method,new Object[] { new XC_MethodHook(){protected void afterHookedMethod(MethodHookParam param)throws Throwable{param.setResult(result);
                        }} });
        } catch (Throwable e){}}
}

5.在main文件夹中创建assets文件,再创建xposed_init文件,指定 Xposed Hook入口类(整个包名加类名)

6.到这里基本就告一段落了,但是有时候你们会发现修改了从文本框里的IMEI,但手机上却没有改变,这是因为你需要软重启一下你的手机,当然!前提你要下载Xposed Installer。

注:在android sdk build-tools 21.0.1下可能遇到由于assets产生Command-line Error -1073741819的问题,升级一下android sdk build-tools就行了。

Xposed模块开发:修改设备IMEI相关推荐

  1. Xposed模块开发指南

    1.Xposed框架是什么? Xposed框架是一款开源框架,其功能是可以在不修改APK的情况下影响程序运行(修改系统)的框架服务,基于它可以制作出许多功能强大的模块,且在功能不冲突的情况下同时运行. ...

  2. Xposed模块开发教程(一) 了解并使用Xposed

    系列教程: Xposed模块开发教程(一) 了解并使用Xposed http://blog.csdn.net/u014418171/article/details/52910768 Xposed模块开 ...

  3. Xposed 模块开发入门

    Xposed模块开发入门 阅读本文之前,你应该准备好以下事项: 安装 Android Studio,并完成配置 掌握 Xposed 的安装和使用方法 拥有阅读 Java 代码的能力 阅读本文之后你将掌 ...

  4. (译)Xposed模块开发教程

    (译)Xposed模块开发教程 原文地址.这是开发者所写的,可以说是官方开发指南.文章讲述了Xposed的原理,以及怎么开发Xposed框架的模块.头一次翻译技术文档,有错误的话请多包涵. 好了,你想 ...

  5. Xposed 模块开发笔记

    相关文章: Xposed 模块开发入门 最近使用 Xposed 过程中遇到一些问题以及常识, 所以做下记录, 方便之后再次使用 MyLog 为自定义的日志输出类, 可以使用 XposedBridge. ...

  6. AndriodStudio 开发环境下实现Xposed模块开发入门。Xposed框架模块编写教程

    前言: Xposed框架是一款开源框架,其功能是可以在不修改APK的情况下影响程序运行(修改系统)的框架服务,基于它可以制作出许多功能强大的模块,且在功能不冲突的情况下同时运作.Xposed 就好比是 ...

  7. Xposed模块开发教程整理

    Xposed模块开发教程 Xposed官网 Xposed官方文档 Xposed框架介绍 了解和使用Android神器Xposed框架 Xposed模块开发 Xposed模块开发入门 在手机状态栏增加显 ...

  8. Xposed模块开发入门,实现修改微信钱包显示的余额

    一.什么是Xposed框架 Xposed框架是一款可以在不修改APK的情况下影响程序运行(修改系统)的框架服务,基于它可以制作出许多功能强大的模块,且在功能不冲突的情况下同时运作. 二.为你的安卓设备 ...

  9. Xposed模块开发

      最近突然看到了Xposed这一项技术,觉得蛮有意思的,现在的蚂蚁森林自动收能量以及微信自动回复等都是通过这个来实现的,因此记录一下Xposed的基本实现. Xposed框架介绍 概述   Xpos ...

最新文章

  1. 高校促进“智慧城市”信息化建设策略研究
  2. java 多线程经典例子——生产者与消费者的问题
  3. Python十大常用文件操作
  4. java实现套接字网络编程_Java网络编程(一)Socket套接字
  5. 综合实践活动信息技术小学版第三册电子课本_峄城区初中信息技术、综合实践活动学科教师素养提升培训圆满落幕...
  6. java高效遍历匹配,使用cypher或遍历api仅匹配路径极端的单个节点
  7. xml-rpc 以及 xml-rpc 在asp.net中的实现
  8. 怎么提交 checkbox 表单_8. html form表单
  9. 完美日记:保障电商大促活动平稳运行
  10. 日期天数转换c语言程序,C语言 ---计算连个日期之间的天数转换
  11. Mac使用Homebrew安装Kafka
  12. python求最大公因数函数_面试试讲 | 17学员音频示范《最大公约数》+教案+试讲稿...
  13. linux,内核(kernel)对AD9371配置流程。
  14. 全职高手24职业及技能(Full time master)
  15. 免费域名邮箱如何申请?怎么给国外发邮件?
  16. 微信添加好友、加群的限制
  17. 拼接图像亮度均匀调整_浅析液晶拼接屏为什么适合应用于安防显示
  18. 闲谈摩根 --兼答关于JP摩根和摩根斯坦利的渊源和区别,其他的摩根八卦
  19. javascript组合模式创建对象
  20. JDK各个版本官方下载

热门文章

  1. 趣味闹钟,社区化讨论
  2. .net core 压力测试 web性能工具
  3. CURSOR 游标的使用
  4. Qt实现中国象棋:(七)悔棋
  5. Java 编码规范15(工程结构)
  6. 微信小程序支付之多次支付
  7. 管理学30大经典理论
  8. tcas计算机历史故障,TCAS及ATC相关故障处理的讨论.doc
  9. 过年回家,程序员最怕的 5 件事
  10. 计算机技术标评标标准及打分选项,技术标评标评分表.doc