nonaktifkan permintaan PIN setelah mode pesawat

10

Ketika menghidupkan telepon, seseorang secara default diminta untuk memasukkan SIM-PIN - yang merupakan langkah pengamanan yang baik, untuk mencegah "orang asing" menyebabkan Anda dikenai biaya. Sekarang hal yang sama berlaku ketika kembali dari mode pesawat: kita harus memasukkan SIM-PIN lagi. Yang membuat penghemat energi tertentu tidak berguna: jika suatu aplikasi mis memasuki mode pesawat pada kehilangan sinyal (lihat: Apa yang dimaksud dengan Siaga sel dan bagaimana saya bisa menghindarinya dari memakan baterai saya? ), Itu tidak akan dapat kembali ke operasi normal tanpa interaksi pengguna .

Saya mencari cara untuk menonaktifkan selektif ini: Minta permintaan PIN aktif saat menghidupkan perangkat - tetapi tidak diminta untuk SIM-PIN saat kembali dari mode pesawat.

Jangan tidak bingung ini dengan "Pengaman tombol": Saya tidak bertanya tentang kunci layar (PIN / pola / password). Di sini saya tahu jalan saya, karena ada API untuk aplikasi untuk digunakan (jadi saya bisa mematikan sementara ini dengan Tasker ).

Saya tahu ini bekerja dengan perangkat Samsung - tetapi saya lebih suka menginginkan solusi independen perangkat yang bekerja untuk semua produsen.

Izzy
sumber
2
Betulkah! Biarkan saya kutip dari pertanyaan di atas: Saya sedang mencari cara untuk menonaktifkan ini secara selektif - tidak sepenuhnya menonaktifkan cek. Saya tahu ini bisa sepenuhnya dinonaktifkan (yang saat ini saya gunakan) - tetapi saya ingin menonaktifkannya hanya untuk beralih kembali dari mode Pesawat, bukan untuk startup perangkat.
Izzy

Jawaban:

1

PENOLAKAN

  1. Ini perlu root. Tidak ada jalan lain untuk itu.
  2. Perangkat Anda harus menjalankan Android 4.1+
  3. Solusi ini mungkin terlalu canggih untuk beberapa pengguna. Cobalah untuk menerapkannya ketika Anda tahu apa yang Anda lakukan.
  4. Saya tidak akan bertanggung jawab jika terjadi kesalahan atau Ragnarok mulai selama proses. Anda melakukan ini dengan risiko Anda sendiri. Lanjutkan dengan hati hati.
  5. Saya bukan penulis atau yang berafiliasi dengan salah satu mod yang disebutkan. Saya hanya menemukan ini dan saya membagikannya untuk keuntungan Anda.

WORKAROUND

Saya menemukan solusi untuk masalah yang bekerja dengan baik pada Samsung Galaxy S2 dengan Cyanogenmod 10.2 dan Dorimanx Kernel 9.41 terinstal. Langkah-langkah yang diperlukan adalah sebagai berikut:

  1. Pastikan perangkat Anda di-root.

  2. Unduh dan instal Xposed Framework Installer .

  3. Ketika Xposed meminta root di mana saja dalam waktu dekat, berikan saja .

  4. Buka aplikasi dan klik Framework-Tab.

  5. Klik Install/Update.

  6. Mulai ulang .

  7. Unduh dan pasang Jelly Bean 4.x Airplane Mode Helper .

  8. Buka Xposed Framework Installer-App lagi dan pilih Modules.

  9. Centang (aktifkan) Jelly Bean 4.x Airplane Mode Helper.

  10. Mulai ulang .

  11. Terbuka Jelly Bean 4.x Airplane Mode Helper.

  12. Centang (aktifkan) Diaktifkan .

  13. Mulai ulang .

Itu dia! Mode Pesawat harus bekerja lagi seperti pada versi Android sebelumnya dan tidak lagi meminta SIM-PIN saat dimatikan. Meskipun demikian masih tetap pada saat startup, sehingga menjaga SIM-Card Anda agak aman. Saya mengatur prosedur penghematan baterai otomatis dengan Llama Location Profiles mirip dengan yang dijelaskan di sini (Thx a bunch, Izzy) dan berfungsi dengan sempurna.

Semoga beruntung, teman-teman!

