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;
}
}