uçak modundan sonra PIN isteğini devre dışı bırak


10

Telefonu açarken, varsayılan olarak, "yabancıların" size maliyet vermesini önlemek için iyi bir güvenlik önlemi olan SIM-PIN kodunu girmeniz istenir. Aynı şey uçak modundan dönerken de geçerlidir: SIM PIN'in tekrar girilmesi gerekir. Bu, belirli enerji tasarruflarını işe yaramaz hale getirir: bir uygulama örneğin sinyal kaybında uçak moduna girerse (bkz: Hücre bekleme nedir ve pilimi yemekten nasıl koruyabilirim? ), Kullanıcı etkileşimi olmadan normal çalışmaya geri dönemez .

Bunu seçici olarak devre dışı bırakmanın bir yolunu arıyorum : Cihazı açarken PIN isteğini etkinleştirin - ancak uçak modundan dönerken SIM PIN'i istenmez.

Lütfen değil "Keyguard'daki" ile karıştırmayın: Ben ekran kilidi (PIN / desen / şifre) hakkında sormuyorum. Burada, uygulamaları kullanmak için bir API olduğu için yolumu biliyorum (böylece örneğin Tasker ile bunu geçici olarak kapatabilirim ).

Bunun Samsung cihazları ile çalıştığını biliyorum - ama tercihen tüm üreticiler için çalışan bir cihazdan bağımsız bir çözüm istiyorum.


2
Gerçekten mi! Yukarıdaki sorudan alıntı yapmama izin verin: Seçimi devre dışı bırakmanın bir yolunu arıyorum - kontrolü tamamen devre dışı bırakmak değil . Tamamen devre dışı bırakılabileceğini biliyorum (şu anda kullandığım şey bu) - ancak cihazı başlatmak için değil, sadece Uçak modundan geri dönmek için devre dışı bırakmak istiyorum.
Izzy

Yanıtlar:


1

REDDİ

  1. Bunun kök olması gerekir. Bunun etrafında bir yol yok.
  2. Cihazınızda Android 4.1 ve sonraki sürümleri çalışıyor olmalıdır
  3. Bu geçici çözüm bazı kullanıcılar için çok gelişmiş olabilir. Sadece ne yaptığınızı bildiğinizde uygulamaya çalışın.
  4. İşlem sırasında bir şeyler ters giderse veya Ragnarök başlarsa sorumlu tutulmam. Bunu kendi sorumluluğunuzda yapıyorsunuz. Dikkatle ilerle.
  5. Bahsedilen modların hiçbirinin yazarı ya da başka bir üyesi değilim. Ben sadece bunu buldum ve senin yararın için paylaşıyorum.

Pratik Çözüm

Samsung Galaxy S2'de Cyanogenmod 10.2 ve Dorimanx Kernel 9.41'in yüklü olduğu sorun için geçici bir çözüm buldum. Gerekli adımlar aşağıdaki gibidir:

  1. Cihazınızın desteklendiğinden emin olun.

  2. Xposed Framework Installer'ı indirip yükleyin .

  3. Xposed yakın gelecekte kök her yerde istediğinde, bunu kabul .

  4. Uygulamayı açın ve Framework-Sekme'ye tıklayın .

  5. Tıklayın Install/Update.

  6. Yeniden başlat .

  7. Jelly Bean 4.x Uçak Modu Yardımcısı'nı indirip yükleyin .

  8. Xposed Framework Installer-App'ı tekrar açın ve öğesini seçin Modules.

  9. İşaretleyin (etkin olarak ayarlayın) Jelly Bean 4.x Airplane Mode Helper.

  10. Yeniden başlat .

  11. Jelly Bean 4.x Airplane Mode Helper.

  12. Onay (etkin olarak ayarla) Etkin .

  13. Yeniden başlat .

Bu kadar! Uçak Modu önceki Android sürümleri olduğu gibi yine çalışmalıdır ve yok değil kapalı edilirken artık SIM PIN isteyin. Yine de başlangıçta yapar, böylece SIM Kartınızı biraz güvende tutar. Lama Konum Profilleri ile burada tarif edilene benzer bir otomatik pil tasarrufu prosedürü oluşturdum (Thx a demet, Izzy) ve kusursuz çalışıyor.

İyi şanslar millet!


1
Cevaplarınız için teşekkürler! Biçimlendirmeyi (listeler) geliştirmek için yeni düzenledim ve JB + gerektirdiğini ekledim. Cihazlarım henüz JB'yi çalıştırmadığı için test edemiyorum - ancak sorunun en önemli kısmını kaçırmış olabileceğinizden şüpheleniyorum (en azından bahsetmiyorsunuz): Uçaktan dönerken SIM-PIN'i istiyor mu? veya bu şekilde atlanabilir mi?
Izzy

