package com.sogouchat.util; import java.util.List; import java.util.Vector; import com.sogouchat.smsmms.ContactsInfo; import com.sogouchat.smsmms.ContactsMgr; import com.sogouchat.smsmms.Sms; import com.sogouchat.smsmms.SmsBase; import android.app.PendingIntent; import android.content.ContentResolver; import android.content.Context; import android.content.Intent; import android.database.Cursor; import android.database.sqlite.SQLiteException; import android.net.Uri; import android.telephony.SmsManager; import android.util.Log; public class SmsFunc { public static boolean sendSms(String mobile,String content,Context context) { SmsManager smsManager = SmsManager.getDefault(); PendingIntent sentIntent = PendingIntent.getBroadcast(context, 0, new Intent(), 0); if(content.length() >= 70) { List<String> ms = smsManager.divideMessage(content); for(String str : ms ) { smsManager.sendTextMessage(mobile, null, str, sentIntent, null); } } else { smsManager.sendTextMessage(mobile, null, content, sentIntent, null); } return true; } public static void SearchSmsByKey(Context context,String strKey,Vector<Sms> smsList){ try{ ContentResolver cr = context.getContentResolver(); String[] projection = new String[]{SmsBase.SMS_ID, SmsBase.SMS_ADDRESS, SmsBase.SMS_PERSON, SmsBase.SMS_BODY, SmsBase.SMS_DATE, SmsBase.SMS_TYPE,SmsBase.SMS_THREAD_ID,SmsBase.SMS_READ}; Uri uri = Uri.parse(SmsBase.SMS_URI_ALL); String selection = SmsBase.SMS_BODY+" like '%?%'"; //selection = null; //String[] selectionArg = {strKey}; selection = SmsBase.SMS_BODY+" like '%"+strKey+"%'"; Cursor cur = cr.query(uri, projection, selection, null,SmsBase.SMS_DATE); if (cur.moveToFirst()) { String name; String phoneNumber; String smsbody; int type; long tmDate; int nThreadID; int nRead = 0; int nID; boolean bRead = true; int nIDColumn = cur.getColumnIndex(SmsBase.SMS_ID); int nameColumn = cur.getColumnIndex(SmsBase.SMS_PERSON); int phoneNumberColumn = cur.getColumnIndex(SmsBase.SMS_ADDRESS); int smsbodyColumn = cur.getColumnIndex(SmsBase.SMS_BODY); int dateColumn = cur.getColumnIndex(SmsBase.SMS_DATE); int typeColumn = cur.getColumnIndex(SmsBase.SMS_TYPE); int threadidColumn = cur.getColumnIndex(SmsBase.SMS_THREAD_ID); int readColumu = cur.getColumnIndex(SmsBase.SMS_READ); do{ nID = cur.getInt(nIDColumn); name = cur.getString(nameColumn); phoneNumber = cur.getString(phoneNumberColumn); smsbody = cur.getString(smsbodyColumn); tmDate = Long.parseLong(cur.getString(dateColumn)); nThreadID = Integer.parseInt(cur.getString(threadidColumn)); int typeId = cur.getInt(typeColumn); type = typeId; nRead = cur.getInt(readColumu); if (nRead== SmsBase.Sms_Read_On) { bRead = true; }else { bRead = false; } //SmsTotal smsTotal = SmsMgr.GetI().GetSmsTotalByID(nThreadID); //Sms mSms = new Sms(smsTotal.GetTrueName(), phoneNumber, smsbody, tmDate, typeId, nThreadID); String strName = GetNameFromSms(name,phoneNumber); Sms mSms = new Sms(strName, phoneNumber, smsbody, tmDate, typeId, nThreadID,nID); smsList.add(mSms); }while(cur.moveToNext()); } else { } } catch(SQLiteException ex) { Log.d("SQLiteException in getSmsInPhone", ex.getMessage()); } } public static String GetNameFromSms(String strContactID,String strNumber){ String sContactName=null; if (strContactID!=null) { ContactsInfo info = ContactsMgr.GetI().GetContactByID(Integer.parseInt(strContactID)); if (info!=null && info.displayName!=null) { sContactName = info.displayName; } else { info = ContactsMgr.GetI().GetContactByNumber(strNumber); if (info!=null && info.displayName!=null) { sContactName = info.displayName; } else { sContactName =null; } } }else { ContactsInfo info = ContactsMgr.GetI().GetContactByNumber(strNumber); if (info!=null && info.displayName!=null) { sContactName = info.displayName; } else { sContactName =null; } } if (sContactName==null) { return strNumber; } return sContactName; } }