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