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