উত্তরটি উত্সটিতে রয়েছে ... মনে হচ্ছে পিন-লক করার অনুরোধ করার সম্পত্তিটি অন্তর্নির্মিত build.prop
বা default.prop
।
রেফারেন্স TelephonyManager পাওয়া কটাক্ষপাত আছে উৎস লাইন 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
বলা হয় তার ধারণা দেব , জাভা উত্সের নামগুলি কেবলমাত্র টেলিফোনি স্তরে নয়, তবে এটি অ্যান্ড্রয়েডের মধ্যে কীভাবে সংহত করা হয়েছে তা খতিয়ে দেখতে অন্যত্র।
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
ডাকে getprop
এবং কল করে এবং এটি setprop
করার জন্য, কেবলমাত্র অংশটি হ'ল অনুরোধ করে
adb shell getprop
নীচে প্রদর্শিত হিসাবে প্রাসঙ্গিক তথ্য ফিরে পাবেন
sh-4.1# getprop
[gsm.sim.state]: [READY]
এই সূক্ষ্ম সম্পত্তিটি শক্তি প্রয়োগের মুহুর্ত থেকে, ব্যাকিং প্রোপার্টি স্টোরটিতে অবিচ্ছিন্নভাবে অবিচলিত বলে মনে হয় এবং সংখ্যার জিনিস, পরিষেবা, এবং ভুলভাবে হ্যান্ডসেটটি বাদ দেওয়ার কথা উল্লেখ না করে যা হ'ল সিম-কার্ডটি ছিটকে যেতে পারে এটির পাঠক যা কার্ডের স্থিতিকে " প্রস্তুত নয় " বা " অজানা " তে পরিবর্তন করবে। ( রেফ: সিস্টেম / কোর / অন্তর্ভুক্ত / cutils / বৈশিষ্ট্য। h এবং সিস্টেম / কোর / সরঞ্জামবক্স / [ getprop | সেটপ্রপ ]। সি)
এখন এই মুহুর্তে, তাত্ত্বিকভাবে, স্ক্রিনটি লক করার আগে সেটপ্রপ আহ্বান করে, এটি অস্থায়ীভাবে সংক্ষিপ্ত করা যেতে পারে, তবে তারপরে আবার টেলিফোনি স্তরটি পুনরায় সেট করতে পারে! চেষ্টা করে দেখেনি! যা এর দিকে নিয়ে যাচ্ছে ...
উপসংহার
এটি কেবলমাত্র বন্ধ করা যায়, আসল সিম-কার্ডের পিন-লক অনুরোধটিকে কার্যকরভাবে অক্ষম করা । সেখানেই "ম্যাজিক" বিট-ফ্ল্যাগ সংরক্ষণ করা হয়েছে, যেখানে টেলিফোনের আরআইএল স্তরটি মালিকানাধীন এইচটিসি / স্যামসুং / কোয়েলকমের লাইব্রেরির মাধ্যমে এটি পড়তে পারে এবং এটি "PIN_REQUIRED" এর মাধ্যমে সম্পত্তিটির স্থায়ীত্বের প্রতিরোধকে আটকাতে পারে অ্যান্ড্রয়েড এর স্তর।
কেবলমাত্র অ্যান্ড্রয়েড বিকাশকারীদের জন্য একটি সম্ভাব্য ওয়ার্ক-ওয়ার্ড :)
এর জন্য উত্সটি হ্যাকিং এবং পুনরায় সংশোধন করা প্রয়োজন।
বিমান মোডের জন্য, সেই মোডে প্রবেশ করার সময় এবং বিমান মোডটি ছেড়ে যাওয়ার সময়, সম্পত্তিটি দুটি ভাগে বিভক্ত হতে পারে, gsm.sim.state যেমন আছে তেমন রেখে দেওয়া যেতে পারে, তবে অন্য কোনও সম্পত্তি তৈরি করুন, এই জাতীয় কিছু, gsm.sim.state। বিমানটি.মোড করুন এবং SIM_STATE_PIN_NOT_REQUIRED
সেই সম্পত্তিটি পড়ার জন্য বিমান মোড চেকটি সংশোধন করুন এবং সেটির জন্য সেট করা থাকলে পিন ডায়ালগ বক্সটি প্রদর্শন করবেন না, অন্যথায় সাধারণভাবে এটি প্রম্পট করে।