package com.sogouchat.os;
import com.sogouchat.SogouChatApp;
import com.sogouchat.popnewmsg.MultiPopTabActivity;
import com.sogouchat.ui.NewMsgActivity;
import com.sogouchat.util.ActivitityExistHelper;
import com.sogouchat.util.MessageDBHelper;
import android.app.Service;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Binder;
import android.os.IBinder;
public class SmsService extends Service {
private MyBinder mBinder = new MyBinder();
private MsgReceiver smsReceiver ;
private MessageRecv messageRecv ;
public static final String ACTION_NEW_MESSAGE = "smart.new.message";
public static final String ACTION_POSTTONEW_MSG = "smart.new.message.postto.new";
public static final String SMS_NUMBER ="number";
public static final String SMS_BODY = "body";
class MessageRecv extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
if (intent.getAction().equals(ACTION_NEW_MESSAGE)) {
String strNumber = intent.getStringExtra(SMS_NUMBER);
String strBody = intent.getStringExtra(SMS_BODY);
SendToUINewMessage(strNumber, strBody);
}
}
}
public void SendToUINewMessage(String strNumber,String strBody){
MessageDBHelper.InsertSMS(getApplicationContext(), strNumber, strBody);
int nRet=ActivitityExistHelper.GetCurrentAcitivity(getApplicationContext());
switch (nRet) {
case ActivitityExistHelper.PACK_IN:
break;
case ActivitityExistHelper.PACK_IN_ITEM:
break;
case ActivitityExistHelper.PACK_IN_LIST:
break;
case ActivitityExistHelper.PACK_IN_NEW:
Intent iToNew = new Intent();
iToNew.setAction(SmsService.ACTION_POSTTONEW_MSG);
iToNew.putExtra(SmsService.SMS_NUMBER,strNumber);
iToNew.putExtra(SmsService.SMS_BODY, strBody);
getApplicationContext().sendBroadcast(iToNew);
break;
case ActivitityExistHelper.PACK_NOT:
Intent i = new Intent();
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.setClass(getApplicationContext(), MultiPopTabActivity.class);
i.putExtra(NewMsgActivity.S_TITLE,strNumber );
i.putExtra(NewMsgActivity.S_DATE, strBody);
getApplicationContext().startActivity(i);
break;
default:
break;
}
}
@Override
public IBinder onBind(Intent arg0) {
// TODO Auto-generated method stub
return mBinder;
}
public class MyBinder extends Binder{
SmsService getService()
{
return SmsService.this;
}
}
@Override
public void onCreate() {
// TODO Auto-generated method stub
smsReceiver = new MsgReceiver();
IntentFilter intentFilter=new IntentFilter("android.provider.Telephony.SMS_RECEIVED");
intentFilter.setPriority(2147483647);
registerReceiver(smsReceiver, intentFilter);
IntentFilter intentFilter2 = new IntentFilter(ACTION_NEW_MESSAGE);
messageRecv = new MessageRecv();
registerReceiver(messageRecv, intentFilter2);
super.onCreate();
}
@Override
public void onStart(Intent intent, int startId) {
// TODO Auto-generated method stub
super.onStart(intent, startId);
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
// TODO Auto-generated method stub
if (intent!=null) {
String strNumber = intent.getStringExtra(SMS_NUMBER);
String strBody = intent.getStringExtra(SMS_BODY);
if (strNumber!=null && strNumber.length()>1) {
SendToUINewMessage(strNumber, strBody);
}
}
return super.onStartCommand(intent, flags, startId);
}
public SogouChatApp getApp(){
return (SogouChatApp)getApplication();
}
}