1. 程式人生 > >Android筆記 如何獲取簡訊實時內容

Android筆記 如何獲取簡訊實時內容

很多商城app中註冊時都需要驗證碼進行註冊,並且自動獲取手機簡訊的驗證碼。當來簡訊時我們要獲取簡訊中的驗證碼,如何獲取驗證碼呢?
首先我們得對簡訊進行監聽,然後獲取簡訊的內容然後用正則表示式取出我們需要的的驗證碼。

我們先看看如何獲取簡訊的內容:手機的通訊錄資訊,簡訊資訊都是存放在ContentProvider中。
我們要對簡訊進行監聽的話要用到內容觀察者ContentObserver如果對ContentObserver不瞭解的話點選這裡右轉
http://blog.csdn.net/qinjuning/article/details/7047607
我們自己繼承ContentObserver來實現對簡訊的監聽。對簡訊讀取記得加許可權
<uses-permission android:name="android.permission.READ_SMS"/>
<uses-permission android:name="android.permission.WRITE_SMS"/>


直接上程式碼

package com.example.demoobsever;

import android.app.Activity;
import android.database.ContentObserver;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.widget.TextView;

public class MainActivity
extends Activity {
private TextView vSms;//簡訊內容TextView private SMSContent smsObsever;//簡訊觀察者 private Handler handler =new Handler(){ public void handleMessage(android.os.Message msg) { Bundle bundle=msg.getData(); String body=bundle.getString("body"); vSms.setText(body); }; }; @Override
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); vSms=(TextView) this.findViewById(R.id.tx_sms);//簡訊內容顯示 smsObsever=new SMSContent(handler);//例項化簡訊觀察者 //註冊簡訊觀察者 getContentResolver().registerContentObserver(Uri.parse("content://sms/"), true, smsObsever); } /** * @description 簡訊觀察者 * @author Administrator * */ class SMSContent extends ContentObserver { private Handler mHandler; public SMSContent(Handler handler) { super(handler); mHandler=handler; } @Override public void onChange(boolean selfChange) { super.onChange(selfChange); Cursor cursor = null; String body=null; try { cursor = getContentResolver().query( Uri.parse("content://sms/inbox"), null, null, null, "date desc"); if(cursor!=null){ if(cursor.moveToNext()){//不遍歷只拿當前最新的一條簡訊 //獲取當前的簡訊內容 body=cursor.getString(cursor.getColumnIndex("body")); Message msg=Message.obtain(); Bundle bundle=new Bundle(); bundle.putString("body", body); msg.setData(bundle); mHandler.sendMessage(msg); } } } catch (Exception e) { e.printStackTrace(); }finally{ if(cursor!=null){ cursor.close(); } } } } @Override protected void onDestroy() { super.onDestroy(); //取消註冊 getContentResolver().unregisterContentObserver(smsObsever); } }

這是獲取簡訊內容,獲取驗證碼用Pattern去匹配即可。這裡就不多介紹了。

相關推薦

Android筆記 如何獲取簡訊實時內容

很多商城app中註冊時都需要驗證碼進行註冊,並且自動獲取手機簡訊的驗證碼。當來簡訊時我們要獲取簡訊中的驗證碼,如何獲取驗證碼呢? 首先我們得對簡訊進行監聽,然後獲取簡訊的內容然後用正則表示式取出我們需要的的驗證碼。 我們先看看如何獲取簡訊的內容:手機的通訊錄

android獲取簡訊所有內容

