我是Android开发中的新手。我想知道如果设备解锁后如何启动服务,如果设备未解锁则停止服务。我找到了有关使用ACTION_USER_PRESENT
的信息,但是它可以正常工作,但是在我的服务启动之前,它需要锁定然后解锁。
答案 0 :(得分:0)
您可以收听ACTION_SCREEN_ON和ACTION_SCREEN_OFF。
请注意,您必须致电registerReceiver来听取这些意图。只需在AndroidManifest.xml中注册它们就行不通了。
答案 1 :(得分:0)
如果您在Manifest
文件中为BroadcastReceiver
声明操作,那么只有在您注册广播接收器时它才会起作用。当您的申请被关闭时,它将无法运作。所以在服务中注册接收器。
为此创建一个注册接收器的服务
public class UnlockService extends Service {
并注册该服务的SCREEN_ON
和SCREEN_OFF
BroadcastReceiver
onCreate
@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);
}
并在您必须开始检测事件的任何活动中注册该服务。
Intent service = new Intent(CurrentActivity.this, UnlockService.class);
startService(service);
它会注册BroadcastReceiver
来检查SCREEN_ON
和SCREEN_OFF
个事件。
然后声明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
}
}
并完成。