android獲取簡訊所有內容
阿新 • • 發佈:2019-02-16
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");// 聯絡人姓名列表序號 int phoneNumberColumn = cursor.getColumnIndex("address");// 手機號 int smsbodyColumn = cursor.getColumnIndex("body");// 簡訊內容 int dateColumn = cursor.getColumnIndex("date");// 日期 int typeColumn = cursor.getColumnIndex("type");// 收發型別 1表示接受 2表示傳送 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); // --------------------------匹配聯絡人名字-------------------------- 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 表示聯絡人有頭像 ,如果沒有給此人設定頭像則給他一個預設的 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; } }