解除使用FLAG_SHOW_WHEN_LOCKED显示的活动

时间:2015-03-17 22:11:30

标签: android android-activity lockscreen dismiss

当用户位于特定区域(获得GPS)时,设备被锁定时,我在后台服务的锁屏中显示活动。

活动有以下代码:

    protected void onCreate(Bundle savedInstanceState) {
        ...
        getWindow().addFlags(
            WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD|
            WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED|
            WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
        ...
    }

它正在从这样的服务中调用:

    if (inArea){
        PowerManager pm = (PowerManager)mContext.getSystemService(Context.POWER_SERVICE);
        if (pm.isScreenOn()==false){
            Intent wakeIntent = new Intent(mContext, mClass);
            wakeIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            mContext.startActivity(wakeIntent);
        }
    }

当用户退出该区域时,不应再在锁屏中看到该活动。但是我无法得到它。

当用户的GPS在区域外时我尝试了这个:

    if (!inArea){
        android.os.Process.killProcess(android.os.Process.myPid());
        System.exit(1);
    }

但是活动仍然存在于锁屏中。

有关如何实现这一目标的任何建议吗?

1 个答案:

答案 0 :(得分:2)

当用户退出时播放服务。让活动为该广播注册广播接收器。如果收到该广播,请让它自己完成()。

或者十几个变种 - 他们都归结为让应用程序在不再出现在该区域时获得通知并自行终止。