2019独角兽企业重金招聘Python工程师标准>>>

1.准备工作,前提电脑需配置JAVA环境,需要apktool 、notepad++  ,解压。  工具下载见附件。

2、提取ROM的system\app的PHONE.apk 及  框架文件system\framework下 的framework-res.apk ,把这两个文件放到apktool目录下.

3.运行CMD.bat ,cmd下输入命令 apktool if framework-res.apk  ,加载系统框架 ,然后反编PHONE.apk ,  CMD命令apktool d phone.apk abc

4、进入abc\smali\com\android\phone  找到 CallNotifier.smali  用notepad++  打开CallNotifier.smali  最后另起一行添加以下代码:

.method private callVibrate(Z)V.locals 11const/4 v10, 0x0const/4 v9, 0x1:try_start_0iget-object v7, p0, Lcom/android/phone/CallNotifier;->mApplication:Lcom/android/phone/PhoneApp;iget-object v7, v7, Lcom/android/phone/PhoneApp;->phone:Lcom/android/internal/telephony/Phone;invoke-interface {v7}, Lcom/android/internal/telephony/Phone;->getForegroundCall()Lcom/android/internal/telephony/Call;move-result-object v0invoke-virtual {v0}, Lcom/android/internal/telephony/Call;->getLatestConnection()Lcom/android/internal/telephony/Connection;move-result-object v1iget-object v7, p0, Lcom/android/phone/CallNotifier;->mApplication:Lcom/android/phone/PhoneApp;invoke-virtual {v7}, Lcom/android/phone/PhoneApp;->getContentResolver()Landroid/content/ContentResolver;move-result-object v4const/4 v6, 0x0invoke-virtual {v1}, Lcom/android/internal/telephony/Connection;->getDurationMillis()Jmove-result-wide v2if-eqz p1, :cond_2const-wide/16 v7, 0x0cmp-long v7, v2, v7if-lez v7, :cond_1const-string v7, "hungup_vibrator"const/4 v8, 0x1invoke-static {v4, v7, v8}, Landroid/provider/Settings$System;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)Imove-result v7if-ne v7, v9, :cond_1move v6, v9:goto_0if-eqz v6, :cond_0iget-object v7, p0, Lcom/android/phone/CallNotifier;->mApplication:Lcom/android/phone/PhoneApp;const-string v8, "vibrator"invoke-virtual {v7, v8}, Lcom/android/phone/PhoneApp;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;move-result-object v5check-cast v5, Landroid/os/Vibrator;const-wide/16 v7, 0x64invoke-virtual {v5, v7, v8}, Landroid/os/Vibrator;->vibrate(J)V:cond_0:goto_1return-void:cond_1move v6, v10goto :goto_0:cond_2invoke-virtual {v1}, Lcom/android/internal/telephony/Connection;->isIncoming()Zmove-result v7if-nez v7, :cond_3const-wide/16 v7, 0xc8cmp-long v7, v2, v7if-gez v7, :cond_3invoke-virtual {v0}, Lcom/android/internal/telephony/Call;->getState()Lcom/android/internal/telephony/Call$State;move-result-object v7sget-object v8, Lcom/android/internal/telephony/Call$State;->ACTIVE:Lcom/android/internal/telephony/Call$State;if-ne v7, v8, :cond_3const-string v7, "outgoing_vibrator"const/4 v8, 0x1invoke-static {v4, v7, v8}, Landroid/provider/Settings$System;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I:try_end_0.catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0move-result v7if-ne v7, v9, :cond_3move v6, v9goto :goto_0:cond_3move v6, v10goto :goto_0:catch_0move-exception v7goto :goto_1
.end method.method private callVibrateHungup()V.locals 1const/4 v0, 0x1invoke-direct {p0, v0}, Lcom/android/phone/CallNotifier;->callVibrate(Z)Vreturn-void
.end method.method private callVibrateOutgoing()V.locals 1const/4 v0, 0x0invoke-direct {p0, v0}, Lcom/android/phone/CallNotifier;->callVibrate(Z)Vreturn-void
.end method

5、用ctrl+F查找 .method private onDisconnect(Landroid/os/AsyncResult;)V    空一行加入下边代码

invoke-direct/range {p0 .. p0}, Lcom/android/phone/CallNotifier;->callVibrateHungup()V

继续ctrl+F查找.method private onPhoneStateChanged(Landroid/os/AsyncResult;)V  空一行加入以下代码

invoke-direct {p0}, Lcom/android/phone/CallNotifier;->callVibrateOutgoing()V

6、保存,回编译,CMD下命令 :    apktool b abc         成功后找到abc\build\apk\classes.dex     用压缩软件RAR打开PHONE.apk ,把反编的classes.dex托进去替换旧的classes.dex ,然后用RE替换新的PHONE.apk 就可以了,注意改权限 ,第一排竖的三个勾上,竖的第二排的第一个勾上。重启,大功告成!


