要实现在锁屏状态下点击通知显示应用程序活动及解锁手机,需要进行以下步骤:
public class LockScreenService extends Service {
private final IBinder mBinder = new LocalBinder();
public class LocalBinder extends Binder {
public LockScreenService getService() {
return LockScreenService.this;
}
}
@Override
public IBinder onBind(Intent intent) {
return mBinder;
}
public void unlockScreen() {
KeyguardManager keyguardManager = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);
KeyguardManager.KeyguardLock keyguardLock = keyguardManager.newKeyguardLock("unlock");
keyguardLock.disableKeyguard();
PowerManager powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wakeLock = powerManager.newWakeLock(PowerManager.FULL_WAKE_LOCK |
PowerManager.ACQUIRE_CAUSES_WAKEUP |
PowerManager.ON_AFTER_RELEASE, "wakeup!");
wakeLock.acquire();
}
}
public class NotificationReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
NotificationManager notificationManager =
(NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.cancelAll();
//启动服务
Intent serviceIntent = new Intent(context, LockScreenService.class);
context.startService(serviceIntent);
//启动活动
Intent activityIntent = new Intent(context, MainActivity.class);
activityIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK |
Intent.FLAG_ACTIVITY_CLEAR_TOP |
Intent.FLAG_ACTIVITY_SINGLE_TOP);
context.startActivity(activityIntent);
}
}