Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import android.content.ContentValues;
- import android.content.Context;
- import android.database.Cursor;
- import android.database.DatabaseUtils;
- import android.graphics.Bitmap;
- import android.net.Uri;
- import android.os.Environment;
- import android.provider.MediaStore;
- import android.provider.Telephony;
- import net.fortuna.ical4j.model.Content;
- import java.io.File;
- import java.io.FileNotFoundException;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.net.ContentHandler;
- import java.util.AbstractMap;
- import java.util.ArrayList;
- import java.util.Date;
- import java.util.List;
- import java.util.Map;
- import java.util.TreeMap;
- public class MMSReceivedDAOImpl implements SMSReceivedDAO {
- private Context mContext;
- public MMSReceivedDAOImpl(Context context){
- mContext = context;
- }
- private final MMS createMmsFromCursor(Cursor cursor) {
- MMS mmsReceived;
- Long id = cursor.getLong(cursor.getColumnIndex(Telephony.Mms._ID));
- String address = getAdressFromMms(cursor);
- Long timestamp = cursor.getLong(cursor.getColumnIndex(Telephony.Mms.DATE))*1000;
- Integer read = cursor.getInt(cursor.getColumnIndex(Telephony.Mms.READ));
- Map.Entry partValues = getDataFromMms(cursor);
- mmsReceived = new MMS();
- mmsReceived.setId(id);
- Date date = new Date(timestamp);
- mmsReceived.setAddress(address);
- mmsReceived.setDate(date);
- mmsReceived.setBody((String) partValues.getValue());
- mmsReceived.setDataUri((Uri) partValues.getKey());
- if (read == 0)
- mmsReceived.setRead(false);
- else
- mmsReceived.setRead(true);
- return mmsReceived;
- }
- private Map.Entry<Uri, String> getDataFromMms(Cursor cursor) {
- int id = cursor.getInt(cursor.getColumnIndex(Telephony.Mms._ID));
- Uri uriMMSPart = Uri.parse("content://mms/part");
- Cursor partCur = mContext.getContentResolver().query(uriMMSPart, null, Telephony.Mms.Part.MSG_ID + "=" + id, null, null);
- DatabaseUtils.dumpCursor(partCur);
- Uri imgUri = null;
- String body = null;
- partCur.moveToFirst();
- while (!partCur.isAfterLast()) {
- String ct = partCur.getString(partCur.getColumnIndex(Telephony.Mms.Part.CONTENT_TYPE));
- String data = partCur.getString(partCur.getColumnIndex(Telephony.Mms.Part._DATA));
- String text = partCur.getString(partCur.getColumnIndex(Telephony.Mms.Part.TEXT));
- if (ct.equals("image/jpeg")) {
- String uriImage = "content://media/external/images/media";
- String[] split_path = data.split("/");
- String fileName = split_path[split_path.length - 1];
- Cursor crImg = MediaStore.Images.Media.query(mContext.getContentResolver(),
- MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
- new String[]{MediaStore.Images.Media._ID,MediaStore.Images.Media.DATA},
- MediaStore.Images.ImageColumns.TITLE + " = \"" + fileName + "\"", null);
- if(crImg != null){
- if(crImg.getCount() > 0){
- crImg.moveToFirst();
- int id_field = partCur.getColumnIndex("_id");
- String imageId = String.valueOf(crImg.getInt(id_field));
- imgUri = Uri.parse(uriImage + "/" + imageId);
- }
- }
- }else if(ct.equals("text/plain")){
- body = text;
- }
- partCur.moveToNext();
- }
- return new AbstractMap.SimpleEntry<>(imgUri, body);
- }
- private final String getAdressFromMms(Cursor cursor){
- String address = null;
- Long tid = cursor.getLong(cursor.getColumnIndex(Telephony.Mms.THREAD_ID));
- Cursor crConvestations = mContext.getContentResolver().query(
- Telephony.MmsSms.CONTENT_CONVERSATIONS_URI,
- new String[]{Telephony.TextBasedSmsColumns.ADDRESS},
- Telephony.BaseMmsColumns._ID + " = " + tid,
- null,
- null);
- if(crConvestations != null){
- if(crConvestations.getCount() == 1){
- crConvestations.moveToFirst();
- address = crConvestations.getString(0);
- }
- }
- return address;
- }
- public TreeMap<Long, MMS> getNotReadMMS() {
- TreeMap<Long, MMS> map = new TreeMap<>();
- MMS sms = null;
- String sortOrder = "date DESC";
- String whereClause = "read = 0 AND " + Telephony.Mms.CONTENT_LOCATION + " != \"\"";
- Cursor crMms = mContext.getContentResolver().query(Telephony.Mms.CONTENT_URI,
- new String[]{"*"},
- whereClause,
- null,
- sortOrder);
- if (crMms != null){
- if(crMms.getCount() > 0 ){
- crMms.moveToFirst();
- while (!crMms.isAfterLast()){
- sms = createMmsFromCursor(crMms);
- if(sms.getDataUri() != null)
- map.put(sms.getDate().getTime(), sms);
- crMms.moveToNext();
- }
- crMms.close();
- }
- }
- return map;
- }
- @Override
- public List<SMSReceived> getNotReadSMS() {
- return null;
- }
- @Override
- public List<SMSReceived> getAllInboxSMS() {
- return null;
- }
- @Override
- public List<SMSReceived> getNextInboxSMS(SMS sms, Integer number) {
- return null;
- }
- @Override
- public List<SMSReceived> getPreviousInboxSMS(SMS sms, Integer number) {
- return null;
- }
- @Override
- public List<SMSReceived> getSameInboxSMS(SMS sms, Integer number) {
- return null;
- }
- @Override
- public List<SMSReceived> getSMSReceivedByAddress(String address) {
- return null;
- }
- @Override
- public void update(SMSReceived sms) {
- ContentValues values = new ContentValues();
- values.put(Telephony.Sms.Inbox.READ, 1);
- String where = Telephony.Mms._ID + " = " + sms.getId().toString();
- mContext.getContentResolver().update(Telephony.Mms.CONTENT_URI, values, where, null);
- }
- public void update(SMSReceived sms, ContentValues values) {
- String where = Telephony.Mms._ID + " = " + sms.getId().toString();
- mContext.getContentResolver().update(Telephony.Mms.CONTENT_URI, values, where, null);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement