訪問簡訊內容需要配置的許可權:
="android.permission.receive_sms"/>
="android.permission.read_sms"/>
--heart-result--:
第一步:繼承broadcastreceiver,並重寫onreceive()方法。
public class incomingsmsreceiver extends broadcastreceiver }
第二步:訂閱感興趣的廣播intent,訂閱方法有兩種:
第一種:使用**進行訂閱
intentfilter filter = new intentfilter("android.provider.telephony.sms_received");
incomingsmsreceiver receiver = new incomingsmsreceiver();
registerreceiver(receiver, filter);
方式一:通過廣播監聽簡訊訊息
(注意:這種方式只對新收到的短訊息有效,執行**,並不會讀取收件箱中已讀或未讀的訊息,只有當收到新來的短訊息時,才會執行onchange方法)
缺點:通過設定priority的數值,其實有時是不管用的,現在在一些定製的系統或是有安全軟體的情況下,往往短訊息都被擷取到,並被乾掉。
方式二:通過簡訊資料庫獲取簡訊內容
新起乙個執行緒進行讀取簡訊
number:106901407187 body:您提交了重置應用rkwatch的使用者密碼,驗證碼:808220,請妥善保管,並及時提交重置密碼。【rkwatch】 time:1455801191000
substring(int1,int2)
取原字串中從左往右第int1到int2個字元組成的字串
protocol:協議0 sms_rpoto簡訊,1 mms_proto彩信
content://sms/ 所有簡訊
content://sms/inbox 收件箱
content://sms/sent 已傳送
content://sms/draft 草稿
content://sms/outbox 發件箱
content://sms/failed 傳送失敗
content://sms/queued 待傳送列表
觀察者模式實現簡訊內容讀取:
privatesmsobserver smsobserver;
smsobserver=newsmsobserver(resetpwd.this,mhandler);
getcontentresolver().registercontentobserver(sms_inbox,true,smsobserver);
class
smsobserver
extends
contentobserver
@override
publicvoidonchange(booleanselfchange) }
public
void
getsmsfromphone() ;//"_id", "address", "person",, "date", "type
string where = " date > "
+ (system.currenttimemillis() - 60*1000);
cursor cur = cr.query(sms_inbox, projection, where,null, "date desc");
//查詢引數 條件 where group by order by
if(null== cur)
return;
if(cur.movetonext()) }
獲取簡訊內容
read the pdus out of an or a intent.param intent the intent to read from return an array of smsmessages for the pdus public static final smsmessage ge...
Android傳送簡訊時 簡訊內容超長處理
一條簡訊只可容納70個中文,所以當簡訊長度超過70個中文字元時程式就要特殊處理了。通常有兩種方式 一 通過sendtextmessage 方法逐條依次傳送拆分後的簡訊,這種方式有個缺點是使用者會分條收到簡訊。if message.length 70 else 二 使用sendmultiparttex...
PHP擷取發動簡訊內容的方法
如下所示 str tmp dadmin utils gbkstrsplit 簡訊內容 700 內容過長返回的是乙個擷取內容後的陣列 700指的是擷取的長度 total count str tmp num 1 foreach str tmp as str num sign strtoupper md5...