L-01Kの設定画面をタブ表示にしようとしたけどできなかった
概要
ドコモのL-01Kでは、auのLGV35とは違い設定のタブ表示ができなくなっている。
わざわざ機能自体をコード上から消すのも手間だろうから、おそらくタブ表示に切り替えるUIが塞がれているだけで、何かしらゴニョれば使えるのではないか?といろいろ試した。
LGV35 | L-01K |
調査
多分この表示形式は com.android.settings
アプリの設定として保持されているだろうと推測。
Androidの端末設定は /system/users/0/settings_system.xml
に保存されるので見てみる。
<setting id="342" name="support_settings_tabview" value="0" package="com.android.settings" defaultValue="1" defaultSysSet="true" />
あった。
早速ADBから設定を書き換える。
$ adb shell settings put system support_settings_tabview 1
しかし効果はなく、端末を再起動したりしても変わらず。
仕方ないので /system/priv-app/LGSettings/oat/arm64/LGSettings.vdex
をPCでデコンパイル。
vdexは以下のツールで展開できる。
その後、dex2jarとjd-guiを使えば概ね復元されたコードを読める。
public static boolean isSupportedTabView(Context paramContext) { boolean bool1 = false; boolean bool2; if (LGUtils.TIERS.fromString(LGUtils.getTierType(paramContext)) == LGUtils.TIERS.TIER_LOW) { bool2 = bool1; } for (;;) { return bool2; bool2 = bool1; if (!Config.isCurrentOperator("DCM")) { bool2 = bool1; if (!Config.isCurrentOperator("TRF")) { bool2 = bool1; if (!FeatureUtils.isTablet()) { bool2 = true; } } } } }
オペレーターを見てフラグを落としていた。
DCMはドコモのことである。(もう1つのTRFは何処だろう)
問題は Config.isCurrentOperator
だが、内容は以下のようになっている。
public static boolean isCurrentOperator(String paramString) { if (paramString != null) {} for (boolean bool = paramString.equalsIgnoreCase(sOperator);; bool = false) { return bool; } }
sOperator = SystemProperties.get("ro.build.target_operator", "OPEN");
つまり、/system/build.prop
の ro.build.target_operator
の値を参照している。
例によってADBから書き換えたいところだが、セキュリティなどの問題からこの値は変更不可となっている。
$ adb shell setprop ro.build.target_operator OPEN setprop: failed to set property 'ro.build.target_operator' to 'OPEN'
やはりroot権限がないと難しい。
結論
弄れる部分がないか追ってみたが、結局できなかった。