public class GetMessageInfo { List<MessageInfo> list; Context context; MessageInfo messageInfo; public GetMessageInfo(Context

Android util - 獲取剪貼板內容

boa and ger androi dma rdma sta log clip 1 public class UtilClipBoard { 2 3 public static void copy(Context context,String text)

Android筆記: 獲取手機的品牌、型號、Android系統版本號、IMEI、當前系統語言等工具類

最近在開發中,需要用到一些系統資訊,這裡我把這些方法寫成一個工具類方便以後複用,該工具類有以下6個功能: 1、獲取手機制造廠商 2、獲取手機型號 3、獲取手機系統當前使用的語言 4、獲取Andr

android 自動獲取簡訊驗證碼

 很多專案中都會用到,自動獲取驗證碼填到輸入框,這樣使用者體驗比較好,廢話不多說,現在實現 用的是ContentObserver這個類,幫助我們來監聽簡訊資料庫發生的變化 package com.smart.android.activity; impo

android自動獲取簡訊驗證碼

好吧,標題黨了~ 前言:android應用的自動化測試必然會涉及到註冊登入功能,而許多的註冊登入或修改密碼功能常常需要輸入簡訊驗證碼,因此有必要能夠自動獲得下發的簡訊驗證碼。 主要就是實時獲取簡訊資訊

Android 手機獲取簡訊驗證碼—自帶UI介面

           第三方框架:簡訊驗證,我比較喜歡直來直去,多餘的話不講,直接上程式碼,這裡主要講的是在android studio中的詳細步驟。          選擇Studio下載 建立應用,包名必須與建立的專案包名一致。 建立好應用以後會給你App Ke

Android studio 獲取手機簡訊內容並輸出顯示

初學Android studio 需要做一個功能,獲取簡訊內容輸出到顯示屏上。 使用Android studio版本:3.2  JDK版本: jdk1.8.0_151   首先在清單檔案新增許可權,獲取簡訊讀寫許可權 <uses-permission an

Android基礎筆記(十三)- 內容提供者原理和簡單使用

暴露 tel java 四大組件 per 存儲 建數據庫 開發 fun 為什麽要有內容提供者 內容提供者的工作原理 使用內容解析者對內容提供者進行增刪改查操作 利用內容提供者和內容解析者備份手機短信 利用內容提供者插入短信 為什麽要有內容

Android菜鳥筆記- 獲取未安裝的APK圖標、版本號、包名、名稱、是否安裝、安裝、打開

ack ear 例如 start true intent ble post oca 周末閑來無事,把Android的基礎知識拿出來復習復習,今天主題是《獲取未安裝的APK圖標、版本號、包名、名稱、是否安裝、跳轉安裝、打開》 一、獲取APK圖標 通常讀取APK的圖標能夠用

ServletContex獲取文件內容路徑學習筆記

ServletContex獲取文件內容路如果以ServletContext方式讀取資源文件(txt/xml/properties),是相對於web服務器的當前web應用目錄而言此時/表示:當前web應用 第一種方法 `import java.io.FileInputStream; import jav

QT之Android獲取手機感測器資料學習筆記

QT += core gui sensors positioning 其中sensors是獲取手機上感測器資料的元件,positioning是獲取位置資訊的元件 1、獲取陀螺儀感測器資料 #include <QGyroscope> QGyroscope *gyrosco

Android開發之獲取通知欄的內容

如下圖: 這是獲取的微信訊息的內容 我們來看下原始碼: MyNotifiService.java package com.qfy.getnotifiservice; import android.annotation.SuppressLint; import

android監聽並獲取簡訊

清單檔案     <!--收簡訊的許可權-->     <uses-permission android:name="android.permission.RECEIVE_SMS"/

Android---如何利用API實時獲取各頻道新聞?

基本上萬事俱備了,博主我把開發新聞閱讀器的相關知識都整理好了,接下來幾天我要搞一個新聞閱讀器(*^__^*) ~ 本次例項包含了利用API(從“百度APIStore”上找的),從網路上實時獲取各種頻道的新聞。 接下來,我們首先建一個Layout,上面放一個Spinner

Android 獲取WebView的內容寬度高度

Android開發時,從WebView,我不但想要知道ContentHeight,還想知道ContentWidth。不幸的是,從一個 WebView獲取contentWidth是相當困難,因為SDK中沒有一個像這樣的方法,所以本文為大家呈現了一種實用的解決此問題的方法。

Android通過WebView獲取解析html內容

童話美景 概述 在Android開發過程中,我們可能需要做一些模擬操作,可能需要獲取HTML頁面的一些資訊,此時就需要藉助重寫WebViewClient的onPageFinished方法,在onPageFinished中載入一段js程式碼,j

Kotlin開發Android筆記7:Anko獲取網路資料

—執行一個請求——- 現在通過請求來獲取顯示在RecyclerView上的資料。我們將會使用OpenWeatherMap API來獲取資料,還有一些普通類來現實這個請求。 Kotlin具有非常強大

Android筆記獲取檔案MimeType

在Android中獲取檔案TimeType主要通過MimeTypeMap的getFileExtensionFromUrl、getMimeTypeFromExtension方法 privat

Android 獲取時間實時更新UI

第一種:使用Handler獲取 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setCont