android屏幕锁屏后在某个界面里需要重新输入密码
来源:互联网 发布:淘宝上历史报价 编辑:程序博客网 时间:2024/05/17 06:33
最近做项目,用户需要在账单界面加入四位简码输入验证的功能,类似于支付宝那样的,屏幕黑屏以后,再次打开,再次进入账单界面的 时候需要重新输入四位简码,主界面我们是用Activity实现,几个模块的一级界面都是fragment,因此上述需求涉及到三个主要问题,
第一个问题,账单界面的fragment如果用户输入正确了,该fragment如何通知主界面Activity,这个问题的本质是fragment和Activity之间通信的问题。解决办法就是采用回调函数,具体点说,就是在fragment里写个内部类的接口,然后让Activity来继承这个接口,并在Activity里面去实现,那么fragment怎么和Activity关联到一起呢,常识问题,fragment启动时会调用生命周期的onAttach函数,它的函数原型如下:
@Overridepublic void onAttach(Activity activity) {// TODO Auto-generated method stubsuper.onAttach(activity);}很明显,这个参数就是主Activity,因此在这里将接口绑定到Activity就行了。当然了,在fragment里要声明一个内部内接口的变量,比如命名为mListener。
private OnGoHomeAndLockListener mListener;//@Overridepublic void onAttach(Activity activity) {// TODO Auto-generated method stubsuper.onAttach(activity);try { <span style="color:#ff6666;">mListener = (OnGoHomeAndLockListener) activity;</span> } catch (ClassCastException e) { Toast.makeText(getActivity(), activity.toString() + "没有实现回调接口哦 OnGoHomeAndLockListener", Toast.LENGTH_SHORT).show(); //throw new ClassCastException(activity.toString() + " must implementOnArticleSelectedListener"); }}
fragment里的接口的定义如下,这是个内部类,要写在fragment子类里面
//返回主界面回调接口public interface OnGoHomeAndLockListener { public void onGoHomeAndLockListener(); }
当然,主Activity还要继承该接口,具体代码如下:
public class IndexPageActivity extends FragmentActivity implementsOnClickListener,OnGoHomeListener,OnGoHomeAndLockListener{.........}
fragment里定义和绑定都搞定了,就是调用这个接口里的函数了,具体在哪里调用是第三个问题。
第二个问题,怎么判断手机屏幕锁屏,这个问题就是常识问题,手机锁屏会发送广播,写一个类来接收广播,然后在监听到锁屏的时候,把锁屏状态记录下来,写入sharereference里面,
第三个问题,锁屏后再次打开app的时候,什么时候打开验证界面,让用户输入密码,而且不影响用户查看其它模块的信息呢? 这个问题其实的本质是fragment的生命周期的问题,首先,因为我要实现的需求是,当用户选择了账单这个模块以后,才弹出验证界面,用户如果不验证,还是可以看其它模块的信息的,所以,要弹出验证界面肯定是在这个账单fragment的生命周期里,下一个问题是,具体在fragment的哪个生命周期函数里来通知Activity更换账单fragment为验证fragment呢,很简单,又是常识问题,当锁屏的时候,屏幕黑掉之前会调用fragment和Activity的onPause函数,当唤醒屏幕后,打开应用,会执行fragment和Activity的onResume函数,所以,通知Activity更换fragment的操作要放在账单fragment的onResume函数中。调用语句如下:
@Overridepublic void onResume() {// TODO Auto-generated method stubsuper.onResume();mListener.onGoHomeAndLockListener();Log.i("diao", "PaymentFragment-------------onResume");}具体在这个接口函数onGoHomeAndLockListener做什么,当然是隐藏之前的账单fragment,显示验证fragment具体代码如下,这部分代码是在实现了onGoHomeAndLockListener接口的Activity中。代码中首先判断了一下屏幕锁屏的状态和当前显示的fragment是否是账单fragment,如果不判断当前显示的fragment是不是账单fragment的话,用户就无法查看其它模块了,代码中pay_F是账单fragment,lock_F是锁屏fragment。
@Overridepublic void onGoHomeAndLockListener() {// TODO Auto-generated method stub//判断是否用户之前锁屏if(mySharedPreferences.getString("ScreenState", "off").equals("off") &&pay_F.isVisible()){// 锁屏界面if (lock_F == null) {lock_F = new PaymentLockFragment();// 判断当前界面是否隐藏,如果隐藏就进行添加显示,false表示显示,true表示当前界面隐藏if (!lock_F.isHidden()) {addFragment(lock_F);showFragment(lock_F);}}else {if (lock_F.isHidden()) {showFragment(lock_F);}}}}具体锁屏后的效果图如下:
- android屏幕锁屏后在某个界面里需要重新输入密码
- Android 平板中 自定义键盘(popuwindow) 居于屏幕左下方 仿微信的密码输入界面
- ubuntu 登录输入用户名密码之后重新跳回登录界面
- ubuntu登录输入用户名密码之后重新跳回登录界面
- ubuntu登录输入用户名密码之后重新跳回登录界面
- ubuntu登录输入用户名密码之后重新跳回登录界面
- ubuntu登录输入用户名密码之后重新跳回登录界面
- ubuntu输入正确密码重新跳到登录界面
- Ubuntu输入密码后重新返回登陆界面
- [Android开发] 从后台恢复前台界面需要输入密码的demo|监听Home短按长按锁屏
- 如何在html网页里获取 mav.addObject("message","登录名或密码错误,请重新输入")的message
- Ubuntu下root用户锁定屏幕(需要输入密码)
- Android 支付宝支付密码输入界面
- Android支付宝输入密码界面
- 窗体在修改密码之后,需要重新登录问题
- android下需要怎么样配置或者操作才能在界面里显示状态栏(status bar)
- idea svn 更改密码后每次仍然需要重新输入密码
- 在svn客户端中重新输入用户名和密码
- Android特效开发(仿zaker用手向上推动的效果(推动门效果))
- 既然选择了远方,便只顾风雨兼程
- 奇怪的系统:网友自制网页版“Windows 93”
- cramfs(不错)
- 【Android界面实现】使用ActionBar和DrawerLayout纯原生控件,实现侧滑栏和滑动Tab界面
- android屏幕锁屏后在某个界面里需要重新输入密码
- java中的访问权限
- Android Service
- 天佑鲍比 I need you to listen Marty Haugen
- 谈时代下的大数据分析与挖掘系统
- Oracle创建用户以及备份还原数据库操作
- Android ListView初步
- 定义宏 判断iphone ios版本
- JSTL标签库_3_cforEach_cforTokens