Android - 从家庭或历史中检测应用程序启动

时间:2011-03-27 07:55:28

标签: android android-activity count android-intent launch

从主屏幕/历史记录屏幕启动Android“应用程序”的最佳方法是什么?

基本上,我想要实现的是强制用户每次回到应用程序时登录到某些屏幕(即他们在登录后可以完全访问所有活动,但基本上我希望他们重新访问当他们通过主屏幕上的启动回到应用程序时进行身份验证)。

我知道之前已经问过类似的问题(例如如何记录应用程序的启动) - 但我所看到的都没有能够解决我的问题。所有想法都欢迎......

4 个答案:

答案 0 :(得分:14)

  

从主屏幕/历史记录屏幕启动Android“应用程序”的最佳方法是什么?

你不能,AFAIK。

  

基本上,我想要实现的是强制用户每次回到应用程序时登录到某些屏幕(即他们在登录后可以完全访问所有活动,但基本上我希望他们重新访问当他们通过在主屏幕上启动回到应用程序时进行身份验证。)

请使用合理,用户友好的登录系统。例如,如果您认为他们的登录凭据是基于时间过时的,那么强制他们再次登录。您可以通过检查onCreate()中的凭据来执行此操作,如果它们已过时,请致电startActivity()以启动您的登录活动(或弹出登录对话框,或者您登录的任何方式)

当然,更好的方法是完全跳过登录。除非这是“密码安全”,银行应用程序或其他需要高于平均安全性的内容,否则您无需登录,如果您的用户认为您的登录要求不必要,他们会感到烦躁。大多数移动应用程序不需要身份验证。

根据用户访问活动的方式强制登录是用户敌对的。您告诉用户设法将他们的手机用于除您的应用以外的其他东西,他们是二等公民。

答案 1 :(得分:14)

怎么样?
    if((getIntent().getFlags() & Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY )!=0) {
        Log.d(TAG, "Called from history");
    }

? 这使用simple Intent flag

答案 2 :(得分:2)

只需创建一个没有内容视图的stump活动,并在应用程序启动时启动其他活动

e.g。将以下内容放入onCreate:

Class<?> myclass;

if(isTimeForActivity1){
    myclass = Activity1.class;
}else if(isTimeForActivity2){
    myclass = Activity2.class;
}

startActivity(new Intent(this, myclass));
finish();

答案 3 :(得分:0)

尝试查看具有精心设计的解决方案的“OI Safe”应用程序(我不知道代码是否设计得很好,但是,你会看到:p)