FuzzyQ
sumber
1
Terima kasih banyak atas jawaban Anda! Saya baru saja mengeditnya untuk meningkatkan pemformatan (daftar) dan menambahkan fakta itu membutuhkan JB +. Karena perangkat saya belum menjalankan JB, saya tidak dapat mengujinya - tetapi saya menduga Anda mungkin telah melewatkan bagian paling penting dari pertanyaan (setidaknya Anda tidak menyebutkannya): Apakah ia meminta SIM-PIN ketika kembali dari Pesawat mode - atau bisakah itu dilewati dengan cara ini?
Izzy
1
Yakinlah, saya benar-benar mendapatkan masalah Anda dan jawaban saya persis seperti yang Anda cari;) - ia tidak meminta SIM-PIN ketika kembali dari Mode Pesawat, tetapi masih dilakukan saat boot. Dengan demikian, keamanan Anda disimpan tetapi skrip hemat baterai Anda berfungsi kembali. Terima kasih untuk peningkatan format!
FuzzyQ
Saya menambahkan informasi yang paling penting karena Anda benar - Saya benar-benar lupa menyebutkan fakta bahwa ini sebenarnya menghilangkan keharusan untuk membuka kunci SIM Anda lagi setelah mode pesawat.
FuzzyQ
1
Dalam hal ini, persis seperti yang saya kejar: Pekerjaan otomatis berfungsi tanpa intervensi manual, tetapi perangkat ini masih terlindungi ketika datang ke "inisialisasi" (yaitu mengikuti boot). Luar biasa! Saya mendukungnya untuk saat ini. Karena saya juga tidak dapat menguji solusi t0mm13b, saya harus mempercayai Anda mengenai "terima" saya: ini sepertinya solusi yang paling menjanjikan (dan gratis!) Sejauh ini, meskipun terbatas pada JB +.
Izzy
Kau tahu, lucu sekali aku sampai di sana. Saya menemukan pertanyaan & jawaban Anda untuk masalah siaga sel dan segera berakhir dengan masalah mode pesawat-SIM-PIN. Karena saya sudah menggunakan Xposed Framework untuk beberapa waktu sekarang, saya punya ide untuk mencari modul xposed yang akan menangani masalah ini. :)
FuzzyQ
8

Jawabannya ada di sumber ... sepertinya properti yang meminta pin-lock dibangun ke dalam build.propatau default.prop.

Lihatlah referensi yang ditemukan dalam sumber TelephonyManager , antara baris 735 dan 755. Untuk singkatnya,

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

Kuncinya adalah TelephonyProperties.PROPERTY_SIM_STATEyang dirujuk di tempat lain , antara baris 94 dan 98.

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

Setelah mencari melalui kode sumber di sini di mesin saya, saya akan memberi Anda gagasan tentang seberapa sering metode getSimStateini disebut, perhatikan nama-nama sumber java untuk mengetahui bagaimana terintegrasi dalam Android, tidak hanya di lapisan Telephony tetapi di tempat lain.

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

Apakah nama-nama file itu memberi petunjuk, ya, di layar kunci ...

Teori

Ini membutuhkan root pada titik ini, dengan memanggil adb shelldan memanggil getpropdan setpropuntuk melakukan ini, satu-satunya bagian adalah ini, dengan memohon

adb shell getprop akan mendapatkan kembali informasi terkait seperti yang ditunjukkan di bawah ini

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

Properti halus ini tampaknya secara dinamis bertahan menjadi toko properti pendukung, dari saat powering up dan disesuaikan sesuai, berdasarkan sejumlah hal, layanan, dan belum lagi secara tidak sengaja menjatuhkan handset yang dapat membuat kartu SIM keluar. pembacanya yang akan mengubah status kartu menjadi " tidak siap " atau " tidak dikenal ". ( ref: system / core / include / cutils / properties.h dan system / core / toolbox / [ getprop | setprop ] .c)

Sekarang pada titik ini, secara teoritis, dengan mengaktifkan setprop sebelum mengunci layar, itu bisa diatasi sementara, tapi sekali lagi, itu bisa dipasang kembali oleh lapisan telepon! Belum pernah mencobanya! Yang mengarah ke ini ...

Kesimpulan

Satu- satunya cara ini dapat dimatikan, adalah untuk secara efektif menonaktifkan permintaan pin-lock pada kartu sim yang sebenarnya . Di situlah bit-flag "magic" disimpan di situ, di mana layer RIL telepon membacanya melalui perpustakaan htc / samsung / qualcomm yang dipatenkan, dan itu akan mencegah propragasi dari tetap adanya properti "PIN_REQUIRED" melalui lapisan-lapisan Android.

Kemungkinan solusi, hanya untuk Pengembang Android :)

Ini membutuhkan peretasan dan kompilasi ulang sumber. Untuk mode pesawat, ketika memasuki mode itu dan meninggalkan mode pesawat, properti dapat dipecah menjadi dua, gsm.sim.state dapat dibiarkan apa adanya, tetapi menyusun properti lain, seperti ini, gsm.sim.state. airplane.mode dan tetapkan nilai di sepanjang baris SIM_STATE_PIN_NOT_REQUIRED, dan modifikasi pemeriksaan mode pesawat, untuk membaca properti itu dan jika diatur, jangan tampilkan kotak dialog pin, jika tidak seperti biasanya, minta.

