国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Android > 正文

Android開發(fā)獲取短信的內(nèi)容并截取短信

2020-04-11 11:08:22
字體:
來源:轉載
供稿:網(wǎng)友

1、首先我們要寫一個廣播接收器,當我們的手機收到短信時,系統(tǒng)會自動發(fā)送一個廣播,我們只需要接收到這條廣播就可以了

2、在廣播里面,我們重寫的onReceive()方法,通過里面的Intent寫到的Bundle就可以拿到短信的內(nèi)容,

3、清單文件里面我們必須要添加權限,否則無法接收到。

4、為了防止我們的廣播接收不到,我們自己寫的廣播接收器的權限必須要大,以防萬一,我設置了1000。

下面上代碼,里面的注釋也比較詳細..

 <?xml version="." encoding="utf-"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android"   package="com.example.fanlei.cutnotedemo" >   //接收短信   <uses-permission android:name="android.permission.RECEIVE_SMS"/>   <application     android:allowBackup="true"     android:icon="@drawable/ic_launcher"     android:label="@string/app_name"     android:theme="@style/AppTheme" >     <!-- action:name = 的名稱是固定的 -->     <receiver android:name=".NoteReceiver">       <intent-filter android:priority="">         <action android:name="android.provider.Telephony.SMS_RECEIVED"/>       </intent-filter>     </receiver>     <activity       android:name=".MainActivity"       android:label="@string/app_name" >       <intent-filter>         <action android:name="android.intent.action.MAIN" />         <category android:name="android.intent.category.LAUNCHER" />       </intent-filter>     </activity>   </application> </manifest>

寫一個類,繼承BroadcastReceiver

Android--獲取短信的內(nèi)容,截取短信 package com.example.fanlei.cutnotedemo; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.telephony.SmsMessage; import android.widget.Toast; import java.text.SimpleDateFormat; import java.util.Date; /** * 廣播接收器 */ public class NoteReceiver extends BroadcastReceiver {   private static final String SMS_RECEIVED_ACTION = "android.provider.Telephony.SMS_RECEIVED";   @Override   public void onReceive(Context context, Intent intent) {     String action = intent.getAction();     //判斷廣播消息     if (action.equals(SMS_RECEIVED_ACTION)){       Bundle bundle = intent.getExtras();       //如果不為空       if (bundle != null){         //將pdus里面的內(nèi)容轉化成Object[]數(shù)組         Object pdusData[] = (Object[]) bundle.get("pdus");         //解析短信         SmsMessage[] msg = new SmsMessage[pdusData.length];         for (int i = ;i < msg.length;i++){           byte pdus[] = (byte[]) pdusData[i];           msg[i] = SmsMessage.createFromPdu(pdus);         }         StringBuffer content = new StringBuffer();//獲取短信內(nèi)容         StringBuffer phoneNumber = new StringBuffer();//獲取地址         StringBuffer receiveData = new StringBuffer();//獲取時間         //分析短信具體參數(shù)         for (SmsMessage temp : msg){           content.append(temp.getMessageBody());           phoneNumber.append(temp.getOriginatingAddress());           receiveData.append(new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.SSS")               .format(new Date(temp.getTimestampMillis())));         }         /**         * 這里還可以進行好多操作,比如我們根據(jù)手機號進行攔截(取消廣播繼續(xù)傳播)等等         */         Toast.makeText(context,phoneNumber.toString()+content+receiveData, Toast.LENGTH_LONG).show();//短信內(nèi)容       }     }   } }

ps:android獲取短信所有內(nèi)容

public class GetMessageInfo {   List<MessageInfo> list;   Context context;   MessageInfo messageInfo;   public GetMessageInfo(Context context) {     list = new ArrayList<MessageInfo>();     this.context = context;   }   // --------------------------------收到的短息信息----------------------------------   public List<MessageInfo> getSmsInfos() {     final String SMS_URI_INBOX = "content://sms/inbox";// 收信箱     try {       ContentResolver cr = context.getContentResolver();       String[] projection = new String[] { "_id", "address", "person","body", "date", "type" };       Uri uri = Uri.parse(SMS_URI_INBOX);       Cursor cursor = cr.query(uri, projection, null, null, "date desc");       while (cursor.moveToNext()) {         messageInfo = new MessageInfo();         // -----------------------信息----------------         int nameColumn = cursor.getColumnIndex("person");// 聯(lián)系人姓名列表序號         int phoneNumberColumn = cursor.getColumnIndex("address");// 手機號         int smsbodyColumn = cursor.getColumnIndex("body");// 短信內(nèi)容         int dateColumn = cursor.getColumnIndex("date");// 日期         int typeColumn = cursor.getColumnIndex("type");// 收發(fā)類型 1表示接受 2表示發(fā)送         String nameId = cursor.getString(nameColumn);         String phoneNumber = cursor.getString(phoneNumberColumn);         String smsbody = cursor.getString(smsbodyColumn);         Date d = new Date(Long.parseLong(cursor.getString(dateColumn)));         SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd " + "/n" + "hh:mm:ss");         String date = dateFormat.format(d);         // --------------------------匹配聯(lián)系人名字--------------------------         Uri personUri = Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI,phoneNumber);         Cursor localCursor = cr.query(personUri, new String[] {PhoneLookup.DISPLAY_NAME, PhoneLookup.PHOTO_ID,PhoneLookup._ID }, null, null, null);         System.out.println(localCursor.getCount());         System.out.println("之前----"+localCursor);         if (localCursor.getCount()!=0) {           localCursor.moveToFirst();           System.out.println("之后----"+localCursor);           String name = localCursor.getString(localCursor.getColumnIndex(PhoneLookup.DISPLAY_NAME));           long photoid = localCursor.getLong(localCursor.getColumnIndex(PhoneLookup.PHOTO_ID));           long contactid = localCursor.getLong(localCursor.getColumnIndex(PhoneLookup._ID));           messageInfo.setName(name);           // 如果photoid 大于0 表示聯(lián)系人有頭像 ,如果沒有給此人設置頭像則給他一個默認的           if (photoid > 0) {            Uri uri1 = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI,contactid);             InputStream input = ContactsContract.Contacts.openContactPhotoInputStream(cr, uri1);             messageInfo.setContactPhoto(BitmapFactory.decodeStream(input));           } else {             messageInfo.setContactPhoto(BitmapFactory.decodeResource(context.getResources(),R.drawable.ic_launcher));           }         }else{             messageInfo.setName(phoneNumber);             messageInfo.setContactPhoto(BitmapFactory.decodeResource(context.getResources(), R.drawable.ic_launcher));           }         localCursor.close();         messageInfo.setSmsContent(smsbody);         messageInfo.setSmsDate(date);         list.add(messageInfo);       }     } catch (SQLiteException e) {       e.printStackTrace();     }     return list;   } } 

以上內(nèi)容是小編給大家分享的Android開發(fā)獲取短信的內(nèi)容并截取短信,希望大家喜歡。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 张家口市| 金堂县| 富平县| 临安市| 临泽县| 平原县| 新泰市| 黑水县| 奇台县| 寿宁县| 岑溪市| 子洲县| 满城县| 明水县| 河西区| 洪洞县| 即墨市| 皋兰县| 新绛县| 旬邑县| 浦城县| 略阳县| 伊吾县| 北碚区| 马山县| 海淀区| 福建省| 阜平县| 成安县| 鹿泉市| 连山| 自贡市| 长岛县| 西盟| 盐池县| 浏阳市| 会泽县| 扎兰屯市| 黔江区| 保山市| 梅州市|