1
Dinlenme, güvence ben tamamen sorun var ve cevabım size aradığınız tam olarak ne olduğu;) - bu mu değil Uçak Modu döndürürken SIM PIN soracak, ama yine de açılışta yapıyor. Böylece, güvenliğiniz korunur ancak pil tasarrufu komut dosyanız tekrar çalışır. Biçimlendirme yükseltmesi için teşekkürler!
FuzzyQ

Doğru olarak en önemli bilgileri ekledim - bunun aslında uçak modundan sonra tekrar SIM'inizin kilidini açma ihtiyacını ortadan kaldırdığını söylemeyi tamamen unuttum.
FuzzyQ

1
Bu durumda, tam olarak neyin peşindeyim: Otomatik işler manuel müdahale olmadan çalışır, ancak "başlatma" (örneğin önyükleme sonrasında) söz konusu olduğunda cihaz hala korunur. Mükemmel! Şimdilik onaylıyorum. T0mm13b'nin çözümünü de test edemediğim için, "kabul et" ile ilgili size güvenmek zorundayım: JB + ile sınırlı olsa da, şimdiye kadar en umut verici (ve ücretsiz!) Çözüm gibi görünüyor.
Izzy

Biliyor musun, ilk etapta oraya nasıl geldiğim komik. Sorunuzu ve cevabınızı hücre bekleme sorununa buldum ve kısa bir süre sonra uçak modu-SIM-PIN sorunu ile sonuçlandım. Xposed Framework'ü bir süredir kullandığımdan beri, konuyla ilgilenecek bir xposed modülü arama fikrim vardı. :)
FuzzyQ

8

Cevap kaynakta yatıyor ... Görünüşe göre pin kilidi talep etme özelliği build.propya da içine yerleştirilmiş default.prop.

TelephonyManager kaynağında 735 ve 755 satırları arasında bulunan referanslara göz atın.

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;
        }
    }

Anahtar, başka bir yerde , 94 ve 98 satırları arasında TelephonyProperties.PROPERTY_SIM_STATEatıfta bulunulan anahtardır .

//****** 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";

Makinemdeki kaynak kodunu aradıktan sonra, size bu yöntemin ne sıklıkta getSimStateçağrıldığı fikrini vereceğim , sadece Telefon katmanında değil, Android'de nasıl entegre edildiğine dair ipucu vermek için java kaynağının adlarına dikkat edeceğim. başka yerde.

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() {

Bu dosya adları kilit ekranında ipucu veriyor mu?

teori

Bu, bu noktada kökü gerektirir, çağırarak adb shellve çağırarak getpropve setpropbunu yapmak için, tek parça bu, çağırarak

adb shell getprop ilgili bilgileri aşağıda gösterildiği gibi geri alacak

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

Bu ince özellik, açılış anından itibaren dinamik olarak bir destek mülk deposunda kalıyor gibi görünüyor ve buna bağlı olarak, şeylerin sayısına, hizmete ve sim kartını devreden çıkarabilecek ahizeyi yanlışlıkla düşürmekten bahsetmiyor. kartın durumunu " hazır değil " veya " bilinmeyen " olarak değiştirecek olan okuyucu . ( ref: sistem / çekirdek / include / cutils / properties.h ve sistem / çekirdek / araç kutusu / [ getprop | setprop ] .c)

Şimdi bu noktada, teorik olarak, ekranı kilitlemeden önce setprop'u çağırarak, geçici olarak atlatılabilir, ancak daha sonra, telefon katmanı tarafından sıfırlanabilir! Bunu denemedim! Hangi buna yol açar ...

Sonuç

Bunun kapatılabilmesinin tek yolu , gerçek sim karttaki pin kilidi talebini etkin bir şekilde devre dışı bırakmaktır . Telefonun RIL katmanının onu özel htc / samsung / qualcomm kütüphanesi aracılığıyla okuduğu ve "PIN_REQUIRED" mülkünün devam etmesini engelleyecek "sihirli" bit bayrağı burada saklanır. Android katmanları.

Yalnızca Android Geliştiricileri için olası bir çözüm :)

