去安全中心的权限管理,把所有软件的允许访问短信内容的权限打开
自动填写是某些软件自己的功能,并不是手机的功能,比如说支付宝在有些输入验证码的地方可以自动填写短信里的验证码,前提是你手机要把短信读取的权限开放给支付宝,不然支付宝也没法获取你的短信内容的。
在应用的开发过程中 我们需要向用户发送验证码以验证用户的身份,但是用户收到短信验证码后,需要离开当前的应用去查看验证码,然后再返回我们的应用来填写验证码,这样会给用户带来诸多的不便。android系统上的应用可以读取到手机上的短信,我们可以通过这个特性去获取我们想要的内容,显示到我们的输入框中。
本次我们实现的功能要用到ContentObserver,当我们发送一条短信到我们的手机上时,手机会自动调用ContentObserver类中的指定方法,来通知我们的应用短信内容的改变,我们提取内容中的信息 填写到我们的输入框中
在这里我和大家说一个与之相关的设计模式:观察者模式:
观察者模式是软件设计模式中的一种,在此模式中,一个目标物件管理所有相依于它的观察者物件,并且在它本身的状态改变时主动发出通知。这通常是透过呼叫各观察者所提供的方法来实现。此模式通常被用来实现时间处理系统。
观察者模式(Observer)完美的将观察者和被观察者的对象分离开,在模块之间划定了清晰的界限,提高了应用程序的可维护性和重用性。
观察者设计模式定义了对象间的一种一对多的依赖关系,以便一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动刷新。
应用到我们的这个例子上来说,就是首先我们在我们的应用刚开始运行的过程中,向我们的系统短信应用注册一个观察者,就告诉我们的短信应用说,我是你的观察者,当你自己的状态发生了变化后,你就通知我。
我们来看一下观察者的基本流程:
观察者将自己注册到被观察对象(subject)中,被观察者对象将观察者存放在一个容器(Container)里。
被观察者对象发生变化,从容器中得到所有注册过的观察者,将变化通知观察者。
观察者告诉观察者要撤销观察,被观察者从容器中将观察者去除。
内容观察者,目的是观察(捕捉)特定Uri引起的数据库的变化,继而做一些相应的处理,它类似于数据库技术中的触发器(Trigger),当ContentOberver所观察的Uri发生变化时,便会触发它。
观察特定Uri的步骤如下:
1.创建我们特定的ContentOberver派生类,必须重载父类构造方法,必须重载onChange()方法去处理回调后的功能实现。
2.利用context.getContetResolover()获得ContentResolover对象,接着调用registerContentObeserver()方法去注册内容观察者。
3.由于ContentObsever的生命周期不同步于Activity和Service等,因此,在不需要时,需要手动的调用unregisterContentObserver()去取消注册。
接收不到短信或验证码有以下原因:
1、您可先检查信箱是否已满,如果是请删除部分信息;
2、删除后仍无法收到,您可以换机或换卡测试,看是否为硬件因素;
3、排除以上原因后,您可以尝试在其他地点测试能否接收,看是否为当地信号弱的原因。
若以上问题都不存在,请您联系当地的人工客服处理此问题。
一般现在系统群发的验证码都是由专门的短信群发平台发送的,号段一般是106,如果有收不到的情况,可能是被运营商拦截了或者是系统延迟了