機内モード後にPIN要求を無効にする


10

電話をオンにすると、デフォルトでSIM-PINを入力するように求められます。これは、「見知らぬ人」がコストを引き起こすのを防ぐための優れたセキュリティ対策です。機内モードから戻る場合も同様です。SIM-PINに再度入る必要があります。これにより、特定のエネルギーセーバーが役に立たなくなります。たとえば、アプリが信号損失で機内モードに入る場合(参照:セルスタンバイは何か、どのようにしてバッテリーを消費しないようにすることができますか?)、ユーザーの操作なしで通常の操作に戻ることはできません。 。

これを選択的に無効にする方法を探しています。デバイスの電源を入れるときにPIN要求をアクティブにしますが、機内モードから戻るときにSIM-PINを要求されません。

これを「キーガード」と混同しないでください。画面ロック(PIN /パターン/パスワード)については尋ねていません。アプリが使用するAPIがあるので、ここで私の方法を知っています(たとえば、Taskerで一時的にこれをオフにできます)。

私はこれがSamsungデバイスで動作することを知っています-しかし、すべてのメーカーで機能するデバイス非依存のソリューションが望ましいです。


2
本当に!上記の質問から引用させてください:私はこれを選択的に無効にする方法を探しています - チェックを完全に無効にするのではありません。完全に無効にできることはわかっていますが(これは現在使用しています)、デバイスの起動時ではなく、機内モードからの切り替え時にのみ無効にしたいと考えています。
イジー

回答:


1

免責事項

  1. これにはルートが必要です。それを回避する方法はありません。
  2. デバイスでAndroid 4.1以降を実行している必要があります
  3. この回避策は、一部のユーザーには高度すぎる可能性があります。自分が何をしているのかわかっている場合にのみ、適用してみてください。
  4. 処理中に問題が発生した場合、またはラグナロクが開始した場合、私は責任を負いません。自分の責任でこれを行っています。注意して続行してください。
  5. 私は、言及されているmodの作成者でもありません。私はこれを見つけただけで、あなたの利益のためにそれを共有しています。

回避策

Cyanogenmod 10.2とDorimanx Kernel 9.41がインストールされているSamsung Galaxy S2で問題なく動作する問題の回避策を見つけました。必要な手順は次のとおりです。

  1. デバイスがルート化されていることを確認します。

  2. Xposed Framework Installerをダウンロードしてインストールします。

  3. Xposedが近い将来にどこかでrootを要求するとき、それを許可します。

  4. アプリを開き、Framework-Tab をクリックします。

  5. をクリックしInstall/Updateます。

  6. 再起動します。

  7. Jelly Bean 4.x Airplane Mode Helperをダウンロードしてインストールします

  8. Xposed Framework Installerもう一度-Appを開き、を選択しますModules

  9. ティック(アクティブに設定)Jelly Bean 4.x Airplane Mode Helper

  10. 再起動します。

  11. を開きJelly Bean 4.x Airplane Mode Helperます。

  12. ティック(アクティブに設定)有効

  13. 再起動します。

それでおしまい!機内モードは以前のAndroidバージョンと同様に機能し、オフにしてもSIM-PINを要求しなくなります。ただし、起動時にはまだ機能するため、SIMカードはある程度安全に保たれます。ここで説明したものと同様のLlama Location Profilesを使用して自動バッテリー節約手順をセットアップし(Thx a bunch、Izzy)、それは完璧に機能しています。

幸運を祈ります!


1
回答ありがとうございます!書式(リスト)を改善するために編集し、JB +が必要であることを追加しました。私のデバイスはまだJBを実行していないため、テストすることはできませんが、質問の最も重要な部分を見逃した可能性があります(少なくとも、あなたはそれについて言及していません)。飛行機から戻ったときにSIM-PINを要求しますか?モード–または、この方法でスキップできますか?
Izzy

1
安心してください。問題は完全に解決しました。私の答えはまさにあなたが探していたものです;)- 機内モードからの復帰時にSIM-PINを要求することはありませが、起動時にはそれが行われます。したがって、セキュリティは維持されますが、バッテリー節約スクリプトは再び機能します。フォーマットのアップグレードをありがとう!
FuzzyQ 2013

あなたが正しかったので、最も重要な情報を追加しました-これにより、機内モード後にSIMを再度ロック解除する必要がなくなるという事実を完全に忘れていました。
FuzzyQ 2013