转载于:https://my.oschina.net/u/551428/blog/55646

AOKP接听震动PHONE.APK修改方法相关推荐

  1. AppNinja一文解决:targetSdkVersion版本过低安装失败,安装apk提示版本太低,targetsdkversion修改方法,附带打包修改工具

    解决targetSdkVersion版本过低安装失败,安装apk提示版本太低,targetsdkversion修改方法 直接上解决办法: 一.打包错误 AndroidManifest.xml:1: e ...

  2. 反编译apk修改v7包_APK反编译

    一.APK 结构 Android 应用的 APK(Android Package)安装文件是一个包含所有代码和资源文件的压缩包 image.png AndroidManifest.xml 是Andro ...

  3. 新版RE管理器 (Root Explorer)修改方法(去广告,时间日期排序,默认文件夹优先)

    1.由于很多人不是真正的Google Play商店花钱买的,所以安装后有谷歌广告 2.新版的时间日期排列比较蛋疼 3.有些人喜欢默认文件夹优先显示 首先你要会反编译,会使用apktool,然后你要下载 ...

  4. Android开机画面的具体修改方法

    制作开机Logo  方法一:  Drivers/video/logo/logo_linux_clut224.ppm是默认的启动Logo图片,把自己的Logo图片(png格式)转换成ppm格式,替换这个 ...

  5. 启动MySQL:net start mysql出现问题+本地Mysql忘记密码的修改方法

    解决方法1:(普遍) 管理员开启cmd,进入bin文件夹,方法见图: cmd内输入:cd C:\Program Files\MySQL\MySQL Server 8.0\bin这里的路径要换成你自己b ...

  6. debug运行可以,release运行报错的原因及修改方法

    通常我们开发的程序有2种模式:Debug模式和Release模式在Debug模式下,编译器会记录很多调试信息,也可以加入很多测试代码,方便我们程序员测试,以及出现bug时的分析解决Release模式下 ...

  7. hbuildx打包成apk_HBuilder打包webapp为apk的方法

    本文主要为大家带来一篇利用HBuilder打包前端开发webapp为apk的方法.小编觉得挺不错的,现在就分享给大家,也给大家做个参考.一起跟随小编过来看看吧,希望能帮助到大家. 现在的前端开发可谓是 ...

  8. tensorflow中keep_prob的修改方法

    tensorflow中keep_prob的修改方法 warning: WARNING:tensorflow:From D:\software\pycharm_location\venv\Dehaze- ...

  9. MongoDB进阶系列(11)——“改”的那些事(二)文档的keyvalue为数组的修改方法...

    2019独角兽企业重金招聘Python工程师标准>>> 本文将讨论关于文档中keyvalue为数组的情况如何修改数组. 首先,创建一个c4集合,集合中的文档包含一个arrint字段, ...

  10. php104.tmp,ThinkPHP5.0多个文件上传后找不到临时文件的修改方法

    这是修改之前的代码 if(!empty($_FILES)){ if(!empty($_FILES[org_positive])){ $org_positive = request()->file ...

最新文章

  1. 清空memcached中缓存的数据的方法
  2. memset 数组初始化
  3. appinventor离线版下载_Chrome 离线安装包下载
  4. python练习题1
  5. 双路由器双小型交换机组建公司网络,2个公网IP上网案例(转载)
  6. 斌伯的博客园Blog开张大吉
  7. html中的空格表示
  8. chm 转 html 带索引,chm 的项目文件中包含创建 chm 文件所需的HTML文件信息、目录表文件信息、索引文件信息、窗口属 - 试题答案网问答...
  9. H3C DHCP中继实验
  10. django中间件修改,以及TypeError: object() takes no parameters的异常处理
  11. PhotoZoom放大图片,真的能无损吗?
  12. 雷达信号处理---线性调频信号脉冲压缩MATLAB实现
  13. 拼多多砍价群大王:砍价界的扛把子
  14. C++11的模板类型判断——std::is_same和std::decay
  15. 迪赛智慧数——其他图表(盒须图):员工离职率分析
  16. EasyClick脚本开发教程(3)连接设备与屏幕映射
  17. html5 视差地图,用HTML5构建高性能视差网站的图文代码详解
  18. 详解C盘Windows文件夹里重要文件作用
  19. react入门-列表渲染(动态获取数据)
  20. 实验四 基于PPTP的远程VPN实现【网络安全】

热门文章

  1. (阅读笔记)脑中线偏移测量及其自动化技术与算法综述
  2. 第六章 网上银行与电子支付-1
  3. PM notifier
  4. Win10 中主机名hosts 文件位置
  5. git push/pull命令
  6. java map.put map_java中map的put方法
  7. Oracle between and
  8. maven下载Nexus私服jar包,报错Not authorized
  9. TM1638驱动显示板(8数码管+8LED+8按键)单片机C语言程序(按键功能)
  10. 严重: Unable to set localhost. This prevents creation of a GUID. Cause was: cloud: cloud