19/11/23 14:10:38 16BvOCmG.net
948つづき
で、2.の方法をプログラムに直接恒久的に適用する方法としては、
スマホ内の /system/framework/telephony-common.jar を抜き出してきて、
classes.dexを抜き出して(※jarはただのzip)、baksmaliで分解して、ServiceStateTracker.smaliを探す。
そのsmaliファイルの後ろの方に.method protected useDataRegStateForDataOnlyDevicesってメソッドの載ってるゾーンがあるので、
最初の方の、以下のコードを削除すればいい。(コードの細かいところはビルドによって変わるかもしれない)
iget-boolean v0, p0, Lcom/android/internal/telephony/ServiceStateTracker;->mVoiceCapable:Z
if-nez v0, :cond_0
↑これがif (mVoiceCapable == false) {に相当する。(smaliの記述としてはif(mVoiceCapable != false) goto: cond_0 な感じだけどね)
修正したら、smaliでclasses.dexへ再ビルドし、telephony-common.jarへ放り込む。
分解・再ビルドの参考:
URLリンク(qiita.com)
URLリンク(bitbucket.org)
なお、俺はlineageのソースをいじってビルドして動作確認したので、上記のbaksmali/smaliの手法では試してない。
まあ多分いけるだろう。
Magiskを使ってる場合、Xposedとの共存は面倒なので、プログラムを直接いじる方法なら、運用が少し楽になるかもしれない