我有一个应用程序,您必须像使用密码的用户一样登录。
这个应用程序需要是安全的,所以当用户在一段确定的时间(比如说,5 分钟)内没有触摸屏幕时,它需要注销用户。
问题是,一旦用户登录,他可以进行许多活动,而不仅仅是一个,我想知道Android中是否有办法知道用户是否可以在几分钟后退出。
我正在考虑使用 onInterceptTouchEvent(MotionEvent ev) 方法,但问题是,¿我必须在每个活动中使用此方法吗?¿ 在 Android 中还有另一种更简单的管理方法吗?
非常感谢!
我有一个应用程序,您必须像使用密码的用户一样登录。
这个应用程序需要是安全的,所以当用户在一段确定的时间(比如说,5 分钟)内没有触摸屏幕时,它需要注销用户。
问题是,一旦用户登录,他可以进行许多活动,而不仅仅是一个,我想知道Android中是否有办法知道用户是否可以在几分钟后退出。
我正在考虑使用 onInterceptTouchEvent(MotionEvent ev) 方法,但问题是,¿我必须在每个活动中使用此方法吗?¿ 在 Android 中还有另一种更简单的管理方法吗?
非常感谢!
1.实现此目的的一种方法System.currentTimeMillis()是在用户登录应用程序时获取当前时间(使用 )。让我们把它保存在一个变量t1中。
2.启动一个服务,它将监视/检查/执行以下事情:
2a. 每当用户触摸您的任何活动时,将值设置t1为当前时间。
2b。连续获取当前时间 ( ) 并计算和(ie )t2之间的时间间隔。如果此延时等于或大于 5 分钟,您可以调用该函数。t1t2t2 - t1logOut()
是的,您必须从每个活动中通知后台服务用户存在。尽管Carnal提供的解决方案将大大减少您实现这一目标的努力。
Activity您可以像这样创建一个,而不是在 every 上实现Activity这个:
public class BaseActivity extends Activity
并onInterceptTouchEvent在您的BaseActivity.
然后从所有其他Activities你将不得不扩展BaseActivity
更新:onTouch如果你想在整个屏幕上监听事件,
你将不得不使用。这要求在您的每个 xml 文件中Activity,您必须为您的 xml( 、、或其他)id的根视图提供一个。因此,为了让您从其他人那里获取输入,您必须将您的根视图传递给它,如下所示:LinearlayoutRelativelayoutFramelayoutBaseActivityActivities
public class MyActivity extends BaseActivity{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.my_activity);
super.setRootView(findViewById(R.id.rootView));
}
}
public class BaseActivity extends Activity implements OnTouchListener{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
public void setRootView(View rootView){
rootView.setOnTouchListener(this);
}
public boolean onTouch(View v, MotionEvent event) {
Log.d("BaseActivity", "onTouch!");
return super.onTouchEvent(event);
}
}