关闭显示 FLAG_SHOW_WHEN_LOCKED 的 activity
Dismiss activity shown with FLAG_SHOW_WHEN_LOCKED
当用户在特定区域(获取 GPS)时设备处于锁定状态时,我在后台服务的锁屏界面中显示 activity。
activity有这个代码:
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);
}
}
当用户退出该区域时,activity 不应再在锁屏中看到。但是我听不懂。
当用户的 GPS 不在该区域时,我尝试了这个:
if (!inArea){
android.os.Process.killProcess(android.os.Process.myPid());
System.exit(1);
}
但是 activity 仍然存在于锁屏中。
关于如何实现这一点有什么建议吗?
当用户退出时广播服务。让 activity 为该广播注册一个广播接收器。如果它收到该广播,让它自己完成()。
或者这方面的十几种变体 - 它们都归结为当应用程序不在该区域时通知应用程序并自行终止。
当用户在特定区域(获取 GPS)时设备处于锁定状态时,我在后台服务的锁屏界面中显示 activity。
activity有这个代码:
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);
}
}
当用户退出该区域时,activity 不应再在锁屏中看到。但是我听不懂。
当用户的 GPS 不在该区域时,我尝试了这个:
if (!inArea){
android.os.Process.killProcess(android.os.Process.myPid());
System.exit(1);
}
但是 activity 仍然存在于锁屏中。
关于如何实现这一点有什么建议吗?
当用户退出时广播服务。让 activity 为该广播注册一个广播接收器。如果它收到该广播,让它自己完成()。
或者这方面的十几种变体 - 它们都归结为当应用程序不在该区域时通知应用程序并自行终止。