移植原理基于5.X时代DialerBox及GravityBox for 8.1.1

感谢waywell

DialerBox源码地址:https://github.com/waynell/DialerBox

感谢C3C076

GravityBox8.1源码地址:https://github.com/GravityBox/GravityBox/tree/oreo

编译平台macOS 10.13.4,使用IDE Andriod Studio 2.3

一、分析DialerBox源码,分析实现原理

XposedHelpers.findAndHookMethod("com.android.dialer.dial.DialNameMatcher", classLoader,"matchesCombination", String.class, String.class, ArrayList.class, new XC_MethodHook() 
XposedHelpers.findAndHookMethod("com.android.dialer.dial.SmartDialPrefix", classLoader,"generateNamePrefixes", String.class, new XC_MethodHook() 
调用Xposed的findandhookmethod对

com.android.dialer.dial.DialNameMatcher.matchedCombination
com.android.dialer.dial.SmartDialPrefix.generateNamePrefixes
两个类进行了hook操作,将传入参数的displayname,调用安卓系统的HanziToPinyin类实现联系人中文汉字转成拼音,从而进行T9识别(安卓系统原生支持英文T9识别)

二、具体实现

1.在AEX5.4(android 8.1)的src中,java路径已经发生改变,首先修正java类路径

com.android.dialer.dial.DialNameMatcher ->
com.android.dialer.smartdial.DialNameMatcher
com.android.dialer.dial.SmartDialPrefix.generateNamePrefixes ->
com.android.dialer.smartdial.SmartDialPrefix

2.DialerBox调用HanziToPinyin测试在AEX5.4中报错,替代采用jpinyin1.1.6实现转换,在bulid.gradle中添加

compile files('ext/jpinyin-1.1.6.jar')

3.插入修改后的函数

final String name = (String) param.args[0];if (name == null) {return;}param.args[0] = convertToPinyinString(name," ",WITHOUT_TONE);

对以上两个方法进行hook,

在mi 5s(AEX5.4)测试成功,

同时对layout进行修改,添加相应设置项

T9中文拨号功能完美实现

安卓8.1 AEX5.4 Xposed框架T9拨号移植相关推荐

  1. 安卓虚拟机_一个手机变两个!安卓机上的安卓虚拟机,自带Xposed框架!

    手机技巧108式每天分享好玩实用的APP软件.和手机技巧资讯,喜欢玩手机的朋友记得关注我! 今天给大家分享的是一款安卓虚拟机模拟器,比较特别的是它是在安卓手机上运行的安卓虚拟机. 有点像双开软件的意思 ...

  2. 安卓8.0以上系统如何没root激活xposed框架的步骤

    在非常多企业的引流,或业务操作中,理论上需要使用安卓的黑高科技术XPOSED框架,这段时间,我们企业买来了一批新的安卓8.0以上系统,理论上都是基于7.0以上系统版本,理论上不能够获得root的su超 ...

  3. 华为9.0以上系统如何没root激活XPOSED框架的流程

    在大多运行室的引流或者业务操作中,理论上需要使用安卓的高端技术XPOSED框架,最近我们运行室买来了一批新的华为9.0以上系统,理论上都是基于7.0以上系统版本,理论上不能够获取Root的su权限,即 ...

  4. vivo系统如何没root激活Xposed框架的经验

    在非常多公司的引流,或业务操作中,基本上都需要使用安卓的大神级xposed框架,近期,我们公司购买了一批新的vivo系统,基本上都都是基于7.0以上系统版本,基本上都不能够刷入ROOT超级权限,即使有 ...

  5. oppo5.0以上系统怎么样不Root激活Xposed框架的经验

    在非常多单位的引流或者业务操作中,基本上都需要使用安卓的黑高科技术Xposed框架,前几天我们单位购来了一批新的oppo5.0以上系统,基本上都都是基于7.0以上版本,基本上都不能够获取root超级权 ...

  6. 小米6.0以上系统怎么无需root激活Xposed框架的步骤

    在较多单位的引流或者业务操作中,理论上需要使用安卓的大神级XPOSED框架,近来,我们单位购买了一批新的小米6.0以上系统,理论上都是基于7.0以上版本,理论上不能够获得Root的su超级权限,纵然有 ...

  7. 6.0系统设备Root激活Xposed框架教程

    xposed框架简单简介 XPOSED框架是基于ANDROID系统平台的神器,大伙可以通过安装框架对应的功能模块来达到各种神奇的功能以及对系统各种底层的修改. 怎么样在安卓手机上安装激活XPosed框 ...

  8. 最简单小米机器一键激活XPOSED框架教程

    对于经常研究安卓的朋友而言,XPOSED框架肯定都不陌生,太多功能强大的APP都基于XPOSED框架下启用,但对于太多入门朋友而言,却经常搞不懂这是个什么框架,一听到XPOSED框架激活真心纳闷,刚好 ...

  9. 小米平板设备怎么无Root激活xposed框架的方法

    在非常多团队的引流或业务操作中,大多数需要使用安卓的黑高科技术XPOSED框架,这段时间,我们团队采购了一批新的小米平板设备,大多数都是基于7.0以上系统版本,大多数不能够获取Root权限,虽然一些能 ...

最新文章

  1. 浅析C语言的一个关键字——register
  2. 重学hadoop技术
  3. 各种initcall的执行先后顺序(module_init、postcore_initcall、arch_initcall、subsys_initcall、 fs_initcall)...
  4. JNI教程与技术手册
  5. hdu 4414 Finding crosses
  6. 【Kubernetes】k8s 的基本使用指令
  7. [dts]DTS实例分析
  8. OpenShift 4 - 用Pull Secret访问红帽官方或其他外部Registry的Image
  9. 服务器芯片组思维导图,服务器思维导图
  10. 概率编程语言(Probabilistic Programming Languages)库 —— edward
  11. 电脑屏幕变黄如何调整_办公室照明设计如何避免踩坑,四个要点必须注意
  12. [BUUCTF]REVERSE——相册
  13. 思科模拟器vlan的划分
  14. 运动模糊(Montion blur)
  15. 公司来了阿里人,然后......
  16. 拜托,在学校开拖拉机很酷的!
  17. 教师资格证-教育知识与能力
  18. Bandzip与360压缩
  19. Android逆向 某州 解密sign字段 so层 算法分析 Unidbg模拟执行
  20. 用windows运行命令打开

热门文章

  1. 短线操盘的10种方法、
  2. JavaScript 行间事件、提取行间事件
  3. 叉积求点到平面距离_用叉乘求法向量.doc
  4. codeforces 348A Mafia
  5. win7 32位装mysql_2017-11-16 Win7 32位下安装Mysql
  6. 【电商】电商后台设计—促销模块(上)
  7. 在ListView中实现button功能
  8. 笔记 shell基础应用,texturePacker 命令批量打包打包
  9. 【华人学者风采】李凯 普林斯顿大学
  10. Windows 2003 server 搭建拨号服务器