Android - 检测应用程序从家庭或历史启动
Posted
技术标签:
【中文标题】Android - 检测应用程序从家庭或历史启动【英文标题】:Android - detecting application launch from home or history 【发布时间】:2011-07-23 19:19:19 【问题描述】:检测 android“应用程序”何时从主屏幕/历史屏幕启动的最佳方法是什么?
基本上,我想要实现的是强制用户每次返回应用程序时登录到某些屏幕(即他们一旦登录就可以完全访问所有活动,但基本上我希望他们重新 -当他们通过在主屏幕上启动返回应用程序时进行身份验证)。
我知道之前有人问过类似的问题(即如何记录应用程序的启动)-但我所见过的还没有一个能够解决我的问题。欢迎所有想法...
【问题讨论】:
【参考方案1】:怎么样
if((getIntent().getFlags() & Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY )!=0)
Log.d(TAG, "Called from history");
? 这使用了simple Intent flag。
【讨论】:
有人可以评论这个答案的有效性吗?这对其他比我更有经验的 Android 开发人员有意义吗? 您可以简单地对其进行测试 - 可在我们所有的设备上运行。如果没有,请告诉我。 请注意,这涉及应用程序启动,而不是从后台获取正在运行的应用程序。 FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY 标志在从最近或历史启动后重新创建活动时设置,但如果仅恢复活动,则不会设置 FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY。以上代码将返回 false ***.com/questions/24065146/…【参考方案2】:检测 Android“应用程序”何时从主屏幕/历史屏幕启动的最佳方法是什么?
你不能,AFAIK。
基本上,我想要实现的是强制用户每次返回应用程序时登录到某些屏幕(即他们一旦登录就可以完全访问所有活动,但基本上我希望他们重新 -当他们通过在主屏幕上启动返回应用程序时进行身份验证)。
请使用合理、用户友好的登录系统。例如,如果您觉得他们的登录凭据根据时间已过时,则强制他们再次登录。您可以通过检查 onCreate()
中的凭据来执行此操作,如果它们已过时,请致电 startActivity()
以启动您的登录活动(或弹出登录对话框,或以任何方式登录)。
当然,更好的方法是完全跳过登录。除非这是“密码保险箱”、银行应用程序或其他需要高于平均安全性的东西,否则您不需要他们登录,如果他们认为您的登录要求没有必要,您的用户会感到恼火。大多数移动应用程序不需要身份验证。
根据他们到达活动的方式强制登录是用户敌对的。您是在告诉那些屈尊将手机用于您的应用以外的事情的用户,他们是二等公民。
【讨论】:
感谢您的回复 - 不幸的是,这是针对客户的,它需要相当高的安全级别(数据非常敏感)。我认为我的搜索没有办法,而基于时间的会话正是我要去的地方。 客户又一次用飞溅的方式毁了一天>_ 你可以在activity暂停的时候关闭session,打开一个flag来关闭activity,在暂停的时候关闭activity。 我也担心客户不会接受 CommonWare 的回答。@Warpzit【参考方案3】:只需创建一个没有内容视图的树桩活动,并在应用程序启动时启动其他活动
例如将以下内容放入 onCreate:
Class<?> myclass;
if(isTimeForActivity1)
myclass = Activity1.class;
else if(isTimeForActivity2)
myclass = Activity2.class;
startActivity(new Intent(this, myclass));
finish();
【讨论】:
【参考方案4】:尝试查看具有设计良好解决方案的“OI Safe”应用程序(我不知道代码是否也设计得很好,但是,你会看:p)
【讨论】:
以上是关于Android - 检测应用程序从家庭或历史启动的主要内容,如果未能解决你的问题,请参考以下文章