xda上有老外已经研究过了https://forum.xda-developers.com/oneplus-5/themes/app-enable-call-recording-boot-t3634292,并且提供了好几种方法来开启
基于此,我研究了直接修改拨号apk来实现的方法
关键字段
op_voice_recording_supported_by_mcc
dialer反编译后搜索得,在文件
Lcom/oneplus/dialer/settings/OPDialerSettingsActivity
中
:cond_4
sget-boolean v19, Lcom/oneplus/dialer/settings/OPDialerSettingsActivity;->IS_OVER_SEA:Z
if-eqz v19, :cond_5
invoke-virtual/range {p0 .. p0}, Landroid/content/ContextWrapper;->getContentResolver()Landroid/content/ContentResolver;
move-result-object v19
.line 182
const-string/jumbo v20, "op_voice_recording_supported_by_mcc"
const/16 v21, 0x0
.line 181
invoke-static/range {v19 .. v21}, Landroid/provider/Settings$Global;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I
move-result v19
.line 182
const/16 v20, 0x1
.line 181
move/from16 v0, v19
move/from16 v1, v20
if-ne v0, v1, :cond_14
:cond_5
关键内容sget-boolean v19, Lcom/oneplus/dialer/settings/OPDialerSettingsActivity;->IS_OVER_SEA:Z
然后向上找到存储IS_OVER_SEA:Z值的地方
.method static constructor
.locals 3
.prologue
const/4 v2, 0x1
.line 106
new-array v0, v2, [I
const/4 v1, 0x0
aput v2, v0, v1
invoke-static {v0}, Landroid/util/OpFeatures;->isSupport([I)Z
move-result v0
sput-boolean v0, Lcom/oneplus/dialer/settings/OPDialerSettingsActivity;->IS_OVER_SEA:Z
.line 49
return-void
.end method
在 sput-boolean v0, Lcom/oneplus/dialer/settings/OPDialerSettingsActivity;->IS_OVER_SEA:Z
上面加一行
const/4 v0, 0x0
即可在拨号设置中找到通话录音选项,但是打电话时仍然没有通话录音功能。
进一步研究得知通话时的通话录音功能在OPInCall中,如上炮制修改即可