データ通信専用 SIM では実際には試してないけど恐らく緊急通報できないのだろうから「緊急通報のみ」も消してしまっていいのではないか、ということで消し方に関する話。
触るファイルは「Android + b-mobile データ専用 SIM で電界強度を表示する」の時と一緒で com\android\internal\telephony\gsm\GsmServiceStateTracker.smali になる。基本的な流れも大体一緒なので改変する箇所に関してだけ書いておきます。
無効化方法について書きますが自己責任でお願いします。
わからないことがあれば聞かずにご自分でお調べください。私にもわかりません。
元ソースで見ると以下の箇所がポイント。
GsmServiceStateTracker.java#L590
if (regState == 10 || regState == 12 || regState == 13 || regState == 14) {
mEmergencyOnly = true;
} else {
mEmergencyOnly = false;
} regState が 10, 12, 13, 14 の時「緊急通報のみ」のモードが true になるので、ここを false に変えることで、どんな時でも「緊急通報のみ」を無効化できるはず。
smali ファイルではまず「Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->regCodeToServiceState(I)I」で検索してみると、この時点で恐らく2件ヒットするはず。
そこから先が以下のようになっている方が目的の箇所(例によって環境により細かい数字類は異なると思う)。
invoke-direct {v0, v1}, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->regCodeToServiceState(I)I
move-result v15
invoke-virtual {v14, v15}, Landroid/telephony/ServiceState;->setState(I)V
.line 684
const/16 v14, 0xa
if-eq v10, v14, :cond_166
const/16 v14, 0xc
if-eq v10, v14, :cond_166
const/16 v14, 0xd
if-eq v10, v14, :cond_166
const/16 v14, 0xe
if-ne v10, v14, :cond_1a4
.line 685
:cond_166
const/4 v14, 0x1 ← ここを 0x0 に書き換える この変更だけで、「緊急通報のみ」は常に無効になってキャリア名が出るようになると思います。
全ての環境で上手くいくかは相変わらずわかりませんが、上手くいったらよかったねということで。
あと、これで無効化してしまうと本当に「緊急通報のみ」の状態になった時にわからなくなってしまうので、データ通信専用ではない SIM を使う場合はちゃんと元に戻した方がいいと思います。
「『緊急通報のみ』を消す=データ通信専用表示になる」というわけではないと思うので、特にいいことがあるかどうかはわかりません。
0 件のコメント:
コメントを投稿