首页 > 编程知识 正文

安卓自动读取短信验证码,安卓手机短信验证码自动填写

时间:2023-05-04 05:03:12 阅读:139292 作者:1068

实现方式的想法:

1、系统具有内容观察器,可以通过板载(booleanselfchange,Uri uri )过滤和处理邮件

2、必须调用getContentResolver ().registercontentobserver (uri,true,mObserver ) )进行注册才能进行监听(content )

实现步骤:当前在Activity中实现

1 .了解系统邮件URL : uri uri=uri.parse (内容://SMS )

2、这里可以继承内容观察器,重新创建SMS观察器类处理邮件

3、创建内容观察对象。 smsobservermobserver=newsmsobserver (this,mHandler,MSG_RECEIVED_CODE ); 这里只是使用Hnader处理接收认证码,也可以使用EventBus等处理消息传递

4、注册getContentResolver ().registercontentobserver(uri,true,mObserver ) )

5、在opause (或onDestroy )中反向注册getContentResolver ).unregistercontentobserver,mobserver )

的主要源代码:

! -阅读邮件的权限--uses-permission Android 3360 name=' Android.permission.receive _ SMS '/uses-permission Android 3360 name

privatehandlermhandler=new handler () overridepublicvoidhandlemessage ) if ) msg.what==msg _ receiver metuserverificatior }; }; mobserver=newSMSobserver(this,mHandler,MSG_RECEIVED_CODE ); uri uri=uri.parse (content ://SMS ); getContentResolver ().registercontentobserver(uri,true,mObserver ); 2、SMS观察器类

publicclasssmsobserverextendscontentobserver { privatecontextmcontext; 私有汉德勒汉德勒; private int mReceivedCode=1; publicsmsobserver (上下文上下文,Handler Handler,int received_code ) super ) handler ); mContext=context; mHandler=handler; mReceivedCode=received_code; } @ overridepublicvoidonchange (booleanselfchange,uri ) super.onchange (self change,uri ); 字符串代码=' '; uri.tostring ().equals(content://SMS/raw ) ) { return; } uriinboxuri=uri.parse (content ://SMS/inbox ); cursorc=m context.get content resolver ().query (inbox uri,null,null,null,' date desc ' ); if(c!=null () if (c.move to first ) ) (stringaddress=c.getstring ) c.getcolumnindex('address ' ) ); string body=c.getstring (c.getcolumn index (' body ) ); LogUtils.e (发件人:“地址”)邮件内容为“体”(patternpattern=pattern.compile (() ) (d { 4,6 } ) ); matcher matcher=pattern.matcher (body ); if(matcher.find () ) code=matcher.group ) 0; LogUtils.e (“授权码”)、“代码”clipboardmanagercmb=(clipboard manager ) m context.getsystemservice (context.clipboard ) ) CMB.settext(code; mhandler.obtain message (mreceivedcode,code ).sendToTarget ); } } c.close (; } }

参考: https://blog.csdn.net/QQ _ 31939617/article/details/77430688

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。