2016-02-26 43 views
1

我是一個在android開發中的新手機。我想知道如果設備被解鎖,如何啓動服務,如果設備沒有被阻止,該如何停止。我找到了有關使用ACTION_USER_PRESENT的信息,但它工作正常,但需要先鎖定設備然後解鎖,然後才能啓動服務。當設備被鎖定時停止服務,當它不是時啓動它

+0

你可以在屏幕上打開和關閉..因爲使用類型爲'USER_PRESENT'類型的廣播接收器 – ELITE

+0

也許你會發現一些有用的東西在這[post](http://stackoverflow.com/questions/4522905/how - 當停止服務時,屏幕關閉) –

回答

0

如果您在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_OFFBroadcastReceiveronCreate並註冊的任何活動,從中您必須啓動該服務檢測事件。

Intent service = new Intent(CurrentActivity.this, UnlockService.class); 
startService(service); 

它會檢查SCREEN_ONSCREEN_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 
    } 
} 

,做寫。

+0

但是,當用戶解鎖設備(按電源按鈕),他看到鎖定屏幕。 (這裏將工作action_screen_on)所以,最後我們得到了工作服務和鎖定電話。 –

+0

使用設備管理員檢查登錄成功或失敗。 – ELITE

相關問題