1
この場合、それはまさに私が求めていたものです。自動化されたジョブは手動の介入なしで機能しますが、「初期化」(つまり、ブート後)に関してはデバイスはまだ保護されています。優秀な!今は賛成です。私はt0mm13bのソリューションもテストできないので、私の「承認」に関して信頼する必要があります。これは、これまでのところ最も有望な(そして無料の)ソリューションのようですが、JB +に限定されています。
イジー

そもそも私がどうやってそこに着いたのかおかしいです。セルスタンバイの問題に対する質問と回答を見つけましたが、すぐに機内モードのSIM-PIN問題が発生しました。Xposed Frameworkをしばらく使用してきたので、この問題に対処するXposedモジュールを探すというアイデアがありました。:)
FuzzyQ 2013

8

答えはソースにあります...ピンロックを要求するプロパティはbuild.propまたはに組み込まれているようdefault.propです。

TelephonyManager sourceの行735と755の間の参照を見てください。簡潔にするために、

public int getSimState() {
        String prop = SystemProperties.get(TelephonyProperties.PROPERTY_SIM_STATE);
        if ("ABSENT".equals(prop)) {
            return SIM_STATE_ABSENT;
        }
        else if ("PIN_REQUIRED".equals(prop)) {
            return SIM_STATE_PIN_REQUIRED;
        }
        else if ("PUK_REQUIRED".equals(prop)) {
            return SIM_STATE_PUK_REQUIRED;
        }
        else if ("NETWORK_LOCKED".equals(prop)) {
            return SIM_STATE_NETWORK_LOCKED;
        }
        else if ("READY".equals(prop)) {
            return SIM_STATE_READY;
        }
        else {
            return SIM_STATE_UNKNOWN;
        }
    }

キーは、94行目と98行目の間のどこかTelephonyProperties.PROPERTY_SIM_STATE参照されています。

//****** SIM Card
/**
 * One of <code>"UNKNOWN"</code> <code>"ABSENT"</code> <code>"PIN_REQUIRED"</code>
 * <code>"PUK_REQUIRED"</code> <code>"NETWORK_LOCKED"</code> or <code>"READY"</code>
 */
static String PROPERTY_SIM_STATE = "gsm.sim.state";

私のマシンでここにあるソースコードを検索した後、このメソッドgetSimStateが呼び出される頻度について説明します。テレフォニーレイヤーだけでなく、Android内でどのように統合されているかを知るためのJavaソースの名前に注目してください。他の場所。

services/java/com/android/server/am/BatteryStatsService.java 219:      int simState = TelephonyManager.getDefault().getSimState();

