我是一個在android開發中的新手機。我想知道如果設備被解鎖,如何啓動服務,如果設備沒有被阻止,該如何停止。我找到了有關使用ACTION_USER_PRESENT
的信息,但它工作正常,但需要先鎖定設備然後解鎖,然後才能啓動服務。當設備被鎖定時停止服務,當它不是時啓動它
回答
您可以收聽ACTION_SCREEN_ON和ACTION_SCREEN_OFF。
請注意,您必須致電registerReceiver才能聽取這些意圖。只需在AndroidManifest.xml中註冊它們將不起作用。
如果您在Manifest
文件中聲明BroadcastReceiver
的操作,那麼它只在註冊廣播接收器時起作用。而當你的應用程序關閉時,它不起作用。所以註冊接收機服務。
對於創建服務註冊一個接收器
public class UnlockService extends Service {
並註冊SCREEN_ON
和服務
@Override
public void onCreate() {
super.onCreate();
IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON);
filter.addAction(Intent.ACTION_SCREEN_OFF);
BroadcastReceiver mReceiver = new ScreenUnlockReceiver();
registerReceiver(mReceiver, filter);
}
的SCREEN_OFF
BroadcastReceiver
onCreate
並註冊的任何活動,從中您必須啓動該服務檢測事件。
Intent service = new Intent(CurrentActivity.this, UnlockService.class);
startService(service);
它會檢查SCREEN_ON
和SCREEN_OFF
註冊事件BroadcastReceiver
。
然後聲明ScreenUnlockReceiver
public class ScreenUnlockReceiver extends BroadcastReceiver {
和onReceive
方法
@Override
public void onReceive(final Context context, Intent intent) {
String action = intent.getAction();
if(Intent.ACTION_SCREEN_ON.equals(action)) {
// start the service
} else if(Intent.ACTION_SCREEN_OFF.equals(action)) {
// stop the service
}
}
,做寫。
但是,當用戶解鎖設備(按電源按鈕),他看到鎖定屏幕。 (這裏將工作action_screen_on)所以,最後我們得到了工作服務和鎖定電話。 –
使用設備管理員檢查登錄成功或失敗。 – ELITE
- 1. 當我啓動它時,服務器RMI會自動停止
- 2. 當它被鎖定時解鎖drawer_layout
- 3. 當服務停止時,服務啓動的AsyncTask是否完成?
- 4. 當設備被鎖定時顯示AlertDialog
- 5. 當Android設備被鎖定時,RxJava間隔和超時會偶爾停止
- 6. 我需要啓動一個計時器,當我的設備屏幕被鎖定,並停止它時,屏幕解鎖提供超時沒有發生
- 7. 當我不需要它時停止RavenDB服務
- 8. 當服務器被終止時,Ruby TCPSocket不會注意到它
- 9. 當Android設備被鎖定時暫停TimerTask並在解鎖時恢復回
- 10. 當它停止時自動啓動java應用程序
- 11. 設備鎖定時立即停止服務
- 12. requirejs - 構造它被定義時,而不是當它是必需
- 13. 當活動停止時不停止服務
- 14. 當它停止工作時重新啓動Python.py
- 15. 當屏幕被鎖定時計時器停止Windows Phone 8
- 16. Fabric將停止Redis服務器,但它不會再啓動它
- 17. 當設備被鎖定時是否可以播放聲音?
- 18. 如何重新啓動Android服務,當它被重啓中斷?
- 19. 當設備被鎖定時AVAudioPlayer不會播放
- 20. 當設備被鎖定屏幕時,處理程序不工作
- 21. 當設備被鎖定時UILocalNotification不會觸發
- 22. 當外部進程啓動時停止服務
- 23. 當我設置它時,AutoResetEvent不會停止
- 24. 當它到達特定幀時停止動畫片段
- 25. USB設備拔出時停止服務
- 26. 當它發生故障時自動重啓jira服務
- 27. 當服務停止時,所有線程都會被終止嗎?
- 28. 當設備睡着時觸發的振動不會停止
- 29. 當它達到零時停止定時器
- 30. 當Windows 2012 Server用戶被鎖定時,駱駝停止使用
你可以在屏幕上打開和關閉..因爲使用類型爲'USER_PRESENT'類型的廣播接收器 – ELITE
也許你會發現一些有用的東西在這[post](http://stackoverflow.com/questions/4522905/how - 當停止服務時,屏幕關閉) –