学习Android手机短信监控
来源:互联网 发布:js判断变量是否为对象 编辑:程序博客网 时间:2024/06/06 09:38
目的
最近有一个项目需要用Android手机去获取验证码来进行登陆,在stackoverflow和google找了很多例子来学习。需求涉及了两个部分,第一个部分是获取短信这个部分,也就是本文的部分,第二是将获取到的短信传输回到服务器上的部分,下一篇文章会讲到。
内容
获取短信一共分为三个步骤:
1. 通过 BroadCast extends BroadcastReceiver
来接收短信送达的广播。
2. 通过官方的content provider来获取短信所在的地址。
3. 通过 context.getContentResolver()
作为阅读工具(指针),来阅读短信。
这里附带上完整项目的地址,在github上:
https://github.com/soulomoon/android-SMS-Listening
1.BroadcastReceiver
每次手机收到一条短信都会通过向Android系统发送一条广播,说收到了一条短信。这里我们新建一个BroadcastReceiver
的子类,然后通过重载onReceive
这个方法来写收到广播后的动作。代码非常简单下:
import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.util.Log;public class BroadCast extends BroadcastReceiver { @Override public void onReceive(final Context context, final Intent intent) { Log.d("broadcast", "我操居然接收到广播了"); }}
但此广播没有注明是什么广播,怎么确定是要接受哪种广播呢,必须要进行注册这个BroadcastReceiver
为短信通知的广播接收器。这样子在接收到短信后onReceive
方法就会自动调用
<receiver android:name="com.example.soulomoon.hello.BroadCast"> <intent-filter> <action android:name="android.provider.Telephony.SMS_RECEIVED" /> </intent-filter> </receiver>
2.content provider和context.getContentResolver()
在安卓获取存储的信息需要通过content provider,短信也不例外。
需要利用一个指针,通过context.getContentResolver()
获取。
地址由Telephony.Sms.Inbox.CONTENT_URI
给出,
内容是Telephony.TextBasedSmsColumns.BODY
,短信主题的内容。
成功创建了得到指向的内容后Cursor query
后就可以利用这个指针来进行信息读取。
public static String getLatestMsg(final Context context) { Log.i("getLatestMsg", "begin"); final List<String> lstSms = new ArrayList<>(); //创建指针 final ContentResolver cr = context.getContentResolver(); //指针指向短信内容 final Cursor query = cr.query(Telephony.Sms.Inbox.CONTENT_URI, new String[] {Telephony.TextBasedSmsColumns.BODY}, null, null, Telephony.Sms.Inbox.DEFAULT_SORT_ORDER); //检查指针内容是否为空 assert query != null; //得到指针内容的行数 final int totalSMS = query.getCount(); //从第一列读取到最后一列 if (query.moveToFirst()) { for (int i = 0; i < totalSMS; i++) { lstSms.add(query.getString(0)); query.moveToNext(); } } else { lstSms.add("You have no SMS in Inbox"); } //关闭通过内容的通道 query.close(); //返还最新的信息 return lstSms.get(0); }
- 学习Android手机短信监控
- Android学习(14)-手机通知,手机短信
- Android学习笔记--手机短信发送器
- android手机短信总结
- Android 获取手机短信
- android 手机短信和定位
- android手机短信总结
- android 管理手机短信
- Android 拦截手机短信
- 拦截android手机短信
- 监听android手机短信
- android手机短信屏蔽
- Android开发 发送手机短信
- Android开发管理手机短信
- Android 手机短信简单开发
- android.手机短信发送器
- Android 手机短信验证
- Android BroadcastReceiver监听手机短信
- Lesson 2_Uninformed search methods
- Breeze库 常用函数
- 分享一个可用的Axure 8.0的注册码
- 想拥有自己的 Atom 文本编辑器插件吗?
- 昨天,今天,明天
- 学习Android手机短信监控
- 高德地图-删除多个点标记
- Kylin清理数据
- 解决编译Apache出现的问题:configure: error: APR not found . Please read the documentation
- 动态规划,递推,多段图(Ingenuous Cubrency,uva 11137)
- Android上使用camera拍照,把获取的照片上传到远程服务器
- Java字节码中的Stack Map Frames特性简介
- Spring AOP 一、AOP的概念与简单使用
- 用多线程实现生产者与消费者的原理