Bu, kaynağı hacklemeyi ve yeniden derlemeyi gerektirir. Uçak modu için, bu moda girerken ve uçak modundan ayrılırken, özellik gsm.sim.state , olduğu gibi bırakılabilir, ancak gsm.sim.state gibi başka bir özellik tasarlayabilir . airplane.mode öğesinin satırları boyunca bir değer atayın SIM_STATE_PIN_NOT_REQUIREDve bu özelliği okumak için uçak modu kontrolünü değiştirin ve buna ayarlanmışsa, raptiye iletişim kutusunu göstermeyin, aksi takdirde genellikle olduğu gibi, sor.


Detaylı açıklama için teşekkürler, t0mm13b! Bu nedenle, Samsung ve LG'nin bahsettiğiniz tüm yerlerde kodu değiştirdiğini varsaymalıyız - Samsung ve LG cihazları hakkında aldığım raporlar (insanların sorumu açıklandığı gibi SIM PIN kontrolünü ayrı olarak devre dışı bırakabileceklerini söyledikleri) doğru?
Izzy

Tekrar teşekkürler! CM'de bu ayarı bulmayı söyleyebildiyseniz ve orada olduğu için, bu zaten büyük bir yardımcı olacaktır - CM birçok cihaz için kullanılabilir olduğu için :) Cihazlarım CM 7.x çalıştırıyor, bu yüzden ben henüz böyle bir ayar ile karşılaşmadım olsa da doğrulamak olabilir (bu yüzden nereye bakmak için soruyorum;)
Izzy

Ayarlar> Konum ve Güvenlik Ayarları, Sim Kart kilidi?
t0mm13b

Sorunuza bir cevap olan yorumu, AOSP kaynaklarında mevcut olarak silmek zorunda kaldım, (ilk kez sim
kartımın

1
Gingerbread için onaylanmadı (Motorola Droid² / Milestone² cihazımda CM7.2). Doğru, SIM PIN tarif edilen yerde yapılandırılabilir - ancak sadece açık / kapalı, "yalnızca açıldığında" için seçici değildir. Afedersiniz.
Izzy

3

Yapmaya çalıştığınız şeyi yapmanız gerektiğinden emin değilim.

Bunun yerine şunları yapabilirsiniz:

  • Modun Taskeretkinleştirilmesi / devre dışı bırakılmasıyla ilgili her şeyi açmak / kapatmak için iki görev ayarlayın Airplane.
  • Asla Airplanemodunuzu kullanma . TaskerGörevlerinizi kullanın .

Donanım radyosunu otomatik olarak açmak için herhangi bir uygulamanın etkin olup olmadığını görmek zorunda kalabilirsiniz . Bir uygulamanın arka plan senkronizasyonunu denemeye çalışıp çalışmadığını veya her neyse, devre dışı bırakılmış radyoları açmayı deneyebilir. Öyleyse, uygulamanın WiFi'nizi otomatik olarak açma özelliğini devre dışı bırakın. Bunu söylüyorum, çünkü Airplanebu cevabı denerseniz, mod kesinlikle beklenmedik WiFi bağlantılarını durdurdu, ancak artık değil.

Ayrıca kapatma sırasında Taskerher zaman Airplanemoda geçecek şekilde ayarlayabilirsiniz . Bu şekilde önyükleme sırasında PIN Kilidini görürsünüz.


Teşekkür ederim, zero2cx - ama yalnız benden istemiyorum ve özellikle Tasker için değil (Burada ayrı ayrı devre dışı bırakabileceğimin farkındayım; ancak hücre telsizini ayrı ayrı devre dışı bırakmak Milestone²'imle çalışmıyor). Bağlantılı soruların cevabında, diğer iki uygulamadan da bahsediyorum. Bildirildiğine göre uçak modunu kullandıklarından PIN'in girilmesini veya devre dışı bırakılmasını istiyorlar. Bu nedenle, belirli bir Tasker çözümü istemediğimi lütfen anlayın (birçok kişi Tasker'ı çok karmaşık buluyor ), aksine istediğim şeyi yapmak için genel bir çözüm: sadece uçak modundan dönüşte PIN isteğini devre dışı bırakın.
Izzy

Tamam. Öyleyse güldüm. Yazılım ile değiştirmenin bir yolu olmalı, ama daha nüanslı bir şekilde. Samsung bunu yapmanıza nasıl izin veriyor?
zero2cx

Söyleyemiyorum (Samsung cihazım yok). Ancak LG'nin yanı sıra birçok Samsung cihazında da yapılabileceğine dair raporlarım var. Milestone² cihazımda, mevcut SIM'im daha önce HTC Buzz / Wildfire'da olduğu için açıkça kontrol etmedim, bu amaçla SIM-PIN'i tamamen devre dışı bırakmak zorunda kaldım.
Izzy
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.