2016-09-25 10 views
12

Udało mi się zablokować/odblokować mój ekran za pomocą DevicePolicyManager i KeyguardManager w Androidzie L. To działało dobrze, gdy blokuję/odblokowuję ekran przy użyciu trybu przesunięcia (bez zabezpieczeń). Jednak nie mogę zablokować/odblokować go po zablokowaniu/odblokowaniu ekranu przy użyciu trybu wzorca i hasła (wyższe bezpieczeństwo). Czy możliwe jest zablokowanie/odblokowanie ekranu o wysokim poziomie bezpieczeństwa przy użyciu DevicePolicyManager i KeyguardManager. ? To właśnie zrobiłem:Jak zablokować/odblokować ekran w trybie Wzór/hasło w systemie Android?

Zauważ, że używam go w usłudze.

Odpowiedz

0

Problem prawdopodobnie polega na tym, że nie wywołujesz okna z kontekstu.

keyguardManager = (KeyguardManager) getSystemService(KEYGUARD_SERVICE); 

Korzystanie the following snippet:

//Get the window from the context 
WindowManager wm = Context.getSystemService(Context.WINDOW_SERVICE); 

//Unlock 
//http://developer.android.com/reference/android/app/Activity.html#getWindow() 
Window window = getWindow(); 
window.addFlags(wm.LayoutParams.FLAG_DISMISS_KEYGUARD); 

//Lock device 
DevicePolicyManager mDPM; 
mDPM = (DevicePolicyManager)getSystemService(Context.DEVICE_POLICY_SERVICE); 

z następującym zastrzeżeniem:

Note
dla następujących pracować trzeba odniesienie do działalności, która może rozmawiać z okna obiekt.

Również związane How to Lock/Unlock screen programmatically? i Android screen lock/ unlock programmatically

+1

Po pierwsze, używam funkcji w serwisie, myślę, że twoja opcja nie jest odpowiednia dla mojej sprawy. Po drugie, wypróbowałem to w moim kodzie (usłudze) i to nie działa – user3051460

0

Wspomniałeś, że używasz kodu w Serwisie, ale podczas konstruowania adminComponent componentName sprzeciw podać MainActivity.this jako kontekstu! MainActivity.this może mieć wartość NULL, jeśli Twoja MainActivity nie jest aktualnie uruchomiona.

Proponuję zainicjować adminComponent z klasą usług jako kontekst.

Powiązane problemy