मेरे पास फोन की स्क्रीन के चार राज्यों को निर्धारित करने के लिए एक फ़ंक्शन है: स्क्रीन पर स्क्रीन, स्क्रीन बंद करें, लॉक के साथ स्क्रीन, लॉक के बिना स्क्रीन। मेरा कार्यमें विफलता परिणाम लौटाएं KeyguardRestrictedInputMode()
private KeyguardManager keyguardManager;
public String getScreenStatus()
{
String sreen_State="unknown";
keyguardManager = (KeyguardManager) getSystemService(KEYGUARD_SERVICE);
PowerManager pm = (PowerManager) getApplicationContext().getSystemService(Context.POWER_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT_WATCH) {
if (pm.isInteractive()) {
sreen_State="screen_on";
if(!keyguardManager.inKeyguardRestrictedInputMode()) {
sreen_State="screen_on_no_lock_screen";
}else{
Log.i(TAG, "screen_on_lock_screen");
sreen_State="screen_on_lock_screen";
}
}
else {
sreen_State="screen_off";
}
}
else if(Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT_WATCH){
if(pm.isScreenOn()){
sreen_State="screen_on";
if(!keyguardManager.inKeyguardRestrictedInputMode()) {
Log.i(TAG, "screen_on_no_lock_screen");
sreen_State="screen_on_no_lock_screen";
}else{
Log.i(TAG, "screen_on_lock_screen");
sreen_State="screen_on_lock_screen";
}
}
else {
mIsScreenOn=false;
sreen_State="screen_off";
}
}
return sreen_State;
}
उपर्युक्त फ़ंक्शन स्क्रीन के राज्यों को सही करता है। हालांकि, जब मैं एक और कोड जोड़ता हूं तो इसमें त्रुटि होती है:
KeyguardManager.KeyguardLock
kl = keyguardManager.newKeyguardLock("MyKeyguardLock");
if(index.equals("1"))
kl.disableKeyguard();
else if(indexequals("2"))
kl.reenableKeyguard();
getScreenStatus();
सूचकांक एक बटन दबाकर बदल सकता है। अब, स्क्रीन की गलत स्थिति होती है। यह हमेशा screen_on_lock_screen
लौटाता है, हालांकि स्क्रीन screen_on_no_lock_screen
में है। मैं अपनी समस्या को कैसे ठीक कर सकता हूं?
क्या आप और कोड जोड़ सकते हैं? कौन सा वर्ग और विधि में दूसरा कोड स्निपेट है? – Vall0n