APP139邮箱免费发短信短信号帐号手机场地址栏,

android开发(43)
1,邮箱和手机号的格式简单验证
private boolean AuthRegisterUser(String UserName) {
Pattern patternMailBox = Pattern
.compile(&^([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$&);// 正则表达的式匹配邮箱
Pattern patternTell = pile(&^1[0-9]\\d{9}$&);
return patternMailBox.matcher(UserName).matches()
|| patternTell.matcher(UserName).matches();
2,获取验证码
btnGetCode=(Button) findViewById(R.id.btngetcode);
btnGetCode.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
btnGetCode.setEnabled(false);
runnable.run();
private int time=30;
public Runnable runnable=new Runnable() {
public void run() {
if((time)&=0){
btnGetCode.setText(&获取验证码&);
btnGetCode.setEnabled(true);
btnGetCode.setText(time+&秒后重试&);
btnGetCode.postDelayed(this, 1000);
3,自动读取短信
权限:&uses-permission android:name=&android.permission.READ_SMS&/&
代码中使用:
SmsContent content= new SmsContent(LoginActivity.this, new Handler(), verifyText);
&&// 注册短信变化监听
&&this.getContentResolver().registerContentObserver(Uri.parse(&content://sms/&),true, content);
package 填写自己的包名import java.util.regex.M
import java.util.regex.P
import android.app.A
import android.database.ContentO
import android.database.C
import android.net.U
import android.os.H
import android.widget.EditT
public class SmsContent extends ContentObserver {
public static final String SMS_URI_INBOX = &content://sms/inbox&;
private Activity activity =
private String smsContent = &&;
private EditText verifyText =
public SmsContent(Activity activity, Handler handler, EditText verifyText) {
super(handler);
this.activity =
this.verifyText = verifyT
public void onChange(boolean selfChange) {
super.onChange(selfChange);
((SMSAUTOreadActivity)activity).test();
Cursor cursor =// 光标
// 读取收件箱中指定号码的短信
cursor = activity.managedQuery(Uri.parse(SMS_URI_INBOX), new String[] { &_id&, &address&, &body&, &read& }, &address=? and read=?&,
new String[] { &&, &0& }, &date desc&);
/**因为我们获取短信的号码可能有变化,所以我是对短信的内容进行过滤的,我们的有下边4个字母 czmm*/
cursor=activity.getContentResolver().query(Uri.parse(SMS_URI_INBOX), new String[] { &_id&, &address&, &body&, &read& }, &read=? and body like '%czmm%'&,
new String[] {
&0& }, &date desc&);
if (cursor != null) {// 如果短信为未读模式
System.out.println(&cursor==&+cursor.getCount());
if (cursor.moveToFirst()) {
String smsbody = cursor.getString(cursor.getColumnIndex(&body&));
System.out.println(&smsbody=======================& + smsbody);
String regEx = &[^0-9]&;//匹配不是数字的,注意只是一个字符哦
Pattern p = pile(regEx);
Matcher m = p.matcher(smsbody.toString());
smsContent = m.replaceAll(&&).trim().toString();
verifyText.setText(smsContent);
System.out.println(&cursor is null&);
最后看下系统短信库的内容:
系统的短信库存在data/data/com.android.providers.telephony/databases/mmssms.db&
打开mmssms.db再打开sms表因为所有短信数据都储存在这张表上,下面分析一下这张表的字段。&
_id 不用说了吧,标示它的唯一性&
thread_id :这个字段很重要,同一个会话中他们的thread_id是一样的,也就是说通过thread_id就可以知道A与B在聊天还是
A与C在聊天&
date :这条消息发送或接收的时间&
read: 0 表示未读 1表示已读&
type : 1表示接收 2
body 表示消息的内容
我们在看看thread_id指向的thread表&
上图中可以清晰的看到收到消息与回复消息的thread_id都为<span style="color:#
,那么在thread_id这张表中&
_id 不用说了吧,标示它的唯一性&
date:表示最后接收或者发送消息的时间&
message_count:表示发送消息的数量,这里我接收到了一条消息也回复了一条消息那么它的数量就为<span style="color:#&
recipient_ids:联系人ID,指向表 canonical_addresses
snippet :最后收到或者发送的消息内容,就是上图body中存的东西
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:31589次
排名:千里之外
原创:23篇
转载:24篇
(1)(2)(1)(1)(2)(2)(2)(1)(4)(8)(8)(1)(1)(6)(6)(2)出错啦 - PMCAFF产品经理社区 中国第一产品经理人气组织
PMCAFF目前不支持IE浏览器, 请用其它的浏览器打开PMCAFF, 如果是双核浏览器, 请选择极速模式

我要回帖

更多关于 139邮箱免费发短信 的文章

 

随机推荐