t0mm13b
sumber
Terima kasih atas penjelasan terperincinya, t0mm13b! Jadi kita harus berasumsi bahwa Samsung dan LG telah mengubah kode di semua tempat yang Anda sebutkan - jika laporan yang saya dapatkan tentang perangkat Samsung dan LG (di mana orang mengatakan mereka dapat menonaktifkan pemeriksaan PIN SIM secara terpisah, seperti dijelaskan dalam pertanyaan saya) adalah benar?
Izzy
Terima kasih lagi! Jika Anda tahu bahwa menemukan pengaturan itu di CM, dan karena ketika itu ada di sana, ini sudah akan sangat membantu - karena CM tersedia untuk banyak perangkat :) Perangkat saya semuanya menjalankan CM 7.x, jadi saya dapat memverifikasi - meskipun saya belum menemukan pengaturan seperti itu (itulah sebabnya saya meminta tempat untuk mencari;)
Izzy
Coba Pengaturan> Pengaturan Lokasi & Keamanan, kunci Kartu Sim?
t0mm13b
Saya harus menghapus komentar yang merupakan jawaban untuk pertanyaan Anda di sana dalam waktu yang sama, yang ada di sumber-sumber AOSP, (pertama kali melihatnya sebagai kartu sim saya sudah dibuka dan tetap bebas dari kunci pin permintaan tetap)
t0mm13b
1
Tidak dikonfirmasi untuk Roti Jahe (CM7.2 pada Motorola Droid² / Milestone²) saya. Benar, PIN SIM dapat dikonfigurasikan di tempat yang dijelaskan - tetapi hanya hidup / mati, tidak selektif untuk "hanya saat dinyalakan". Maaf.
Izzy
3

Saya tidak yakin Anda perlu melakukan apa yang ingin Anda lakukan.

Anda mungkin, sebagai gantinya:

  • Atur dua Taskertugas untuk mengaktifkan / menonaktifkan semua yang Airplanedilakukan oleh mode yang mengaktifkan / menonaktifkan .
  • Jangan pernah benar-benar menggunakan Airplanemode Anda . Gunakan Taskertugas Anda .

Anda mungkin harus melihat apakah ada aplikasi yang diaktifkan untuk secara otomatis menghidupkan radio perangkat keras. Tonton untuk melihat apakah suatu aplikasi mencoba menyinkronkan latar belakang atau apa pun, mereka mungkin mencoba mengaktifkan radio yang dinonaktifkan. Jika demikian, nonaktifkan kemampuan aplikasi itu untuk secara otomatis mengaktifkan misalnya WiFi Anda. Saya mengatakan ini karena Airplanemode pasti menghentikan koneksi WiFi yang tidak terduga sebelumnya tetapi tidak lagi, jika Anda mencoba jawaban ini.

Anda juga dapat mengatur Taskeruntuk selalu masuk ke Airplanemode saat shutdown. Dengan begitu Anda akan melihat Kunci PIN saat boot.

nol2cx
sumber
Terima kasih, zero2cx - tapi saya tidak meminta saya sendirian, dan tidak terutama untuk Tasker (saya tahu fakta bahwa saya dapat menonaktifkan beberapa hal secara terpisah di sini; tetapi menonaktifkan radio sel secara terpisah tidak bekerja dengan Milestone² saya). Dalam jawaban pertanyaan terkait, saya juga menyebutkan dua aplikasi lain. Mereka dilaporkan meminta PIN untuk dimasukkan atau dinonaktifkan, karena mereka menggunakan mode pesawat. Jadi tolong mengerti saya tidak ingin solusi Tasker tertentu (karena banyak yang menemukan Tasker terlalu kompleks), tetapi lebih merupakan solusi umum untuk melakukan apa yang saya minta: nonaktifkan permintaan PIN setelah kembali dari mode pesawat saja.
Izzy
Baik. Saya bingung, lalu. Pasti ada cara untuk beralih dengan perangkat lunak, tetapi dengan cara yang lebih bernuansa. Bagaimana Samsung memungkinkan Anda melakukannya?
zero2cx
Saya tidak tahu (tidak punya perangkat Samsung). Tapi saya punya laporan bahwa itu bisa dilakukan pada banyak (semua?) Perangkat Samsung serta dengan LG. Pada Milestone² saya, saya tidak secara eksplisit memeriksa, karena SIM saya saat ini ada di HTC Buzz / Wildfire saya sebelumnya, apakah saya harus menonaktifkan SIM-PIN untuk tujuan ini.
Izzy