telephony/java/android/telephony/TelephonyManager.java 523:    public int getSimState() { 551:     * @see #getSimState 562:     * @see getSimState

policy/src/com/android/internal/policy/impl/KeyguardUpdateMonitor.java 478:    public IccCard.State getSimState() {

policy/src/com/android/internal/policy/impl/KeyguardViewMediator.java 545:            final IccCard.State state = mUpdateMonitor.getSimState();

policy/src/com/android/internal/policy/impl/LockPatternKeyguardViewProperties.java 57:        final IccCard.State simState = mUpdateMonitor.getSimState();

policy/src/com/android/internal/policy/impl/LockScreen.java 273:       mStatus = getCurrentStatus(updateMonitor.getSimState());

policy/src/com/android/internal/policy/impl/LockPatternKeyguardView.java 173:                && (mUpdateMonitor.getSimState() == IccCard.State.ABSENT); 217:                final IccCard.State simState = mUpdateMonitor.getSimState(); 469:                && (mUpdateMonitor.getSimState() != IccCard.State.PUK_REQUIRED)) { 512:   secure = mUpdateMonitor.getSimState() == IccCard.State.PIN_REQUIRED 513:                            || mUpdateMonitor.getSimState() == IccCard.State.PUK_REQUIRED; 643:        final IccCard.State simState = mUpdateMonitor.getSimState(); 662:        final IccCard.State simState
= mUpdateMonitor.getSimState();

policy/tests/src/com/android/internal/policy/impl/LockPatternKeyguardViewTest.java 49:        public IccCard.State getSimState() {

それらのファイル名はロック画面で手掛かり、うん、を与えますか...

理論

これは、起動することによって、この時点でルートを必要とadb shellして呼び出すgetpropsetprop、これを行うために、一部のみを呼び出すことによって、これです

adb shell getprop 以下に示すように、関連情報を取得します

sh-4.1# getprop
[gsm.sim.state]: [READY]

この微妙なプロパティは、電源投入の瞬間から動的にバッキングプロパティストアに永続化されているようであり、物事やサービスに基づいてそれに応じて調整されています。カードの状態を「未準備」または「不明」に変更するリーダー。(ref: system / core / include / cutils / properties.h and system / core / toolbox / [ getprop | setprop ] .c)

この時点で、理論的には、画面をロックする前にsetpropを呼び出すことで、一時的に回避できますが、テレフォニーレイヤーによってリセットされる可能性があります。試したことはありません!これはこれにつながります...

結論

唯一の方法これをオフにすることができますが、効果的にすることで、実際のSIMカード上のピンロック要求を無効にします。ここに「マジック」ビットフラグが格納されます。テレフォニーのRILレイヤーは、独自のhtc / samsung / qualcommのライブラリを介してそれを読み取ります。これにより、プロパティ「PIN_REQUIRED」の永続化の伝播が妨げられます。 Androidのレイヤー。

可能な回避策は、Androidデベロッパーのみです:)

これには、ソースをハッキングして再コンパイルする必要があります。 機内モードの場合、そのモードに入ると機内モードを終了するときに、プロパティを2つに分割して、gsm.sim.stateをそのままにすることができますが、このようなgsm.sim.stateなどの別のプロパティを考案できます。 planet.modeとの行に沿って値を割り当てSIM_STATE_PIN_NOT_REQUIRED、飛行機モードのチェックを変更してそのプロパティを読み取り、それが設定されている場合はピンダイアログボックスを表示しません。それ以外の場合は通常、ダイアログボックスを表示します。


詳しい説明ありがとうございます、t0mm13b!だから私たちはあなたが言及したすべての場所でサムスンとLGがコードを変更したと仮定する必要があります-私がサムスンとLGデバイスについて得たレポート(私の質問で説明されているようにSIM PINチェックを個別に無効にできると人々が言っ​​た場合)が正しい?
イジー

再度、感謝します!CMでその設定が見つかると言うと、CMが多くのデバイスで利用できるため、これはすでに大きな助けになります。私のデバイスはすべてCM 7.xを実行しているので、確認できました-まだそのような設定に遭遇していませんが(これが、どこを探すべきかを尋ねている理由です)
Izzy

設定>位置情報とセキュリティの設定、Simカードのロックを試しますか?
t0mm13b 2012

AOSPソースに存在する、同じ場所にあるあなたの質問への回答であるコメントを削除する必要がありました(私のSIMカードは既にロック解除されており、ピンリクエストロックがないため、初めて見ました)
t0mm13b

1
ジンジャーブレッドでは確認されていません(私のMotorolaDroid²/Milestone²のCM7.2)。確かに、SIM PINは上記の場所で構成できますが、オン/オフのみで、「電源オン時のみ」には選択できません。ごめんなさい。
イジー

3

あなたがやろうとしていることをする必要があるとは思いません。

代わりに、

  • Tasker有効化/無効化Airplaneモードが行うすべてのことをオン/オフに切り替える2つのタスクを設定します。
  • 実際に自分のAirplaneモードを使用しないでください。Taskerタスクを使用します。

ハードウェアラジオを自動的にオンにするアプリが有効になっているかどうかを確認する必要がある場合があります。アプリがバックグラウンド同期などを試みるかどうかを確認します。無効になっている無線をオンに切り替えようとする可能性があります。その場合は、WiFiなどのアプリを自動的にオンにするアプリの機能を無効にします。Airplaneこの答えを試してみると、モードは予期しないWiFi接続を以前に確実に停止したためです。

シャットダウン時Taskerに常にAirplaneモードになるように設定することもできます。これにより、起動時にPINロックが表示されます。


zero2cxに感謝します-しかし、私は一人で、特にTaskerに対しては求めていません(ここで個別に無効にできることは承知していますが、携帯無線を個別に無効にすることは私のMilestone²では機能しません)。リンクされた質問の回答では、他の2つのアプリについても触れています。機内モードを使用しているため、PINを入力するか無効にする必要があると報告されています。したがって、特定のTaskerソリューション(多くの場合Taskerが複雑すぎると思う)ではなく、私が要求したことを実行するための一般的なソリューション:機内モードからの復帰時にのみPIN要求を無効にすることを望んでいることを理解してください。
イジー

はい。それで私は困惑しています。ソフトウェアでそれを切り替える方法があるはずですが、より微妙な方法で。サムスンはあなたにそれをどのようにさせていますか?
zero2cx 2012

わかりません(Samsungデバイスを持っていません)。しかし、私はそれがLGと同様に多くの(すべての)Samsungデバイスで実行可能であるという報告を持っています。私のMilestone²では、現在のSIMが以前にHTC Buzz / Wildfireにあったため、この目的のためにSIM-PINを完全に無効にする必要があったので、明示的にチェックしませんでした。
イジー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.