diff --git a/rcs_service_aidl/rcs_service_aidl.xml b/rcs_service_aidl/rcs_service_aidl.xml
index 441fead..3b41833 100644
--- a/rcs_service_aidl/rcs_service_aidl.xml
+++ b/rcs_service_aidl/rcs_service_aidl.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
     <!--
-        Copyright (c) 2014 pci-suntektech Technologies, Inc.
+        Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.
         All Rights Reserved.
         pci-suntektech Technologies Proprietary and Confidential.
     -->
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/common/DeviceApiConstant.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/common/DeviceApiConstant.java
new file mode 100644
index 0000000..a8ed3f8
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/common/DeviceApiConstant.java
@@ -0,0 +1,340 @@
+/*
+ * Copyright (c) 2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * pci-suntektech Technologies Proprietary and Confidential.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to
+ * deal in the Software without restriction, including without limitation the
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ * IN THE SOFTWARE.
+ */
+
+package com.suntek.mway.rcs.client.aidl.common;
+
+public interface DeviceApiConstant {
+    public static interface ChatProvider {
+        public static final int INCOMING = 0;
+
+        public static final int OUTGOING = 1;
+
+        public static final int UNREAD = 0;
+
+        public static final int READ = 2;
+
+        public static final int SENDING = 3;
+
+        public static final int SENT = 4;
+
+        public static final int FAILED = 5;
+
+        public static final int TO_SEND = 6;
+        public static final int DELIVERED = 7;
+
+        public static final int OTO = 1;
+
+        public static final int OTM = 2;
+
+        public static final int MTM = 3;
+
+        public static final int OFFICIAL = 4;
+        public static final int SMSMMS = 0;
+        public static final int SMS = 1;
+
+        public static final int MMS = 2;
+
+        public static final int IM = 3;
+
+        public static final int FT = 5;
+
+        public static final int XML = 4;
+
+        public static final String MESSAGE_ID = "CHATMESSAGE_MESSAGE_ID";
+
+        public static final String CHAT_ID = "CHATMESSAGE_CHAT_ID";
+
+        public static final String CONTACT_NUMBER = "CHATMESSAGE_CONTACT_NUMBER";
+
+        public static final String BODY = "CHATMESSAGE_BODY";
+
+        public static final String TIMESTAMP = "CHATMESSAGE_TIMESTAMP";
+
+        public static final String MIME_TYPE = "CHATMESSAGE_MIME_TYPE";
+
+        public static final String MESSAGE_STATUS = "CHATMESSAGE_MESSAGE_STATUS";
+
+        public static final String DIRECTION = "CHATMESSAGE_DIRECTION";
+
+        public static final String TYPE = "CHATMESSAGE_TYPE";
+
+        public static final String FLAG = "CHATMESSAGE_FLAG";
+
+        public static final String FAVORITE = "CHATMESSAGE_FAVORITE";
+
+        public static final String ISBLOCKED = "CHATMESSAGE_ISBLOCKED";
+
+        public static final String CONVERSATION_ID = "CHATMESSAGE_CONVERSATION_ID";
+        public static final String CONVERSATION = "CHATMESSAGE_CONVERSATION";
+        public static final String UNREAD_COUNT = "CHATMESSAGE_UNREAD_COUNT";
+        public static final String MESSAGE_COUNT = "CHATMESSAGE_MESSAGE_COUNT";
+        //public static final String DELIVERED = "CHATMESSAGE_DELIVERED";
+        public static final String FILENAME = "CHATMESSAGE_FILENAME";
+        public static final String FILEICON = "CHATMESSAGE_FILEICON";
+        public static final String FILESIZE  = "CHATMESSAGE_FILESIZE";
+        public static final String RECIPIENTS = "CHATMESSAGE_RECIPIENTS";
+    }
+
+    public static interface CapabilityProvider {
+
+        public final static String CONTACT_NUMBER = "CONTACT_NUMBER";
+
+        public final static String CAPABILITY_IMAGE_SHARING = "CAPABILITY_IMAGE_SHARING";
+
+        public final static String CAPABILITY_VIDEO_SHARING = "CAPABILITY_VIDEO_SHARING";
+
+        public final static String CAPABILITY_IM_SESSION = "CAPABILITY_IM_SESSION";
+
+        public final static String CAPABILITY_FILE_TRANSFER = "CAPABILITY_FILE_TRANSFER";
+
+        public final static String CAPABILITY_GEOLOC_PUSH = "CAPABILITY_GEOLOC_PUSH";
+
+        public final static String CAPABILITY_IP_VOICE_CALL = "CAPABILITY_IP_VOICE_CALL";
+
+        public final static String CAPABILITY_IP_VIDEO_CALL = "CAPABILITY_IP_VIDEO_CALL";
+
+        public final static String CAPABILITY_EXTENSIONS = "CAPABILITY_EXTENSIONS";
+    }
+
+    public static interface ProfileProvider {
+        public final static String PHONE_NUMBER = "PROFILE_PHONENUMBER";
+
+        public final static String FIRST_NAME = "PROFILE_FIRST_NAME";
+
+        public final static String LAST_NAME = "PROFILE_LAST_NAME";
+
+        public final static String PROTRAIT = "PROFILE_PORTRAIT";
+
+        public final static String PROTRAIT_TYPE = "PROFILE_PORTRAIT_TYPE";
+
+        public final static String ADDRESS = "PROFILE_ADDRESS";
+
+        public final static String PHONE_NUMBER_SECOND = "PROFILE_PHONE_NUMBER_SECOND";
+
+        public final static String EMAIL = "PROFILE_EMAIL";
+
+        public final static String BIRTHDAY = "PROFILE_BIRTHDAY";
+
+        public final static String COMPANY = "PROFILE_COMPANY";
+
+        public final static String COMPANY_TEL = "PROFILE_COMPANY_TEL";
+
+        public final static String TITLE = "PROFILE_TITLE";
+
+        public final static String COMPANY_ADDR = "PROFILE_COMPANY_ADDR";
+
+        public final static String COMPANY_FAX = "PROFILE_COMPANY_FAX";
+
+        public final static String HOME1 = "PROFILE_HOME1";
+
+        public final static String HOME2 = "PROFILE_HOME2";
+
+        public final static String HOME3 = "PROFILE_HOME3";
+
+        public final static String HOME4 = "PROFILE_HOME4";
+
+        public final static String HOME5 = "PROFILE_HOME5";
+
+        public final static String HOME6 = "PROFILE_HOME6";
+
+        public final static String WORK1 = "PROFILE_WORK1";
+
+        public final static String WORK2 = "PROFILE_WORK2";
+
+        public final static String WORK3 = "PROFILE_WORK3";
+
+        public final static String WORK4 = "PROFILE_WORK4";
+
+        public final static String WORK5 = "PROFILE_WORK5";
+
+        public final static String WORK6 = "PROFILE_WORK6";
+
+        public final static String OTHER1 = "PROFILE_OTHER1";
+
+        public final static String OTHER2 = "PROFILE_OTHER2";
+
+        public final static String OTHER3 = "PROFILE_OTHER3";
+
+        public final static String OTHER4 = "PROFILE_OTHER4";
+
+        public final static String OTHER5 = "PROFILE_OTHER5";
+
+        public final static String OTHER6 = "PROFILE_OTHER6";
+
+        public final static String JPEG = "JPEG";
+
+        public final static String BMP = "BMP";
+
+        public final static String PNG = "PNG";
+
+        public final static String GIF = "GIF";
+
+        public final static String JPG = "JPG";
+    }
+
+    public static interface GroupChatProvider {
+        public static final String CHAT_ID = "GROUPCHATSERVICE_CHAT_ID";
+
+        public static final String STATE = "GROUPCHATSERVICE_STATE";
+
+        public static final String SUBJECT = "GROUPCHATSERVICE_SUBJECT";
+
+        public static final String CHAIRMEN = "GROUPCHATSERVICE_CHAIRMEN";
+
+        public static final String NICK_NAME = "GROUPCHATSERVICE_NICK_NAME";
+
+        public static final String TIME_STAMP = "GROUPCHATSERVICE_TIME_STAMP";
+
+        public static final String DIRECTION = "GROUPCHATSERVICE_DIRECTION";
+
+        public static final String PHONE_NUMBER = "GROUPCHATSERVICE_PHONE_NUMBER";
+
+        public static final String MEMBER_NAME = "GROUPCHATSERVICE_MEMBER_NAME";
+
+        public static final String PROTRAIT = "GROUPCHATSERVICE_PORTRAIT";
+
+        public static final String PROTRAIT_TYPE = "GROUPCHATSERVICE_PORTRAIT_TYPE";
+
+        public static final int INVITED = 1;
+
+        public static final int INITIATED = 2;
+
+        public static final int STARTED = 3;
+
+        public static final int TERMINATED = 4;
+
+        public static final int CLOSED_BY_USER = 5;
+
+        public static final int ABORTED = 6;
+
+        public static final int FAILED = 7;
+
+    }
+
+    public static interface PublicAccountProvider {
+        public static final int UNREAD = 0;
+
+        public static final int READ = 2;
+
+        public static final int SENDING = 3;
+
+        public static final int SENT = 4;
+
+        public static final int FAILED = 5;
+
+        public static final int TO_SEND = 6;
+
+        public static final int DELIVERED = 7;
+
+        public static final int INCOMING = 0;
+
+        public static final int OUTGOING = 1;
+
+        public static final int FT = 5;
+
+        public static final int XML = 4;
+
+        public static final String MESSAGE_ID = "PUBLICACCOUNTSERVICE_MESSAGE_ID";
+
+        public static final String ACCOUNT = "PUBLICACCOUNTSERVICE_ACCOUNT";
+
+        public static final String BODY = "PUBLICACCOUNTSERVICE_BODY";
+
+        public static final String TIMESTAMP = "PUBLICACCOUNTSERVICE_TIMESTAMP";
+
+        public static final String MIME_TYPE = "PUBLICACCOUNTSERVICE_MIME_TYPE";
+
+        public static final String MESSAGE_STATUS = "PUBLICACCOUNTSERVICE_MESSAGE_STATUS";
+
+        public static final String DIRECTION = "PUBLICACCOUNTSERVICE_DIRECTION";
+
+        public static final String ID = "PUBLICACCOUNTSERVICE_ID";
+
+        public static final String NAME = "PUBLICACCOUNTSERVICE_NAME";
+
+        public static final String PORTRAIT = "PUBLICACCOUNTSERVICE_PORTRAIT";
+
+        public static final String PORTRAIT_TYPE = "PUBLICACCOUNTSERVICE_PORTRAIT_TYPE";
+
+        public static final String STATE = "PUBLICACCOUNTSERVICE_STATE";
+
+        public static final String BRIEF_INTRODUCTION = "PUBLICACCOUNTSERVICE_BRIEF_INTRODUCTION";
+
+        public static final String CONFIG = "PUBLICACCOUNTSERVICE_CONFIG";
+
+        public static final String TYPE = "PUBLICACCOUNTSERVICE_TYPE";
+
+        public static final String JPEG = "JPEG";
+
+        public static final String BMP = "BMP";
+
+        public static final String PNG = "PNG";
+
+        public static final String GIF = "GIF";
+
+    }
+
+    public static interface BlacklistProvider {
+        public static final String PHONE_NUMBER = "BLACKLIST_PHONE_NUMBER";
+
+        public static final String NAME = "BLACKLIST_NAME";
+
+        public static final String CALL_ID = "BLACKLIST_CALL_ID";
+    }
+
+    public static interface FileTransferProvider {
+        public static final String FT_ID = "FT_ID";
+
+        public static final String CONTACT_NUMBER = "CONTACT_NUMBER";
+
+        public static final String FILENAME = "FILENAME";
+
+        public static final String TYPE = "TYPE";
+
+        public static final String FILEICON = "FILEICON";
+
+        public static final String DIRECTION = "DIRECTION";
+
+        public static final String FILE_SIZE = "FILE_SIZE";
+
+        public static final String TRANSFERRED_SIZE = "TRANSFERRED";
+
+        public static final String TIMESTAMP = "TIMESTAMP";
+
+        public static final String STATE = "STATE";
+
+        public final static int INVITED = 0;
+
+        public final static int INITIATED = 1;
+
+        public final static int STARTED = 2;
+
+        public final static int TRANSFERRED = 3;
+
+        public final static int ABORTED = 4;
+
+        public final static int FAILED = 5;
+
+        public final static int PAUSED = 6;
+    }
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/common/RcsColumns.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/common/RcsColumns.java
index 5f2836b..d9d2355 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/common/RcsColumns.java
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/common/RcsColumns.java
@@ -83,6 +83,8 @@
         public final static String RCS_FILE_RECORD = "rcs_file_record";
 
         public final static String PHONE_ID = "phone_id";
+
+        public final static String SUB_ID = "sub_id";
     }
 
     /**
@@ -101,6 +103,8 @@
         public final static String RCS_CHAT_TYPE = "msg_chat_type";
 
         public final static String RCS_MSG_TYPE = "last_msg_type";
+
+        public final static String RCS_UNREAD_COUNT = "rcs_unread_count";
     }
 
     /**
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/constant/Actions.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/constant/Actions.java
index 7a5f21d..393eb4a 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/constant/Actions.java
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/constant/Actions.java
@@ -31,6 +31,9 @@
         // status changed broadcast
         public final static String ACTION_REGISTER_STATUS_CHANGED = Main.PACKAGE_NAME
                 + ".ACTION_REGISTER_STATUS_CHANGED";
+        // unRegister finished broadcast
+        public final static String ACTION_UNREGISTER_FINISHED = Main.PACKAGE_NAME
+                + ".ACTION_UNREGISTER_FINISHED";
 
     }
 
@@ -135,6 +138,9 @@
 
         public static final String ACTION_MESSAGE_FIREWALL_BLOCK_RECORD = Main.PACKAGE_NAME
                 + ".ACTION_MESSAGE_FIREWALL_BLOCK_RECORD";
+
+        public static final String ACTION_MESSAGE_SMS_POLICY_NOT_SET = Main.PACKAGE_NAME
+                + ".ACTION_MESSAGE_SMS_POLICY_NOT_SET";
     }
 
     public static class PluginAction {
@@ -149,7 +155,7 @@
                 + ".ACTION_PLUGIN_INIT_SUCCESS";
 
         public static final String ACTION_PLUGIN_INIT_FAILED = Main.PACKAGE_NAME
-                + ".ACTION_PLUGIN_INIT_SUCCESS";
+                + ".ACTION_PLUGIN_INIT_FAILED";
 
         // profile
         public static final String ACTION_PROFILE_UPDATE_CONTACT = Main.PACKAGE_NAME
@@ -175,4 +181,15 @@
                 + ".ACTION_MCLOUD_SHARE_FILE";
     }
 
+    public static class PermissionAction {
+
+        public static final String ACTION_PERMISSION_NO_GRANTED_SERVICE = Main.PACKAGE_NAME
+                + ".ACTION_PERMISSION_NO_GRANTED";
+
+        public static final String ACTION_PERMISSION_NO_GRANTED_PLUGIN
+                = "com.suntek.mway.rcs.app.plugin.ACTION_PERMISSION_NO_GRANTED";
+
+        public static final String ACTION_PERMISSION_NO_GRANTED_GBA
+                = "com.cmcc.proxy.ACTION_PERMISSION_NO_GRANTED";
+    }
 }
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/constant/Constants.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/constant/Constants.java
index d45e967..745aa00 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/constant/Constants.java
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/constant/Constants.java
@@ -144,6 +144,12 @@
 
         public static final int CONST_MESSAGE_OTHER_FILE = 10;
 
+        public static final int CONST_MESSAGE_PUBLIC_ACCOUNT_SYNC_SUBSCRIBE = 11;
+
+        public static final int CONST_MESSAGE_PUBLIC_ACCOUNT_SYNC_DETAIL = 12;
+
+        public static final int CONST_DIRECTION_SEND_FAILED = 5;
+
         public static final int CONST_DIRECTION_SEND = 2;
 
         public static final int CONST_DIRECTION_RECEIVE = 1;
@@ -189,6 +195,8 @@
         public static final int CONST_SEND_POLICY_FORWARD_SMS = 1;
 
         public static final int CONST_SEND_POLICY_NOT_FORWARD_SMS = 2;
+
+        public static final int CONST_SEND_POLICY_DEFAULT_NOT_SET = -1;
     }
 
     public static class GroupChatConstants {
@@ -233,6 +241,12 @@
 
         public static final String CONST_NOTIFY_SET_POLICY = "setpolicy";
 
+        public static final String CONST_NOTIFY_FAILED = "failed";
+
+        public static final String CONST_NOTIFY_GROUP_FULL = "groupfull";
+
+        public static final String CONST_NOTIFY_INVITE_EXPIRED = "inviteExpired";
+
         /**
          * Group chat manager broadcast parameter type definition
          */
@@ -260,6 +274,10 @@
 
         public static final int CONST_REACHED_MAX_COUNT = 12;
 
+        public static final int CONST_GROUP_FULL = 13;
+
+        public static final int CONST_INVITE_EXPIRED = 14;
+
         /**
          * Group chat operation definition
          */
@@ -658,6 +676,12 @@
         public static Uri CONST_THREAD_ID_URI = Uri
                 .parse("content://com.suntek.mway.rcs.app.service.threads/id");
 
+        public static Uri CONST_THREAD_UPDATE_TOP_URI = Uri
+                .parse("content://com.suntek.mway.rcs.app.service.threads/update-top");
+
+        public static Uri CONST_THREAD_DELETE_URI = Uri
+                .parse("content://com.suntek.mway.rcs.app.service.threads/delete");
+
         public static interface Thread extends BaseColumns {
             public static final String NUMBER = "rcs_number";
 
@@ -756,6 +780,10 @@
             public static final String FAVOURITE = "favourite";
 
             public static final String PHONE_ID = "phone_id";
+
+            public static final String SUB_ID = "sub_id";
+
+            public static final String DOWN_LOAD_OK = "rcs_is_download";
         }
     }
 
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/constant/Parameter.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/constant/Parameter.java
index 1de24d7..2a47d06 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/constant/Parameter.java
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/constant/Parameter.java
@@ -55,6 +55,8 @@
 
     public static final String EXTRA_TRANSFER_TOTAL_SIZE = "totalSize";
 
+    public static final String EXTRA_PHONE_ID = "phoneId";
+
     // Group chat
     public static final String EXTRA_INVITE_NUMBER = "inviteNumber";
 
@@ -131,4 +133,6 @@
 
     public static final String EXTRA_ERROR_PHRASE = "errorPhrase";
 
+    //permission
+    public static final String EXTRA_DENY_PERMISSIONS = "denyPermission";
 }
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/callback/ICloudOperationCtrl.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/callback/ICloudOperationCtrl.aidl
index a262b11..2510b35 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/callback/ICloudOperationCtrl.aidl
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/callback/ICloudOperationCtrl.aidl
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/callback/IContactSyncListener.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/callback/IContactSyncListener.aidl
index 62d3f67..15bd26a 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/callback/IContactSyncListener.aidl
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/callback/IContactSyncListener.aidl
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/callback/IProfileListener.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/callback/IProfileListener.aidl
index 07b1bca..6aa40b7 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/callback/IProfileListener.aidl
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/callback/IProfileListener.aidl
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/callback/IPublicAccountCallbackAPI.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/callback/IPublicAccountCallbackAPI.aidl
index 43cd0ca..2db4cb3 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/callback/IPublicAccountCallbackAPI.aidl
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/callback/IPublicAccountCallbackAPI.aidl
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/cloudfile/AuthNode.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/cloudfile/AuthNode.aidl
index a5ec744..156b781 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/cloudfile/AuthNode.aidl
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/cloudfile/AuthNode.aidl
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/cloudfile/AuthNodeUpdateInfo.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/cloudfile/AuthNodeUpdateInfo.aidl
index 5a0b97e..30ac1df 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/cloudfile/AuthNodeUpdateInfo.aidl
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/cloudfile/AuthNodeUpdateInfo.aidl
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/cloudfile/CloudFileMessage.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/cloudfile/CloudFileMessage.java
index 1fbacc2..552ce18 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/cloudfile/CloudFileMessage.java
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/cloudfile/CloudFileMessage.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/cloudfile/ConfNode.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/cloudfile/ConfNode.aidl
index 99fc5ef..3a88fbb 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/cloudfile/ConfNode.aidl
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/cloudfile/ConfNode.aidl
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/cloudfile/Config.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/cloudfile/Config.aidl
index 712ffcd..41ce981 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/cloudfile/Config.aidl
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/cloudfile/Config.aidl
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/cloudfile/Error.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/cloudfile/Error.java
index 696102f..3d11b47 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/cloudfile/Error.java
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/cloudfile/Error.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/cloudfile/Event.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/cloudfile/Event.java
index bf0e918..dff888e 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/cloudfile/Event.java
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/cloudfile/Event.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/cloudfile/FileNode.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/cloudfile/FileNode.aidl
index 7e37450..21dd93d 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/cloudfile/FileNode.aidl
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/cloudfile/FileNode.aidl
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/cloudfile/MsgNode.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/cloudfile/MsgNode.aidl
index 7246859..8765309 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/cloudfile/MsgNode.aidl
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/cloudfile/MsgNode.aidl
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/cloudfile/Param.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/cloudfile/Param.aidl
index 8950dae..781d572 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/cloudfile/Param.aidl
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/cloudfile/Param.aidl
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/cloudfile/Result.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/cloudfile/Result.aidl
index 85c2f8a..2e4259f 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/cloudfile/Result.aidl
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/cloudfile/Result.aidl
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/cloudfile/SdkType.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/cloudfile/SdkType.java
index e1ad856..3191a59 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/cloudfile/SdkType.java
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/cloudfile/SdkType.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/cloudfile/ShareNode.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/cloudfile/ShareNode.aidl
index d449b1c..1d5125f 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/cloudfile/ShareNode.aidl
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/cloudfile/ShareNode.aidl
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/cloudfile/Status.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/cloudfile/Status.java
index f8ec769..cddc540 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/cloudfile/Status.java
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/cloudfile/Status.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/cloudfile/TransNode.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/cloudfile/TransNode.aidl
index b391dc9..b0f51e5 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/cloudfile/TransNode.aidl
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/cloudfile/TransNode.aidl
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/contact/Auth.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/contact/Auth.aidl
index 06ad2ed..4063f5e 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/contact/Auth.aidl
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/contact/Auth.aidl
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/contact/Auth.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/contact/Auth.java
index 37249b6..1ee984b 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/contact/Auth.java
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/contact/Auth.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/contact/ContactAction.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/contact/ContactAction.java
index 2775558..6fb0d62 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/contact/ContactAction.java
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/contact/ContactAction.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/contact/IntervalAction.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/contact/IntervalAction.java
index ef0e5a9..96bc68c 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/contact/IntervalAction.java
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/contact/IntervalAction.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/contact/SyncAction.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/contact/SyncAction.java
index ffec888..811bce7 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/contact/SyncAction.java
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/contact/SyncAction.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/emoticon/EmojiPackageBO.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/emoticon/EmojiPackageBO.aidl
index 3184160..720f5d2 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/emoticon/EmojiPackageBO.aidl
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/emoticon/EmojiPackageBO.aidl
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/emoticon/EmojiPackageBO.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/emoticon/EmojiPackageBO.java
index dad52b0..0b7b85d 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/emoticon/EmojiPackageBO.java
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/emoticon/EmojiPackageBO.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/emoticon/EmoticonBO.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/emoticon/EmoticonBO.aidl
index 00eba0b..d8e89a8 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/emoticon/EmoticonBO.aidl
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/emoticon/EmoticonBO.aidl
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/emoticon/EmoticonBO.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/emoticon/EmoticonBO.java
index 34c9d62..f494900 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/emoticon/EmoticonBO.java
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/emoticon/EmoticonBO.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/emoticon/EmoticonConstant.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/emoticon/EmoticonConstant.java
index 46fc823..6557bdf 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/emoticon/EmoticonConstant.java
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/emoticon/EmoticonConstant.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/emoticon/ResultBO.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/emoticon/ResultBO.aidl
index 6f8a60b..18cf22c 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/emoticon/ResultBO.aidl
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/emoticon/ResultBO.aidl
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/emoticon/ResultBO.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/emoticon/ResultBO.java
index a68ea43..4f0d48f 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/emoticon/ResultBO.java
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/emoticon/ResultBO.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/emoticon/UserBO.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/emoticon/UserBO.aidl
index eadb7a0..a33f8e1 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/emoticon/UserBO.aidl
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/emoticon/UserBO.aidl
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/emoticon/UserBO.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/emoticon/UserBO.java
index 6e23632..c9db52e 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/emoticon/UserBO.java
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/emoticon/UserBO.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/profile/Avatar.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/profile/Avatar.aidl
index 0ecc9e8..6ef37e7 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/profile/Avatar.aidl
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/profile/Avatar.aidl
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/profile/Avatar.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/profile/Avatar.java
index ff4eba8..4e9ceb3 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/profile/Avatar.java
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/profile/Avatar.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/profile/BaseModel.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/profile/BaseModel.aidl
index 434fe5f..18187c4 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/profile/BaseModel.aidl
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/profile/BaseModel.aidl
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/profile/BaseModel.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/profile/BaseModel.java
index 910cfa3..411779d 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/profile/BaseModel.java
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/profile/BaseModel.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/profile/OtherTels.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/profile/OtherTels.aidl
index 391fa8a..7ee3ece 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/profile/OtherTels.aidl
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/profile/OtherTels.aidl
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/profile/OtherTels.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/profile/OtherTels.java
index 17857ae..1b389b2 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/profile/OtherTels.java
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/profile/OtherTels.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/profile/Profile.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/profile/Profile.aidl
index c1eb3b7..5777e36 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/profile/Profile.aidl
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/profile/Profile.aidl
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/profile/Profile.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/profile/Profile.java
index cf73797..a6b2eeb 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/profile/Profile.java
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/profile/Profile.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/profile/ProfileName.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/profile/ProfileName.aidl
index 7544512..ee74a6e 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/profile/ProfileName.aidl
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/profile/ProfileName.aidl
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/profile/ProfileName.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/profile/ProfileName.java
index fc80148..c3ba82b 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/profile/ProfileName.java
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/profile/ProfileName.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/profile/QRCardBusinessFlag.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/profile/QRCardBusinessFlag.aidl
index 745f79f..33eb693 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/profile/QRCardBusinessFlag.aidl
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/profile/QRCardBusinessFlag.aidl
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/profile/QRCardBusinessFlag.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/profile/QRCardBusinessFlag.java
index c941469..c2afa0b 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/profile/QRCardBusinessFlag.java
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/profile/QRCardBusinessFlag.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/profile/QRCardImg.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/profile/QRCardImg.aidl
index 18d952c..fc1c5c4 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/profile/QRCardImg.aidl
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/profile/QRCardImg.aidl
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/profile/QRCardImg.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/profile/QRCardImg.java
index e1b8230..1f80210 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/profile/QRCardImg.java
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/profile/QRCardImg.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/profile/QRCardInfo.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/profile/QRCardInfo.aidl
index ac718f1..e762757 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/profile/QRCardInfo.aidl
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/profile/QRCardInfo.aidl
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/profile/QRCardInfo.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/profile/QRCardInfo.java
index b98afaf..8cb9dcf 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/profile/QRCardInfo.java
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/profile/QRCardInfo.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/profile/TelephoneModel.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/profile/TelephoneModel.aidl
index 5cd8738..f80ca76 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/profile/TelephoneModel.aidl
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/profile/TelephoneModel.aidl
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/profile/TelephoneModel.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/profile/TelephoneModel.java
index bff4000..5a2a38c 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/profile/TelephoneModel.java
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/profile/TelephoneModel.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/MediaArticle.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/MediaArticle.aidl
index 3919bb9..c493646 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/MediaArticle.aidl
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/MediaArticle.aidl
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/MediaArticle.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/MediaArticle.java
index f82b3be..cbd3797 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/MediaArticle.java
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/MediaArticle.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/MediaBasic.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/MediaBasic.aidl
index d3a7ddd..2242f5f 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/MediaBasic.aidl
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/MediaBasic.aidl
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/MediaBasic.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/MediaBasic.java
index 4942b17..85f1df6 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/MediaBasic.java
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/MediaBasic.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/MenuInfo.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/MenuInfo.aidl
index a88a8ca..db4a136 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/MenuInfo.aidl
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/MenuInfo.aidl
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/MenuInfo.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/MenuInfo.java
index 1738945..eb7a6ec 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/MenuInfo.java
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/MenuInfo.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/MenuInfoMode.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/MenuInfoMode.aidl
index 9cb1d80..2d5a362 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/MenuInfoMode.aidl
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/MenuInfoMode.aidl
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/MenuInfoMode.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/MenuInfoMode.java
index bf92fc7..7623a1e 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/MenuInfoMode.java
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/MenuInfoMode.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/MsgContent.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/MsgContent.aidl
index c9f78fa..2ce4885 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/MsgContent.aidl
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/MsgContent.aidl
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/MsgContent.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/MsgContent.java
index 413a55e..6c6e7eb 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/MsgContent.java
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/MsgContent.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/PublicAccountCallbackType.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/PublicAccountCallbackType.aidl
index 6450f41..f7b213f 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/PublicAccountCallbackType.aidl
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/PublicAccountCallbackType.aidl
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/PublicAccountCallbackType.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/PublicAccountCallbackType.java
index a488a1b..4a307d1 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/PublicAccountCallbackType.java
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/PublicAccountCallbackType.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/PublicAccountConstant.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/PublicAccountConstant.java
index ad886c7..d10bd1c 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/PublicAccountConstant.java
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/PublicAccountConstant.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/PublicAccountReqEntity.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/PublicAccountReqEntity.aidl
index aada81e..56162a1 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/PublicAccountReqEntity.aidl
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/PublicAccountReqEntity.aidl
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/PublicAccountReqEntity.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/PublicAccountReqEntity.java
index 222927c..1234750 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/PublicAccountReqEntity.java
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/PublicAccountReqEntity.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/PublicAccounts.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/PublicAccounts.aidl
index db38fa9..a9ba82c 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/PublicAccounts.aidl
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/PublicAccounts.aidl
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/PublicAccounts.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/PublicAccounts.java
index f1dd620..deb3e34 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/PublicAccounts.java
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/PublicAccounts.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/PublicAccountsDetail.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/PublicAccountsDetail.aidl
index 17e64c8..0abb789 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/PublicAccountsDetail.aidl
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/PublicAccountsDetail.aidl
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/PublicAccountsDetail.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/PublicAccountsDetail.java
index 7a249de..b0c6e2c 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/PublicAccountsDetail.java
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/PublicAccountsDetail.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/PublicMediaMessage.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/PublicMediaMessage.java
index e4f2591..3f7f38e 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/PublicMediaMessage.java
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/PublicMediaMessage.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/PublicMessage.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/PublicMessage.java
index 582d05e..e0bf737 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/PublicMessage.java
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/PublicMessage.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -58,6 +58,12 @@
     /** The Constant VCARD. */
     public static final String VCARD = "18";
 
+    /** The Constant SYNC_SUBSCRIBE. */
+    public static final String SYNC_SUBSCRIBE = "71";
+
+    /** The Constant SYNC_DETAIL. */
+    public static final String SYNC_DETAIL = "72";
+
     /** The createtime. */
     protected String createtime;
 
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/PublicTopicMessage.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/PublicTopicMessage.java
index cc5a806..0ca2dc2 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/PublicTopicMessage.java
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/pubacct/PublicTopicMessage.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/richscrn/PhoneEvent.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/richscrn/PhoneEvent.java
index 2b36c64..95618c6 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/richscrn/PhoneEvent.java
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/richscrn/PhoneEvent.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/richscrn/PhoneList.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/richscrn/PhoneList.aidl
index a58aacd..3cbd97b 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/richscrn/PhoneList.aidl
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/richscrn/PhoneList.aidl
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/richscrn/PhoneList.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/richscrn/PhoneList.java
index e9a9c13..3ea6796 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/richscrn/PhoneList.java
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/richscrn/PhoneList.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/richscrn/ResultInfo.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/richscrn/ResultInfo.aidl
index e4caf06..f9712db 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/richscrn/ResultInfo.aidl
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/richscrn/ResultInfo.aidl
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/richscrn/ResultInfo.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/richscrn/ResultInfo.java
index aea0b7d..ad4ef23 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/richscrn/ResultInfo.java
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/richscrn/ResultInfo.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/richscrn/ResultUtil.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/richscrn/ResultUtil.aidl
index f05028d..945dc6d 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/richscrn/ResultUtil.aidl
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/richscrn/ResultUtil.aidl
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/richscrn/ResultUtil.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/richscrn/ResultUtil.java
index 1ba5031..71662c9 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/richscrn/ResultUtil.java
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/richscrn/ResultUtil.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/richscrn/RichScrnConstant.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/richscrn/RichScrnConstant.java
index 0c9229c..760d8cb 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/richscrn/RichScrnConstant.java
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/richscrn/RichScrnConstant.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/richscrn/RichScrnShowing.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/richscrn/RichScrnShowing.aidl
index 5ecaf02..44ed8c3 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/richscrn/RichScrnShowing.aidl
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/richscrn/RichScrnShowing.aidl
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/richscrn/RichScrnShowing.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/richscrn/RichScrnShowing.java
index c96db53..ed97279 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/richscrn/RichScrnShowing.java
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/plugin/entity/richscrn/RichScrnShowing.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/service/IServiceApi.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/service/IServiceApi.aidl
index 3519002..4a213f2 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/service/IServiceApi.aidl
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/service/IServiceApi.aidl
@@ -40,6 +40,7 @@
 
     void openAccount();
     void rejectOpenAccount();
+    void getConfiguration();
     void getConfigurationWithOtp(String otpCode);
     String getAccount();
     boolean isOnline();
@@ -49,6 +50,7 @@
     void download(long id);
     void complain(long id);
     void backupAll();
+    void backUpFavouriteAll();
     void backup(in List<SimpleMessage> simpleMessageList);
     void burnAll();
     //void burn(long id);
@@ -74,19 +76,20 @@
     int deleteMessageByThreadId(long threadId);
     int deleteMessage(long id);
     void restoreAll();
+    void restoreAllFavourite();
     void startComposing(long threadId, String number, String contentType, int seconds);
     void stopComposing(long threadId, String number, String contentType, long lastActive);
     void resend(long id);
     long sendText(in List<String> numberList, long threadId, String text, int barCycle);
-    long sendImage(in List<String> numberList, long threadId, String filepath, int quality, boolean isRecord, int barCycle);
+    long sendImage(in List<String> numberList, long threadId, String filepath, int quality, boolean isRecord, int barCycle, String thumbnailPath);
     long sendAudio(in List<String> numberList, long threadId, String filepath, int duration, boolean isRecord, int barCycle);
-    long sendVideo(in List<String> numberList, long threadId, String filepath, int duration, boolean isRecord, int barCycle);
+    long sendVideo(in List<String> numberList, long threadId, String filepath, int duration, boolean isRecord, int barCycle, String thumbnailPath);
     long sendLocation(in List<String> numberList, long threadId, double lat, double lng, String label, int barCycle);
     long sendVcard(in List<String> numberList, long threadId, String filepath, int barCycle);
     long sendTextToGroupChat(long groupId, long threadId, String text);
-    long sendImageToGroupChat(long groupId, long threadId, String filepath, int quality, boolean isRecord);
+    long sendImageToGroupChat(long groupId, long threadId, String filepath, int quality, boolean isRecord, String thumbnailPath);
     long sendAudioToGroupChat(long groupId, long threadId, String filepath, int duration, boolean isRecord);
-    long sendVideoToGroupChat(long groupId, long threadId, String filepath, int duration, boolean isRecord);
+    long sendVideoToGroupChat(long groupId, long threadId, String filepath, int duration, boolean isRecord, String thumbnailPath);
     long sendLocationToGroupChat(long groupId, long threadId, double lat, double lng, String label);
     long sendVcardToGroupChat(long groupId, long threadId, String filepath);
     void setRemindPolicy(int policy);
@@ -97,7 +100,7 @@
     // specialServiceNumApi
     boolean addSsn(String number);
     boolean disableSsn();
-    boolean deleteSsnPrefix(String number);
+    String deleteSsnPrefix(String number);
     List<String> getSsnList();
     boolean enableSsn();
     boolean deleteSsn(String number);
@@ -124,8 +127,8 @@
     void getMemberAvatarFromServer(long groupChatId, String number, int pixel, in IGroupChatCallback callback);
     void getMemberAvatar(long groupChatId, String number, int pixel, in IGroupChatCallback callback);
     long create(String subject, in List<String> users);
-    int acceptToJoin(long groupChatId);
-    int rejectToJoin(long groupChatId);
+    int acceptToJoin(long groupChatId, String inviteNumber);
+    int rejectToJoin(long groupChatId, String inviteNumber);
     int assignChairman(long groupChatId, String number);
     int disband(long groupChatId);
     int invite(long groupChatId, in List<String> numberList);
@@ -137,6 +140,9 @@
     void setGroupChatRemindPolicy(long groupChatId, int policy);
     int deleteGroupChat(in long[] threadIds);
     int deleteAllGroupChat();
+    int getMyGroupChat();
+    int rejoin(long groupChatId);
+    int getMaxAdhocGroupSize();
 
     // send message of plugin
     // emoticon
@@ -147,9 +153,9 @@
     long sendCloudToGroupChat(long groupId, long threadId, String fileName, long fileSize, String shareUrl);
     // public account
     long sendTextToPublicAccount(String publicAccountId, long threadId, String text);
-    long sendImageToPublicAccount(String publicAccountId, long threadId, String filepath, int quality, boolean isRecord);
+    long sendImageToPublicAccount(String publicAccountId, long threadId, String filepath, int quality, boolean isRecord, String thumbnailPath);
     long sendAudioToPublicAccount(String publicAccountId, long threadId, String filepath, int duration, boolean isRecord);
-    long sendVideoToPublicAccount(String publicAccountId, long threadId, String filepath, int duration, boolean isRecord);
+    long sendVideoToPublicAccount(String publicAccountId, long threadId, String filepath, int duration, boolean isRecord, String thumbnailPath);
     long sendLocationToPublicAccount(String publicAccountId, long threadId, double lat, double lng, String label);
     long sendVcardToPublicAccount(String publicAccountId, long threadId, String filepath);
     long sendCommandToPublicAccount(String publicAccountId, long threadId, String text);
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/service/callback/ICapabiltyListener.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/service/callback/ICapabiltyListener.aidl
index 67a668f..341f6fb 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/service/callback/ICapabiltyListener.aidl
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/service/callback/ICapabiltyListener.aidl
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/service/callback/IGroupChatCallback.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/service/callback/IGroupChatCallback.aidl
index 9d4171f..b0dad16 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/service/callback/IGroupChatCallback.aidl
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/service/callback/IGroupChatCallback.aidl
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/service/entity/GroupChat.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/service/entity/GroupChat.aidl
index f54a3b6..4458ef6 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/service/entity/GroupChat.aidl
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/service/entity/GroupChat.aidl
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/service/entity/GroupChat.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/service/entity/GroupChat.java
index 606afea..e69e815 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/service/entity/GroupChat.java
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/service/entity/GroupChat.java
@@ -44,11 +44,10 @@
 
     public static final int STATUS_REJECT = 14;
 
-    /**
-     * for dual sim card
-     */
     public static final int STATUS_PAUSE = 15;
 
+    public static final int STATUS_GROUP_FULL = 16;
+
     public static final int INCOMING = 1;
 
     public static final int OUTGOING = 2;
@@ -260,6 +259,16 @@
         this.owner = owner;
     }
 
+    public boolean isGroupChatValid() {
+        if (status == GroupChat.STATUS_INITIATED ||
+                status == GroupChat.STATUS_INVITED ||
+                status == GroupChat.STATUS_STARTED) {
+            return true;
+        } else {
+            return false;
+        }
+    }
+
     @Override
     public String toString() {
         StringBuffer buf = new StringBuffer();
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/service/entity/GroupChatMember.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/service/entity/GroupChatMember.aidl
index 1f7b68b..e39c9dc 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/service/entity/GroupChatMember.aidl
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/service/entity/GroupChatMember.aidl
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/service/entity/RCSCapabilities.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/service/entity/RCSCapabilities.aidl
index 32e1152..7a73474 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/service/entity/RCSCapabilities.aidl
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/service/entity/RCSCapabilities.aidl
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/service/entity/SimpleMessage.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/service/entity/SimpleMessage.aidl
index 3020921..ea7bb31 100644
--- a/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/service/entity/SimpleMessage.aidl
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/aidl/service/entity/SimpleMessage.aidl
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_api/rcs_service_api.xml b/rcs_service_api/rcs_service_api.xml
index 42642aa..180508c 100644
--- a/rcs_service_api/rcs_service_api.xml
+++ b/rcs_service_api/rcs_service_api.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
     <!--
-        Copyright (c) 2014 pci-suntektech Technologies, Inc.
+        Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.
         All Rights Reserved.
         pci-suntektech Technologies Proprietary and Confidential.
     -->
diff --git a/rcs_service_api/src/com/suntek/mway/rcs/client/api/basic/BasicApi.java b/rcs_service_api/src/com/suntek/mway/rcs/client/api/basic/BasicApi.java
index a7b1165..3de627d 100644
--- a/rcs_service_api/src/com/suntek/mway/rcs/client/api/basic/BasicApi.java
+++ b/rcs_service_api/src/com/suntek/mway/rcs/client/api/basic/BasicApi.java
@@ -63,6 +63,10 @@
         ServiceApi.getServiceApi().rejectOpenAccount();
     }
 
+    public void getConfiguration() throws RemoteException, ServiceDisconnectedException {
+        ServiceApi.getServiceApi().getConfiguration();
+    }
+
     public void getConfigurationWithOtp(String otpCode) throws RemoteException,
             ServiceDisconnectedException {
         ServiceApi.getServiceApi().getConfigurationWithOtp(otpCode);
diff --git a/rcs_service_api/src/com/suntek/mway/rcs/client/api/capability/CapabiltyListener.java b/rcs_service_api/src/com/suntek/mway/rcs/client/api/capability/CapabiltyListener.java
index 48e4773..d107146 100644
--- a/rcs_service_api/src/com/suntek/mway/rcs/client/api/capability/CapabiltyListener.java
+++ b/rcs_service_api/src/com/suntek/mway/rcs/client/api/capability/CapabiltyListener.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_api/src/com/suntek/mway/rcs/client/api/exception/FileDurationException.java b/rcs_service_api/src/com/suntek/mway/rcs/client/api/exception/FileDurationException.java
index 78c992a..089532d 100644
--- a/rcs_service_api/src/com/suntek/mway/rcs/client/api/exception/FileDurationException.java
+++ b/rcs_service_api/src/com/suntek/mway/rcs/client/api/exception/FileDurationException.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_api/src/com/suntek/mway/rcs/client/api/exception/FileTooLargeException.java b/rcs_service_api/src/com/suntek/mway/rcs/client/api/exception/FileTooLargeException.java
index 82c038f..bfef377 100644
--- a/rcs_service_api/src/com/suntek/mway/rcs/client/api/exception/FileTooLargeException.java
+++ b/rcs_service_api/src/com/suntek/mway/rcs/client/api/exception/FileTooLargeException.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_api/src/com/suntek/mway/rcs/client/api/exception/InviteTooManyUserException.java b/rcs_service_api/src/com/suntek/mway/rcs/client/api/exception/InviteTooManyUserException.java
new file mode 100644
index 0000000..887e127
--- /dev/null
+++ b/rcs_service_api/src/com/suntek/mway/rcs/client/api/exception/InviteTooManyUserException.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * pci-suntektech Technologies Proprietary and Confidential.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to
+ * deal the Software without restriction, including without limitation the
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ * THE SOFTWARE.
+ */
+
+package com.suntek.mway.rcs.client.api.exception;
+
+public class InviteTooManyUserException extends Exception {
+
+    private static final long serialVersionUID = 1L;
+
+    public InviteTooManyUserException() {
+        super();
+    }
+
+    public InviteTooManyUserException(String detailMessage, Throwable throwable) {
+        super(detailMessage, throwable);
+    }
+
+    public InviteTooManyUserException(String detailMessage) {
+        super(detailMessage);
+    }
+
+    public InviteTooManyUserException(Throwable throwable) {
+        super(throwable);
+    }
+
+}
diff --git a/rcs_service_api/src/com/suntek/mway/rcs/client/api/groupchat/GroupChatApi.java b/rcs_service_api/src/com/suntek/mway/rcs/client/api/groupchat/GroupChatApi.java
index fd3c5bd..a1c0529 100644
--- a/rcs_service_api/src/com/suntek/mway/rcs/client/api/groupchat/GroupChatApi.java
+++ b/rcs_service_api/src/com/suntek/mway/rcs/client/api/groupchat/GroupChatApi.java
@@ -25,10 +25,14 @@
 
 import android.os.RemoteException;
 
+import com.suntek.mway.rcs.client.aidl.constant.Constants.GroupChatConstants;
 import com.suntek.mway.rcs.client.aidl.service.entity.GroupChat;
 import com.suntek.mway.rcs.client.aidl.service.entity.GroupChatMember;
 import com.suntek.mway.rcs.client.api.ServiceApi;
+import com.suntek.mway.rcs.client.api.exception.InviteTooManyUserException;
 import com.suntek.mway.rcs.client.api.exception.ServiceDisconnectedException;
+import com.suntek.mway.rcs.client.api.log.LogHelper;
+import com.suntek.mway.rcs.client.api.util.VerificationUtil;
 
 import java.util.List;
 
@@ -86,7 +90,8 @@
         ServiceApi.getServiceApi().getMemberAvatar(groupChatId, number, pixel, callback);
     }
 
-    public int deleteGroupChat(long[] threadIds) throws RemoteException, ServiceDisconnectedException {
+    public int deleteGroupChat(long[] threadIds) throws RemoteException
+        , ServiceDisconnectedException {
         return ServiceApi.getServiceApi().deleteGroupChat(threadIds);
     }
 
@@ -95,18 +100,39 @@
     }
 
     public long create(String subject, List<String> users) throws RemoteException,
-            ServiceDisconnectedException {
+            ServiceDisconnectedException, InviteTooManyUserException {
+        if (!VerificationUtil.isAllNumber(users)) {
+            LogHelper.i("number field value error");
+            return GroupChatConstants.CONST_OTHRE_ERROR;
+        }
+
+        int maxSize = getMaxAdhocGroupSize();
+        if (users.size() > maxSize) {
+            throw new InviteTooManyUserException(String.valueOf(maxSize));
+        }
+
+        users = VerificationUtil.formatNumbers(users);
         return ServiceApi.getServiceApi().create(subject, users);
     }
 
     public int acceptToJoin(long groupChatId)
             throws RemoteException, ServiceDisconnectedException {
-        return ServiceApi.getServiceApi().acceptToJoin(groupChatId);
+        return acceptToJoin(groupChatId, "");
+    }
+
+    public int acceptToJoin(long groupChatId, String inviteNumber)
+            throws RemoteException, ServiceDisconnectedException {
+        return ServiceApi.getServiceApi().acceptToJoin(groupChatId, inviteNumber);
     }
 
     public int rejectToJoin(long groupChatId)
             throws RemoteException, ServiceDisconnectedException {
-        return ServiceApi.getServiceApi().rejectToJoin(groupChatId);
+        return rejectToJoin(groupChatId, "");
+    }
+
+    public int rejectToJoin(long groupChatId, String inviteNumber)
+            throws RemoteException, ServiceDisconnectedException {
+        return ServiceApi.getServiceApi().rejectToJoin(groupChatId, inviteNumber);
     }
 
     public int assignChairman(long groupChatId, String number) throws RemoteException,
@@ -120,6 +146,12 @@
 
     public int invite(long groupChatId, List<String> numberList) throws RemoteException,
             ServiceDisconnectedException {
+        if (!VerificationUtil.isAllNumber(numberList)) {
+            LogHelper.i("number field value error");
+            return GroupChatConstants.CONST_OTHRE_ERROR;
+        }
+
+        numberList = VerificationUtil.formatNumbers(numberList);
         return ServiceApi.getServiceApi().invite(groupChatId, numberList);
     }
 
@@ -151,4 +183,16 @@
             ServiceDisconnectedException {
         ServiceApi.getServiceApi().setGroupChatRemindPolicy(groupChatId, policy);
     }
+
+    public int getMyGroupChat() throws RemoteException, ServiceDisconnectedException{
+        return ServiceApi.getServiceApi().getMyGroupChat();
+    }
+
+    public int rejoin(long groupChatId) throws RemoteException, ServiceDisconnectedException {
+        return ServiceApi.getServiceApi().rejoin(groupChatId);
+    }
+
+    public int getMaxAdhocGroupSize() throws RemoteException, ServiceDisconnectedException {
+        return ServiceApi.getServiceApi().getMaxAdhocGroupSize();
+    }
 }
diff --git a/rcs_service_api/src/com/suntek/mway/rcs/client/api/message/MessageApi.java b/rcs_service_api/src/com/suntek/mway/rcs/client/api/message/MessageApi.java
index d5f48aa..c5ae5c4 100644
--- a/rcs_service_api/src/com/suntek/mway/rcs/client/api/message/MessageApi.java
+++ b/rcs_service_api/src/com/suntek/mway/rcs/client/api/message/MessageApi.java
@@ -75,6 +75,10 @@
         ServiceApi.getServiceApi().backupAll();
     }
 
+    public void backUpFavouriteAll() throws RemoteException, ServiceDisconnectedException {
+        ServiceApi.getServiceApi().backUpFavouriteAll();
+    }
+
     public void backup(List<SimpleMessage> simpleMessageList) throws RemoteException,
             ServiceDisconnectedException {
         ServiceApi.getServiceApi().backup(simpleMessageList);
@@ -251,6 +255,10 @@
         ServiceApi.getServiceApi().restoreAll();
     }
 
+    public void restoreAllFavourite() throws RemoteException, ServiceDisconnectedException {
+        ServiceApi.getServiceApi().restoreAllFavourite();
+    }
+
     public void startComposing(long threadId, String number, String contentType, int seconds)
             throws RemoteException, ServiceDisconnectedException {
         ServiceApi.getServiceApi().startComposing(threadId, number, contentType, seconds);
@@ -313,10 +321,18 @@
     public long sendImage(String number, long threadId, String filepath, int quality,
             boolean isRecord, int barCycle) throws RemoteException, ServiceDisconnectedException,
             FileSuffixException, FileNotExistsException, FileTooLargeException {
+        return sendImage(number, threadId, filepath, quality,
+                isRecord, barCycle, null);
+    }
+
+    public long sendImage(String number, long threadId, String filepath, int quality,
+            boolean isRecord, int barCycle, String thumbnailPath) throws RemoteException,
+            ServiceDisconnectedException, FileSuffixException, FileNotExistsException,
+            FileTooLargeException {
         LogHelper.i(String.format(Locale.getDefault(),
-                "enter method sendImage. [number,threadId,filepath,quality,isRecord,barCycle]="
-                        +"%s,%d,%s,%d,%b,%d",
-                        number, threadId, filepath, quality, isRecord, barCycle));
+                "enter method sendImage. [number,threadId,filepath,quality,isRecord,barCycle" +
+                ",thumbnailPath]=%s,%d,%s,%d,%b,%d,%s",
+                        number, threadId, filepath, quality, isRecord, barCycle, thumbnailPath));
         if (!VerificationUtil.isNumber(number)) {
             LogHelper.i("number field value error");
             return 0L;
@@ -332,6 +348,10 @@
 
         VerificationUtil.isImageFile(filepath);
         VerificationUtil.isFileExists(filepath);
+        if (thumbnailPath != null) {
+            VerificationUtil.isImageFile(thumbnailPath);
+            VerificationUtil.isFileExists(thumbnailPath);
+        }
 
         if (quality == 100) {
             VerificationUtil.isFileSizeToLarge(filepath, this.getImageMaxSize());
@@ -341,17 +361,25 @@
         List<String> numberList = new ArrayList<String>();
         numberList.add(number);
         return ServiceApi.getServiceApi().sendImage(numberList, threadId, filepath, quality,
-                isRecord, barCycle);
+                isRecord, barCycle, thumbnailPath);
     }
 
     public long sendImage(List<String> numberList, long threadId, String filepath, int quality,
             boolean isRecord, int barCycle) throws RemoteException, ServiceDisconnectedException,
             FileSuffixException, FileNotExistsException, FileTooLargeException {
+        return sendImage(numberList, threadId, filepath, quality,
+                isRecord, barCycle, null);
+    }
+
+    public long sendImage(List<String> numberList, long threadId, String filepath, int quality,
+            boolean isRecord, int barCycle, String thumbnailPath) throws RemoteException,
+            ServiceDisconnectedException, FileSuffixException,
+            FileNotExistsException, FileTooLargeException {
         LogHelper.i(String.format(Locale.getDefault(),
-            "enter method sendImage. [numberList,threadId,filepath,quality,isRecord,barCycle]="
-                    + "%s,%d,%s,%d,%b,%d",
-                    VerificationUtil.getNumberListString(numberList), threadId, filepath,
-                    quality, isRecord, barCycle));
+                "enter method sendImage. [numberList,threadId,filepath,quality,isRecord,barCycle" +
+                ",thumbnailPath]=%s,%d,%s,%d,%b,%d,%s",
+                        VerificationUtil.getNumberListString(numberList), threadId, filepath,
+                        quality, isRecord, barCycle, thumbnailPath));
         if (!VerificationUtil.isAllNumber(numberList)) {
             LogHelper.i("number field value error");
             return 0L;
@@ -367,13 +395,17 @@
 
         VerificationUtil.isImageFile(filepath);
         VerificationUtil.isFileExists(filepath);
+        if (thumbnailPath != null) {
+            VerificationUtil.isImageFile(thumbnailPath);
+            VerificationUtil.isFileExists(thumbnailPath);
+        }
         if (quality == 100) {
             VerificationUtil.isFileSizeToLarge(filepath, this.getImageMaxSize());
         }
 
         numberList = VerificationUtil.formatNumbers(numberList);
         return ServiceApi.getServiceApi().sendImage(numberList, threadId, filepath, quality,
-                isRecord, barCycle);
+                isRecord, barCycle, thumbnailPath);
     }
 
     public long sendAudio(String number, long threadId, String filepath, int duration,
@@ -443,10 +475,18 @@
             boolean isRecord, int barCycle) throws RemoteException, ServiceDisconnectedException,
             FileSuffixException, FileNotExistsException, FileTooLargeException,
             FileDurationException {
+        return sendVideo(number, threadId, filepath, duration,
+                isRecord, barCycle, null);
+    }
+
+    public long sendVideo(String number, long threadId, String filepath, int duration,
+            boolean isRecord, int barCycle, String thumbnailPath) throws RemoteException,
+            ServiceDisconnectedException, FileSuffixException, FileNotExistsException,
+            FileTooLargeException, FileDurationException {
         LogHelper.i(String.format(Locale.getDefault(),
-                "enter method sendVideo. [number,threadId,filepath,duration,isRecord,barCycle]="
-                        + "%s,%d,%s,%d,%b,%d",
-                        number, threadId, filepath, duration, isRecord, barCycle));
+                "enter method sendVideo. [number,threadId,filepath,duration,isRecord,barCycle" +
+                ",thumbnailPath]=%s,%d,%s,%d,%b,%d,%s",
+                        number, threadId, filepath, duration, isRecord, barCycle, thumbnailPath));
         if (!VerificationUtil.isNumber(number)) {
             LogHelper.i("number field value error");
             return 0L;
@@ -458,6 +498,10 @@
 
         VerificationUtil.isVideoFile(filepath);
         VerificationUtil.isFileExists(filepath);
+        if (thumbnailPath != null) {
+            VerificationUtil.isImageFile(thumbnailPath);
+            VerificationUtil.isFileExists(thumbnailPath);
+        }
         if (isRecord) {
             VerificationUtil.isVideoDurationToLong(ServiceApi.getInstance().getContext(),
                     filepath,this.getVideoMaxDuration(), duration);
@@ -468,18 +512,26 @@
         List<String> numberList = new ArrayList<String>();
         numberList.add(number);
         return ServiceApi.getServiceApi().sendVideo(numberList, threadId, filepath, duration,
-                isRecord, barCycle);
+                isRecord, barCycle, thumbnailPath);
     }
 
     public long sendVideo(List<String> numberList, long threadId, String filepath, int duration,
             boolean isRecord, int barCycle) throws RemoteException, ServiceDisconnectedException,
             FileSuffixException, FileNotExistsException, FileTooLargeException,
             FileDurationException {
+        return sendVideo(numberList, threadId, filepath, duration,
+                isRecord, barCycle, null);
+    }
+
+    public long sendVideo(List<String> numberList, long threadId, String filepath, int duration,
+            boolean isRecord, int barCycle, String thumbnailPath) throws RemoteException,
+            ServiceDisconnectedException, FileSuffixException, FileNotExistsException,
+            FileTooLargeException, FileDurationException {
         LogHelper.i(String.format(Locale.getDefault(),
-            "enter method sendVideo. [numberList,threadId,filepath,duration,isRecord,barCycle]"
-             + "=%s,%d,%s,%d,%b,%d",
-                  VerificationUtil.getNumberListString(numberList), threadId, filepath,
-                  duration, isRecord, barCycle));
+                "enter method sendVideo. [numberList,threadId,filepath,duration,isRecord,barCycle" +
+                ",thumbnailPath]=%s,%d,%s,%d,%b,%d,%s",
+                        VerificationUtil.getNumberListString(numberList), threadId, filepath,
+                        duration, isRecord, barCycle, thumbnailPath));
         if (!VerificationUtil.isAllNumber(numberList)) {
             LogHelper.i("number field value error");
             return 0L;
@@ -491,6 +543,10 @@
 
         VerificationUtil.isVideoFile(filepath);
         VerificationUtil.isFileExists(filepath);
+        if (thumbnailPath != null) {
+            VerificationUtil.isImageFile(thumbnailPath);
+            VerificationUtil.isFileExists(thumbnailPath);
+        }
         if (isRecord) {
             VerificationUtil.isVideoDurationToLong(ServiceApi.getInstance().getContext(), filepath,
                     this.getVideoMaxDuration(), duration);
@@ -499,7 +555,7 @@
 
         numberList = VerificationUtil.formatNumbers(numberList);
         return ServiceApi.getServiceApi().sendVideo(numberList, threadId, filepath, duration,
-                isRecord, barCycle);
+                isRecord, barCycle, thumbnailPath);
     }
 
     public long sendLocation(String number, long threadId, double lat, double lng, String label,
@@ -609,10 +665,18 @@
     public long sendImageToGroupChat(long groupId, long threadId, String filepath, int quality,
             boolean isRecord) throws RemoteException, ServiceDisconnectedException,
             FileSuffixException, FileNotExistsException, FileTooLargeException {
+        return sendImageToGroupChat(groupId, threadId, filepath,
+                quality, isRecord, null);
+    }
+
+    public long sendImageToGroupChat(long groupId, long threadId, String filepath, int quality,
+            boolean isRecord, String thumbnailPath) throws RemoteException,
+            ServiceDisconnectedException, FileSuffixException, FileNotExistsException,
+            FileTooLargeException {
         LogHelper.i(String.format(Locale.getDefault(),
-               "enter method sendImageToGroupChat. [groupId,threadId,filepath,quality,isRecord]="
-                        + "%d,%d,%s,%d,%b",
-                        groupId, threadId, filepath, quality, isRecord));
+                "enter method sendImageToGroupChat. [groupId,threadId,filepath,quality,isRecord" +
+                ",thumbnailPath]=%d,%d,%s,%d,%b,%s",
+                        groupId, threadId, filepath, quality, isRecord, thumbnailPath));
         if (quality < 0 || quality > 100) {
             LogHelper.i("quality field value must be between 0 to 100");
             return 0L;
@@ -620,13 +684,16 @@
 
         VerificationUtil.isImageFile(filepath);
         VerificationUtil.isFileExists(filepath);
-
+        if (thumbnailPath != null) {
+            VerificationUtil.isImageFile(thumbnailPath);
+            VerificationUtil.isFileExists(thumbnailPath);
+        }
         if (quality == 100) {
             VerificationUtil.isFileSizeToLarge(filepath, this.getImageMaxSize());
         }
 
         return ServiceApi.getServiceApi().sendImageToGroupChat(groupId, threadId, filepath,
-                quality, isRecord);
+                quality, isRecord, thumbnailPath);
     }
 
     public long sendAudioToGroupChat(long groupId, long threadId, String filepath, int duration,
@@ -653,12 +720,24 @@
             boolean isRecord) throws RemoteException, ServiceDisconnectedException,
             FileSuffixException, FileNotExistsException, FileTooLargeException,
             FileDurationException {
+        return sendVideoToGroupChat(groupId, threadId, filepath,
+                duration, isRecord, null);
+    }
+
+    public long sendVideoToGroupChat(long groupId, long threadId, String filepath, int duration,
+            boolean isRecord, String thumbnailPath) throws RemoteException,
+            ServiceDisconnectedException, FileSuffixException, FileNotExistsException,
+            FileTooLargeException, FileDurationException {
         LogHelper.i(String.format(Locale.getDefault(),
-            "enter method sendVideoToGroupChat. [groupId,threadId,filepath,duration,isRecord]="
-                    + "%d,%d,%s,%d,%b",
-                        groupId, threadId, filepath, duration, isRecord));
+                "enter method sendVideoToGroupChat. [groupId,threadId,filepath,duration,isRecord" +
+                ",thumbnailPath]=%d,%d,%s,%d,%b,%s",
+                        groupId, threadId, filepath, duration, isRecord, thumbnailPath));
         VerificationUtil.isVideoFile(filepath);
         VerificationUtil.isFileExists(filepath);
+        if (thumbnailPath != null) {
+            VerificationUtil.isImageFile(thumbnailPath);
+            VerificationUtil.isFileExists(thumbnailPath);
+        }
         if (isRecord) {
             VerificationUtil.isVideoDurationToLong(ServiceApi.getInstance().getContext(),
                     filepath, this.getVideoMaxDuration(), duration);
@@ -666,7 +745,7 @@
         VerificationUtil.isFileSizeToLarge(filepath, this.getVideoMaxSize());
 
         return ServiceApi.getServiceApi().sendVideoToGroupChat(groupId, threadId, filepath,
-                duration, isRecord);
+                duration, isRecord, thumbnailPath);
     }
 
     public long sendLocationToGroupChat(long groupId, long threadId, double lat, double lng,
@@ -861,12 +940,20 @@
     public long sendImageToPublicAccount(String publicAccountId, long threadId, String filepath,
             int quality, boolean isRecord) throws RemoteException, ServiceDisconnectedException,
             FileSuffixException, FileNotExistsException, FileTooLargeException {
+        return sendImageToPublicAccount(publicAccountId, threadId,
+                filepath, quality, isRecord, null);
+    }
+
+    public long sendImageToPublicAccount(String publicAccountId, long threadId, String filepath,
+            int quality, boolean isRecord, String thumbnailPath) throws RemoteException,
+            ServiceDisconnectedException, FileSuffixException, FileNotExistsException,
+            FileTooLargeException {
         LogHelper
-                .i(String.format(
-                        Locale.getDefault(),
-                        "enter method sendImageToPublicAccount. [publicAccountId,"
-                        + "threadId,filepath,quality,isRecord]=%s,%d,%s,%d,%b",
-                        publicAccountId, threadId, filepath, quality, isRecord));
+        .i(String.format(
+                Locale.getDefault(),
+                "enter method sendImageToPublicAccount. [publicAccountId,"
+                        + "threadId,filepath,quality,isRecord,thumbnailPath]=%s,%d,%s,%d,%b,%s",
+                        publicAccountId, threadId, filepath, quality, isRecord, thumbnailPath));
         if (quality < 0 || quality > 100) {
             LogHelper.i("quality field value must be between 0 to 100");
             return 0L;
@@ -874,12 +961,15 @@
 
         VerificationUtil.isImageFile(filepath);
         VerificationUtil.isFileExists(filepath);
-
+        if (thumbnailPath != null) {
+            VerificationUtil.isImageFile(thumbnailPath);
+            VerificationUtil.isFileExists(thumbnailPath);
+        }
         if (quality == 100) {
             VerificationUtil.isFileSizeToLarge(filepath, this.getImageMaxSize());
         }
         return ServiceApi.getServiceApi().sendImageToPublicAccount(publicAccountId, threadId,
-                filepath, quality, isRecord);
+                filepath, quality, isRecord, thumbnailPath);
     }
 
     public long sendAudioToPublicAccount(String publicAccountId, long threadId, String filepath,
@@ -908,21 +998,33 @@
             int duration, boolean isRecord) throws RemoteException, ServiceDisconnectedException,
             FileSuffixException, FileNotExistsException, FileTooLargeException,
             FileDurationException {
+        return sendVideoToPublicAccount(publicAccountId, threadId,
+                filepath, duration, isRecord, null);
+    }
+
+    public long sendVideoToPublicAccount(String publicAccountId, long threadId, String filepath,
+            int duration, boolean isRecord, String thumbnailPath) throws RemoteException,
+            ServiceDisconnectedException, FileSuffixException, FileNotExistsException,
+            FileTooLargeException, FileDurationException {
         LogHelper
-                .i(String.format(
-                        Locale.getDefault(),
-                        "enter method sendVideoToPublicAccount. [publicAccountId,threadId,"
-                        + "filepath,duration,isRecord]=%s,%d,%s,%d,%b",
-                        publicAccountId, threadId, filepath, duration, isRecord));
+        .i(String.format(
+                Locale.getDefault(),
+                "enter method sendVideoToPublicAccount. [publicAccountId,threadId,"
+                        + "filepath,duration,isRecord,thumbnailPath]=%s,%d,%s,%d,%b,%s",
+                        publicAccountId, threadId, filepath, duration, isRecord, thumbnailPath));
         VerificationUtil.isVideoFile(filepath);
         VerificationUtil.isFileExists(filepath);
+        if (thumbnailPath != null) {
+            VerificationUtil.isImageFile(thumbnailPath);
+            VerificationUtil.isFileExists(thumbnailPath);
+        }
         if (isRecord) {
             VerificationUtil.isVideoDurationToLong(ServiceApi.getInstance().getContext(),
                     filepath, this.getVideoMaxDuration(), duration);
         }
         VerificationUtil.isFileSizeToLarge(filepath, this.getVideoMaxSize());
         return ServiceApi.getServiceApi().sendVideoToPublicAccount(publicAccountId, threadId,
-                filepath, duration, isRecord);
+                filepath, duration, isRecord, thumbnailPath);
     }
 
     public long sendLocationToPublicAccount(String publicAccountId, long threadId, double lat,
diff --git a/rcs_service_api/src/com/suntek/mway/rcs/client/api/profile/ProfileListener.java b/rcs_service_api/src/com/suntek/mway/rcs/client/api/profile/ProfileListener.java
index a872347..57be14a 100644
--- a/rcs_service_api/src/com/suntek/mway/rcs/client/api/profile/ProfileListener.java
+++ b/rcs_service_api/src/com/suntek/mway/rcs/client/api/profile/ProfileListener.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_api/src/com/suntek/mway/rcs/client/api/profile/QRImgListener.java b/rcs_service_api/src/com/suntek/mway/rcs/client/api/profile/QRImgListener.java
index 70a82be..b6d3c58 100644
--- a/rcs_service_api/src/com/suntek/mway/rcs/client/api/profile/QRImgListener.java
+++ b/rcs_service_api/src/com/suntek/mway/rcs/client/api/profile/QRImgListener.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_api/src/com/suntek/mway/rcs/client/api/publicaccount/PublicAccountCallback.java b/rcs_service_api/src/com/suntek/mway/rcs/client/api/publicaccount/PublicAccountCallback.java
index d11a647..2a3c80d 100644
--- a/rcs_service_api/src/com/suntek/mway/rcs/client/api/publicaccount/PublicAccountCallback.java
+++ b/rcs_service_api/src/com/suntek/mway/rcs/client/api/publicaccount/PublicAccountCallback.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_service_api/src/com/suntek/mway/rcs/client/api/specialnumber/SpecialServiceNumApi.java b/rcs_service_api/src/com/suntek/mway/rcs/client/api/specialnumber/SpecialServiceNumApi.java
index b3e3848..2f4fb03 100644
--- a/rcs_service_api/src/com/suntek/mway/rcs/client/api/specialnumber/SpecialServiceNumApi.java
+++ b/rcs_service_api/src/com/suntek/mway/rcs/client/api/specialnumber/SpecialServiceNumApi.java
@@ -53,7 +53,7 @@
         return ServiceApi.getServiceApi().disableSsn();
     }
 
-    public boolean deleteSsnPrefix(String number) throws RemoteException,
+    public String deleteSsnPrefix(String number) throws RemoteException,
             ServiceDisconnectedException {
         return ServiceApi.getServiceApi().deleteSsnPrefix(number);
     }
diff --git a/rcs_service_api/src/com/suntek/mway/rcs/client/api/support/SupportApi.java b/rcs_service_api/src/com/suntek/mway/rcs/client/api/support/SupportApi.java
index cf424de..0efd733 100644
--- a/rcs_service_api/src/com/suntek/mway/rcs/client/api/support/SupportApi.java
+++ b/rcs_service_api/src/com/suntek/mway/rcs/client/api/support/SupportApi.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -156,22 +156,6 @@
 
     public void initApi(Context context) {
         mIsRcsServiceInstalled = isServiceInstalled(context);
-
-        if (mIsRcsServiceInstalled) {
-            init();
-        }
-    }
-
-    private void init() {
-        new Thread() {
-            @Override
-            public void run() {
-                long t0, t1;
-                t0 = System.currentTimeMillis();
-                t1 = System.currentTimeMillis();
-                Log.d(TAG, "initRcsAccountApi cost " + (t1 - t0) + " ms");
-            }
-        }.start();
     }
 
     /**
diff --git a/rcs_service_api/src/com/suntek/mway/rcs/client/api/util/VerificationUtil.java b/rcs_service_api/src/com/suntek/mway/rcs/client/api/util/VerificationUtil.java
index 43cf740..a787814 100644
--- a/rcs_service_api/src/com/suntek/mway/rcs/client/api/util/VerificationUtil.java
+++ b/rcs_service_api/src/com/suntek/mway/rcs/client/api/util/VerificationUtil.java
@@ -82,10 +82,12 @@
 
     public static List<String> formatNumbers(List<String> numbers) {
         List<String> re = new ArrayList<String>();
-        for (String number : numbers) {
-            re.add(formatNumber(number));
+        if (numbers != null && numbers.size() > 0) {
+            for (String number : numbers) {
+                re.add(formatNumber(number));
+            }
+            Collections.sort(re);
         }
-        Collections.sort(re);
         return re;
     }
 
@@ -244,7 +246,7 @@
         File file = new File(filename);
         if (file.exists() && file.isFile()) {
             int duration = getAmrFileDuration(context, file);
-            if (duration >= (maxDuration + 1) * 1000 || recordTime > maxDuration * 1000) {
+            if (duration >= (maxDuration + 1) * 1000 || recordTime >= (maxDuration + 1) * 1000) {
                 LogHelper.i("throw FileDurationException, duration=" + duration);
                 throw new FileDurationException("File duration too long " + duration
                         + " s. Max duration is " + maxDuration + " s.");
@@ -257,7 +259,7 @@
         File file = new File(filename);
         if (file.exists() && file.isFile()) {
             int duration = getVideoFileDuration(context, file);
-            if (duration >= (maxDuration + 1) * 1000 || recordTime > maxDuration * 1000) {
+            if (duration >= (maxDuration + 1) * 1000 || recordTime >= (maxDuration + 1) * 1000) {
                 LogHelper.i("throw FileDurationException, duration=" + duration);
                 throw new FileDurationException("File duration too long " + duration
                         + " s. Max duration is " + maxDuration + " s.");
diff --git a/rcs_ui_common/src/com/suntek/rcs/ui/common/RcsFileController.java b/rcs_ui_common/src/com/suntek/rcs/ui/common/RcsFileController.java
new file mode 100644
index 0000000..66712b2
--- /dev/null
+++ b/rcs_ui_common/src/com/suntek/rcs/ui/common/RcsFileController.java
@@ -0,0 +1,225 @@
+/*
+ * Copyright (c) 2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * pci-suntektech Technologies Proprietary and Confidential.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to
+ * deal in the Software without restriction, including without limitation the
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ * IN THE SOFTWARE.
+ */
+
+package com.suntek.rcs.ui.common;
+
+import java.io.File;
+
+import android.content.ContentUris;
+import android.content.Context;
+import android.database.Cursor;
+import android.net.Uri;
+import android.os.Build;
+import android.os.Environment;
+import android.os.RemoteException;
+import android.provider.DocumentsContract;
+import android.provider.MediaStore;
+
+import android.text.TextUtils;
+
+import com.suntek.rcs.ui.common.RcsLog;
+import com.suntek.mway.rcs.client.aidl.constant.Constants.MessageConstants;
+import com.suntek.mway.rcs.client.api.exception.ServiceDisconnectedException;
+import com.suntek.mway.rcs.client.api.message.MessageApi;
+
+public class RcsFileController {
+
+    public static final int FILE_NOT_EXCEEDED_RCS_LIMIT = 0;
+
+    public static final int FILE_EXCEEDED_RCS_LIMIT = 1;
+
+    public static final int FILE_ERROR = 2;
+
+    private static final int BYTE_TRANSFER_TO_KB = 1024;
+
+    private static final String EXTRNAL_STORAGE_DOCUMENT_URI =
+            "com.android.externalstorage.documents";
+
+    private static final String DOWNLOAD_DOCUMENT_URI =
+            "com.android.providers.downloads.documents";
+
+    private static final String MEDIA_DOCUMENT_URI = "com.android.providers.media.documents";
+
+    private static final Uri PUBLIC_DOWNLOAD_URI =
+            Uri.parse("content://downloads/public_downloads");
+
+    private static final String MEDIA_STORE_IMAGE = "image";
+
+    private static final String MEDIA_STORE_VIDEO = "video";
+
+    private static final String MEDIA_STORE_AUDIO = "audio";
+
+    private static final String CONTENT = "content";
+
+    private static final String FILE = "file";
+
+    private static final String PRIMARY = "primary";
+
+    private static final int DATA_COLUMN_INDEX = 0;
+
+    private static final String[] DATA_DOCUMENT_PROJECTION = {
+        "_data"
+    };
+
+    /**
+     * @param filePath the file patch
+     * @param fileType file type image or video
+     * @return 0 file not exceed rcs file limit
+     * @return 1 file exceed rcs file limit
+     * @return 2 file error
+     */
+    public static int checkFileLegality(String filePath, int fileType) {
+        if (TextUtils.isEmpty(filePath)) {
+            return FILE_ERROR;
+        }
+        File file = new File(filePath);
+        if (file.exists()) {
+            long rcsFileLimit = getRcsTransferFileMaxSize(fileType);
+            long fileLength = file.length()/BYTE_TRANSFER_TO_KB;
+            RcsLog.d("file limit size:" + fileLength+ "::" + rcsFileLimit);
+            if (fileLength > rcsFileLimit) {
+                return FILE_EXCEEDED_RCS_LIMIT;
+            } else {
+                return FILE_NOT_EXCEEDED_RCS_LIMIT;
+            }
+        } else {
+            return FILE_ERROR;
+        }
+
+    }
+
+    public static long getFileSizes(Context context, Uri uri) {
+        File file = new File(getFilePath(context, uri));
+        long length = 0;
+        if (file != null && file.exists()) {
+            length = file.length();
+        }
+        return length;
+    }
+
+    public static long getRcsTransferFileMaxSize(int fileType) {
+        try {
+            switch(fileType) {
+                case MessageConstants.CONST_MESSAGE_IMAGE:
+                    return MessageApi.getInstance().getImageMaxSize();
+                case MessageConstants.CONST_MESSAGE_VIDEO:
+                case MessageConstants.CONST_MESSAGE_AUDIO:
+                    return MessageApi.getInstance().getVideoMaxSize();
+                default:
+                    return 0;
+            }
+        } catch (ServiceDisconnectedException exception) {
+            exception.printStackTrace();
+        } catch (RemoteException e) {
+            RcsLog.w(e);
+        }
+        return 0;
+    }
+
+    public static long getRcsTransferFileMaxDuration(int fileType) {
+        try {
+            switch(fileType) {
+                case MessageConstants.CONST_MESSAGE_AUDIO:
+                    return MessageApi.getInstance().getAudioMaxDuration();
+                case MessageConstants.CONST_MESSAGE_VIDEO:
+                    return MessageApi.getInstance().getVideoMaxDuration();
+                default:
+                    return 0;
+            }
+        } catch (ServiceDisconnectedException exception) {
+            exception.printStackTrace();
+        } catch (RemoteException e) {
+            RcsLog.w(e);
+        }
+        return 0;
+    }
+
+    /**
+     * @param context The context.
+     * @param uri The Uri to query.
+     */
+    public static String getFilePath(final Context context, final Uri uri) {
+
+        final boolean isKitKat = Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT;
+        final String authority = uri.getAuthority();
+        if (isKitKat && DocumentsContract.isDocumentUri(context, uri)) {
+            if (EXTRNAL_STORAGE_DOCUMENT_URI.equals(authority)) {
+                final String[] split = getTypeString(uri);
+                if (PRIMARY.equalsIgnoreCase(split[0])) {
+                    return Environment.getExternalStorageDirectory() + "/" + split[1];
+                } else {
+                    return "";
+                }
+            } else if (MEDIA_DOCUMENT_URI.equals(authority)) {
+                return getMediaStoreFilePath(context, uri);
+            } else if (DOWNLOAD_DOCUMENT_URI.equals(authority)) {
+                final Uri contentUri = ContentUris.withAppendedId(PUBLIC_DOWNLOAD_URI,
+                        Long.valueOf(DocumentsContract.getDocumentId(uri)));
+                return getDataColumnFilePath(context, contentUri, null, null);
+            }
+        } else if (FILE.equalsIgnoreCase(uri.getScheme())) {
+            return uri.getPath();
+        } else if (CONTENT.equalsIgnoreCase(uri.getScheme())) {
+            return getDataColumnFilePath(context, uri, null, null);
+        }
+        return null;
+    }
+
+    private static String[] getTypeString(Uri uri) {
+        final String docId = DocumentsContract.getDocumentId(uri);
+        return docId.split(":");
+    }
+
+    private static String getMediaStoreFilePath(Context context, Uri uri) {
+        final String[] split = getTypeString(uri);
+        Uri contentUri = null;
+        if (MEDIA_STORE_IMAGE.equals(split[0])) {
+            contentUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
+        } else if (MEDIA_STORE_AUDIO.equals(split[0])) {
+            contentUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
+        } else if (MEDIA_STORE_VIDEO.equals(split[0])) {
+            contentUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
+        }
+        final String selection = "_id = ?";
+        final String[] selectionArgs = new String[] {
+            split[1]
+        };
+        return getDataColumnFilePath(context, contentUri, selection, selectionArgs);
+    }
+
+    public static String getDataColumnFilePath(Context context, Uri uri, String selection,
+            String[] selectionArgs) {
+        Cursor cursor = null;
+        try {
+            cursor = context.getContentResolver().query(uri, DATA_DOCUMENT_PROJECTION, selection,
+                    selectionArgs, null);
+            if (cursor != null && cursor.moveToFirst()) {
+                return cursor.getString(DATA_COLUMN_INDEX);
+            }
+        } finally {
+            if (cursor != null)
+                cursor.close();
+        }
+        return null;
+    }
+}
diff --git a/rcs_ui_common/src/com/suntek/rcs/ui/common/mms/GeoLocation.java b/rcs_ui_common/src/com/suntek/rcs/ui/common/mms/GeoLocation.java
index f3ee48e..029c73d 100644
--- a/rcs_ui_common/src/com/suntek/rcs/ui/common/mms/GeoLocation.java
+++ b/rcs_ui_common/src/com/suntek/rcs/ui/common/mms/GeoLocation.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * Copyright (c) 2014-2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
  * pci-suntektech Technologies Proprietary and Confidential.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/rcs_ui_common/src/com/suntek/rcs/ui/common/mms/GroupChatManagerReceiver.java b/rcs_ui_common/src/com/suntek/rcs/ui/common/mms/GroupChatManagerReceiver.java
index 3772f70..dfd3e37 100644
--- a/rcs_ui_common/src/com/suntek/rcs/ui/common/mms/GroupChatManagerReceiver.java
+++ b/rcs_ui_common/src/com/suntek/rcs/ui/common/mms/GroupChatManagerReceiver.java
@@ -82,6 +82,10 @@
                 if (mCallback != null) {
                     mCallback.onGroupGone(extras);
                 }
+            } else if (GroupChatConstants.CONST_INVITE_EXPIRED == actionType) {
+                if (mCallback != null) {
+                    mCallback.onGroupInviteExpired(extras);
+                }
             }
         }
     }
@@ -104,6 +108,8 @@
         void onBootMe(Bundle extras);
 
         void onGroupGone(Bundle extras);
+
+        void onGroupInviteExpired(Bundle extras);
     }
 
 }
diff --git a/rcs_ui_common/src/com/suntek/rcs/ui/common/mms/GroupMemberPhotoCache.java b/rcs_ui_common/src/com/suntek/rcs/ui/common/mms/GroupMemberPhotoCache.java
index c128f3b..d3d7c2e 100644
--- a/rcs_ui_common/src/com/suntek/rcs/ui/common/mms/GroupMemberPhotoCache.java
+++ b/rcs_ui_common/src/com/suntek/rcs/ui/common/mms/GroupMemberPhotoCache.java
@@ -48,7 +48,6 @@
     private LinkedBlockingQueue<LoaderImageTask> mTaskQueue;
     private boolean mIsRuning = false;
     private static GroupMemberPhotoCache sInstance = new GroupMemberPhotoCache();
-    private static Drawable mDefaultContectImage = null;
 
     private GroupMemberPhotoCache() {
         mImageCache = new HashMap<String, SoftReference<Bitmap>>();
@@ -58,11 +57,8 @@
     }
 
     public void loadGroupMemberPhoto(long rcsGroupId, String addr,
-            final ImageView mAvatar,final Drawable defaultContactImage) {
-        if (mDefaultContectImage == null) {
-            mDefaultContectImage = defaultContactImage;
-        }
-        if(mAvatar == null){
+            final ImageView mAvatar, final Drawable defaultContactImage) {
+        if (mAvatar == null) {
             return;
         }
         mAvatar.setTag(addr);
@@ -102,12 +98,10 @@
         }
     }
 
-    private Bitmap getbitmap(String number, long groupId) {
-        Bitmap bitmap = null;
+    private void getbitmap(final LoaderImageTask task) {
         try {
-            GroupChatApi.getInstance().getMemberAvatar(groupId, number, IMAGE_PIXEL,
-                    new GroupChatCallback() {
-
+            GroupChatApi.getInstance().getMemberAvatar(task.mGroupId, task.number,
+                    IMAGE_PIXEL, new GroupChatCallback() {
                         @Override
                         public void onUpdateAvatar(Avatar avatar, int resultCode,
                                 String resultDesc) throws RemoteException {
@@ -117,6 +111,13 @@
                                     byte[] imageByte = Base64.decode(str, Base64.DEFAULT);
                                     Bitmap bitmap = BitmapFactory.decodeByteArray(imageByte, 0,
                                             imageByte.length);
+                                    addBitmapCache(task.number, bitmap);
+                                    task.bitmap = bitmap;
+                                    if (mHandler != null) {
+                                        Message msg = mHandler.obtainMessage();
+                                        msg.obj = task;
+                                        mHandler.sendMessage(msg);
+                                    }
                                 }
                             }
                         }
@@ -126,10 +127,6 @@
         } catch (RemoteException e) {
             e.printStackTrace();
         }
-        if (bitmap != null) {
-            mImageCache.put(number, new SoftReference<Bitmap>(bitmap));
-        }
-        return bitmap;
     }
 
     private Runnable runnable = new Runnable() {
@@ -138,14 +135,9 @@
             while (mIsRuning) {
                 try {
                     LoaderImageTask task = mTaskQueue.take();
-                    String imageId = (String) task.imageView.getTag();
-                    if (!TextUtils.isEmpty(imageId) && imageId.equals(task.number)) {
-                        task.bitmap = getbitmap(task.number, task.mGroupId);
-                        if (mHandler != null) {
-                            Message msg = mHandler.obtainMessage();
-                            msg.obj = task;
-                            mHandler.sendMessage(msg);
-                        }
+                    String number = (String) task.imageView.getTag();
+                    if (!TextUtils.isEmpty(number) && number.equals(task.number)) {
+                        getbitmap(task);
                     }
                 } catch (InterruptedException e) {
                     e.printStackTrace();
@@ -166,4 +158,24 @@
             }
         }
     };
+
+    public void removeCache(String number){
+        mImageCache.remove(number);
+    }
+
+    public void addBitmapCache(String number, Bitmap bitmap) {
+        if (bitmap != null) {
+            mImageCache.put(number, new SoftReference<Bitmap>(bitmap));
+        }
+    }
+
+    public Bitmap getBitmapByNumber(String number) {
+        if (mImageCache != null && mImageCache.containsKey(number)) {
+            SoftReference<Bitmap> rf = mImageCache.get(number);
+            Bitmap bitmap = rf.get();
+            return bitmap;
+        }
+        return null;
+    }
+
 }
diff --git a/rcs_ui_common/src/com/suntek/rcs/ui/common/mms/RcsMessageForwardToSmsCache.java b/rcs_ui_common/src/com/suntek/rcs/ui/common/mms/RcsMessageForwardToSmsCache.java
new file mode 100644
index 0000000..e52beb6
--- /dev/null
+++ b/rcs_ui_common/src/com/suntek/rcs/ui/common/mms/RcsMessageForwardToSmsCache.java
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * pci-suntektech Technologies Proprietary and Confidential.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to
+ * deal in the Software without restriction, including without limitation the
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ * IN THE SOFTWARE.
+ */
+
+package com.suntek.rcs.ui.common.mms;
+
+import java.util.HashMap;
+import java.util.Iterator;
+
+public class RcsMessageForwardToSmsCache {
+
+    private static RcsMessageForwardToSmsCache sInstance = new RcsMessageForwardToSmsCache();
+
+    private static HashMap<Long[], String[]> mMessageCache;
+
+    private RcsMessageForwardToSmsCache() {
+        mMessageCache = new HashMap<Long[], String[]>();
+    }
+
+    public static RcsMessageForwardToSmsCache getInstance() {
+        if (sInstance == null) {
+            sInstance = new RcsMessageForwardToSmsCache();
+        }
+        return sInstance;
+    }
+
+    public void addSendMessage(Long[] ids, String[] value) {
+        mMessageCache.put(ids, value);
+    }
+
+    public String[] getCacheVaule(Long[] ids) {
+        return mMessageCache.get(ids);
+    }
+
+    public void clearCacheMessage() {
+        mMessageCache.clear();
+    }
+
+    public Iterator<Long[]> getChachIterator() {
+        return mMessageCache.keySet().iterator();
+    }
+
+    public HashMap<Long[], String[]> getCacheMessage() {
+        return mMessageCache;
+    }
+}
diff --git a/rcs_ui_common/src/com/suntek/rcs/ui/common/mms/RcsMyProfileCache.java b/rcs_ui_common/src/com/suntek/rcs/ui/common/mms/RcsMyProfileCache.java
new file mode 100644
index 0000000..84b4aba
--- /dev/null
+++ b/rcs_ui_common/src/com/suntek/rcs/ui/common/mms/RcsMyProfileCache.java
@@ -0,0 +1,158 @@
+/*
+ * Copyright (c) 2015 pci-suntektech Technologies, Inc.  All Rights Reserved.
+ * pci-suntektech Technologies Proprietary and Confidential.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to
+ * deal in the Software without restriction, including without limitation the
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ * IN THE SOFTWARE.
+ */
+package com.suntek.rcs.ui.common.mms;
+
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.graphics.drawable.Drawable;
+import android.os.Handler;
+import android.os.Message;
+import android.os.RemoteException;
+import android.text.TextUtils;
+import android.util.Base64;
+import android.widget.ImageView;
+
+import com.suntek.mway.rcs.client.aidl.constant.Parameter;
+import com.suntek.mway.rcs.client.aidl.plugin.entity.profile.Avatar;
+import com.suntek.mway.rcs.client.aidl.plugin.entity.profile.Profile;
+import com.suntek.mway.rcs.client.aidl.plugin.entity.profile.QRCardImg;
+import com.suntek.mway.rcs.client.aidl.plugin.entity.profile.QRCardInfo;
+import com.suntek.mway.rcs.client.api.exception.ServiceDisconnectedException;
+import com.suntek.mway.rcs.client.api.groupchat.GroupChatCallback;
+import com.suntek.mway.rcs.client.api.groupchat.GroupChatApi;
+import com.suntek.mway.rcs.client.api.profile.ProfileApi;
+import com.suntek.mway.rcs.client.api.profile.ProfileListener;
+import com.suntek.rcs.ui.common.RcsLog;
+
+import java.lang.ref.SoftReference;
+import java.util.HashMap;
+import java.util.concurrent.LinkedBlockingQueue;
+
+public class RcsMyProfileCache {
+    private final static int IMAGE_PIXEL = 120;
+    private HashMap<String, SoftReference<Bitmap>> mImageCache;
+    private boolean mIsRuning = false;
+    private static RcsMyProfileCache sInstance;
+    private ImageView mImageView;
+
+    private RcsMyProfileCache(ImageView imageView) {
+        RcsLog.i("new RcsMyProfileCache");
+        mImageView = imageView;
+        new Thread(runnable).start();
+    }
+
+    public Bitmap getMyHeadPic() {
+        if (mImageCache != null) {
+            SoftReference<Bitmap> rf = mImageCache.get("me");
+            return rf.get();
+        }
+        return null;
+    }
+
+    public static RcsMyProfileCache getInstance(ImageView photoView) {
+        if (sInstance == null) {
+            sInstance = new RcsMyProfileCache(photoView);
+        }
+        return sInstance;
+    }
+
+    private void getbitmap() {
+        try {
+            ProfileApi.getInstance().getMyHeadPic(new ProfileListener() {
+
+                @Override
+                public void onAvatarGet(final Avatar photo, final int resultCode,
+                        final String resultDesc) throws RemoteException {
+                    RcsLog.i("RcsMyProfileCache get my photo from service");
+                    if (photo != null) {
+                        String str = photo.getImgBase64Str();
+                        if (str != null) {
+                            byte[] imageByte = Base64.decode(str, Base64.DEFAULT);
+                            Bitmap bitmap = BitmapFactory.decodeByteArray(imageByte, 0,
+                                    imageByte.length);
+                            if (mHandler != null) {
+                                Message msg = new Message();
+                                msg.obj = bitmap;
+                                mHandler.sendMessage(msg);
+                            }
+                        }
+                    }
+                }
+
+                @Override
+                public void onAvatarUpdated(int arg0, String arg1) throws RemoteException {
+                }
+
+                @Override
+                public void onProfileGet(Profile arg0, int arg1, String arg2)
+                        throws RemoteException {
+                }
+
+                @Override
+                public void onProfileUpdated(int arg0, String arg1) throws RemoteException {
+                }
+
+                @Override
+                public void onQRImgDecode(QRCardInfo imgObj, int resultCode, String arg2)
+                        throws RemoteException {
+                }
+            });
+        } catch (ServiceDisconnectedException e) {
+            e.printStackTrace();
+        } catch (RemoteException e) {
+            e.printStackTrace();
+        }
+    }
+
+    private Runnable runnable = new Runnable() {
+        @Override
+        public void run() {
+            getbitmap();
+        }
+    };
+
+    private Handler mHandler = new Handler() {
+        @Override
+        public void handleMessage(Message msg) {
+            RcsLog.i("handler receiver message");
+            mImageCache = new HashMap<String, SoftReference<Bitmap>>();
+            Bitmap bitmap = (Bitmap)msg.obj;
+            mImageView.setImageBitmap(bitmap);
+            if (bitmap != null) {
+                addBitmapCache("me", bitmap);
+            }
+        }
+    };
+
+    public void removeCache(String number){
+        mImageCache.remove(number);
+    }
+
+    public void addBitmapCache(String number, Bitmap bitmap) {
+        if (bitmap != null) {
+            RcsLog.i("RcsMyProfileCache add bitmap to cache, number="
+                + number);
+            mImageCache.put(number, new SoftReference<Bitmap>(bitmap));
+        }
+    }
+}
diff --git a/rcs_ui_common/src/com/suntek/rcs/ui/common/provider/RcsMessageProviderConstants.java b/rcs_ui_common/src/com/suntek/rcs/ui/common/provider/RcsMessageProviderConstants.java
index 275b577..18b19c2 100644
--- a/rcs_ui_common/src/com/suntek/rcs/ui/common/provider/RcsMessageProviderConstants.java
+++ b/rcs_ui_common/src/com/suntek/rcs/ui/common/provider/RcsMessageProviderConstants.java
@@ -35,6 +35,8 @@
 import android.telephony.SubscriptionManager;
 
 import com.suntek.mway.rcs.client.aidl.common.RcsColumns;
+import com.suntek.mway.rcs.client.aidl.common.DeviceApiConstant;
+import com.suntek.mway.rcs.client.aidl.constant.Constants.MessageConstants;
 
 import java.util.HashSet;
 import java.util.Set;
@@ -71,7 +73,7 @@
         RcsColumns.SmsRcsColumns.RCS_MSG_STATE, RcsColumns.SmsRcsColumns.RCS_BURN,
         RcsColumns.SmsRcsColumns.RCS_IS_DOWNLOAD, RcsColumns.SmsRcsColumns.RCS_FILE_SIZE,
         RcsColumns.SmsRcsColumns.RCS_BURN_BODY, RcsColumns.SmsRcsColumns.RCS_MESSAGE_ID,
-        RcsColumns.SmsRcsColumns.RCS_MEDIA_PLAYED,RcsColumns.SmsRcsColumns.RCS_EXT_CONTACT,
+        RcsColumns.SmsRcsColumns.RCS_MEDIA_PLAYED, RcsColumns.SmsRcsColumns.RCS_EXT_CONTACT,
         RcsColumns.SmsRcsColumns.RCS_FILE_RECORD
 };
 
@@ -88,49 +90,6 @@
 
     private static final String[] SEARCH_STRING = new String[1];
 
-    // search on sms and thread table according  rcs_file_transfer_id and rcs_chat_type.
-
-    public static final String[] DEVICE_API_DEFAULT_PROJECT = {
-        "CHATMESSAGE_MESSAGE_ID",
-        "CHATMESSAGE_CHAT_ID",
-        "CHATMESSAGE_CONTACT_NUMBER",
-        "CHATMESSAGE_BODY",
-        "CHATMESSAGE_TIMESTAMP",
-        "CHATMESSAGE_MIME_TYPE",
-        "CHATMESSAGE_MESSAGE_STATUS",
-        "CHATMESSAGE_DIRECTION",
-        "CHATMESSAGE_TYPE",
-        "CHATMESSAGE_FLAG"
-    };
-
-    public static final String DEVICE_API_TABLE = "SELECT " +
-            "sms._id as CHATMESSAGE_MESSAGE_ID," +
-            "sms.date as CHATMESSAGE_TIMESTAMP," +
-            "sms.rcs_mime_type as CHATMESSAGE_MIME_TYPE," +
-            "sms.rcs_chat_type as CHATMESSAGE_FLAG," +
-            "sms.rcs_file_name as file_name," +
-            "sms.rcs_file_size as file_size," +
-            "sms.rcs_file_transfered as file_transferred," +
-            "sms.rcs_file_icon as file_icon," +
-            "sms.thread_id as CHATMESSAGE_CHAT_ID," +
-            "(CASE WHEN sms.type = 1 then -5 ELSE -6 END) as CHATMESSAGE_DIRECTION," +
-            "(CASE WHEN  rcs_file_transfer_id IS not NULL THEN 4 " +
-            "WHEN sms.rcs_message_id is not null then 3 ELSE 1 END) as CHATMESSAGE_TYPE," +
-            "(CASE sms.type = 1  WHEN sms.read = 0 THEN 1 WHEN sms.read = 1 then 2 " +
-            "ELSE (CASE sms.rcs_message_id is null WHEN sms.status = 32 THEN 3 " +
-            " WHEN sms.status = 0 THEN 4 WHEN sms.status = 64 THEN 5 " +
-            "ELSE (CASE when sms.rcs_msg_state = 64 THEN 3 WHEN sms.rcs_msg_state = 32 THEN 4 " +
-            "WHEN sms.rcs_msg_state = 128 THEN 5 ELSE 6 END)END)END)" +
-            " as CHATMESSAGE_MESSAGE_STATUS," +
-            "(CASE WHEN rcs_file_transfer_id IS not NULL THEN rcs_file_transfer_id " +
-            "ELSE (CASE WHEN rcs_message_id is not null THEN body ELSE NULL END) END)" +
-            " as CHATMESSAGE_BODY,(CASE WHEN (sms.rcs_chat_type = 0 OR sms.rcs_chat_type = 1) " +
-            "THEN threads.rcs_number " +
-            "ELSE (CASE WHEN sms.rcs_chat_type = 2 THEN sms.address " +
-            "ELSE rcs_ext_contact END ) END) as CHATMESSAGE_CONTACT_NUMBER " +
-            "from sms inner join threads on sms.thread_id = threads._id";
-
-
     private static final String RCS_SMS_PROJECTION =
             "rcs_file_path,"
             + "rcs_thumb_path,"
@@ -232,6 +191,16 @@
             "    WHERE threads . _id = new . thread_id;" +
             " END;";
 
+    public static final String SMS_DELETE_DUPLICATE_RECORD_BEFORE_INSERT =
+            "when new." + Sms.TYPE + "= 1 and new." + RcsColumns.SmsRcsColumns.RCS_MESSAGE_ID +
+            "!= -1 and new." + RcsColumns.SmsRcsColumns.RCS_MESSAGE_ID + " IS NOT NULL " +
+            " BEGIN  select raise(rollback,'') " +
+            " where (select " + Sms._ID + " from sms where " +
+            RcsColumns.SmsRcsColumns.RCS_MESSAGE_ID + " = new." +
+            RcsColumns.SmsRcsColumns.RCS_MESSAGE_ID + " and " + Sms.TYPE +  "= 1 and "
+            + Sms.PHONE_ID + " = new." + "phone_id)" +
+            " is not null; END;";
+
     public final static String[] RCS_ICC_COLUMNS = new String[] {
         // N.B.: These columns must appear in the same order as the
         // calls to add appear in convertIccToSms.
@@ -299,4 +268,276 @@
             UPDATE_THREAD_COUNT_ON_NEW +
             SMS_UPDATE_THREAD_READ_BODY +
             "END;";
+
+    public interface DeviceApiViews {
+        public final String DEVICE_API_MESSAGES = "device_api_messages";
+        public final String MESSAGE_CONVERSATION = "message_conversation";
+        public final String PUBLIC_ACCOUNT_MESSAGES = "public_account_messages";
+        public final String FILE_TRANSFER_MESSAGE = "file_transfer_message";
+        public final String BLOCKED_CALLLOGS = "blocked_callog_view";
+    }
+
+    private final static String TABLE_SMS = "sms";
+
+    private final static String TABLE_THREADS = "threads";
+
+    private final static String TABLE_PDU = "pdu";
+
+    private final static String FILE_TRANSFER_STATE =
+            "(CASE WHEN " + Sms.TYPE + " = 2 AND " + RcsColumns.SmsRcsColumns.RCS_MSG_STATE
+            + " = " + MessageConstants.CONST_STATUS_SENDING + " THEN "
+            + DeviceApiConstant.FileTransferProvider.STARTED + " WHEN "
+            + Sms.TYPE + " = 2 AND " + RcsColumns.SmsRcsColumns.RCS_MSG_STATE
+            + " = " + MessageConstants.CONST_STATUS_SENDED
+            + " OR " + RcsColumns.SmsRcsColumns.RCS_MSG_STATE
+            + " = " + MessageConstants.CONST_STATUS_SEND_RECEIVED + " THEN "
+            + DeviceApiConstant.FileTransferProvider.TRANSFERRED + " WHEN ("
+            + Sms.TYPE + " = 2 OR " + Sms.TYPE + " = 5) AND "
+            + RcsColumns.SmsRcsColumns.RCS_MSG_STATE
+            + " = " + MessageConstants.CONST_STATUS_SEND_FAIL + " THEN "
+            + DeviceApiConstant.FileTransferProvider.FAILED + " WHEN "
+            + Sms.TYPE + " = 1 AND (" + RcsColumns.SmsRcsColumns.RCS_MSG_TYPE + " = "
+            + MessageConstants.CONST_MESSAGE_IMAGE + " OR " + RcsColumns.SmsRcsColumns.RCS_MSG_TYPE
+            + " = " + MessageConstants.CONST_MESSAGE_VIDEO + " ) AND "
+            + RcsColumns.SmsRcsColumns.RCS_FILE_TRANSFERED + " = 0 " + " THEN "
+            + DeviceApiConstant.FileTransferProvider.INVITED + " WHEN "
+            + Sms.TYPE + " = 1 AND (" + RcsColumns.SmsRcsColumns.RCS_MSG_TYPE + " = "
+            + MessageConstants.CONST_MESSAGE_IMAGE + " OR " + RcsColumns.SmsRcsColumns.RCS_MSG_TYPE
+            + " = " + MessageConstants.CONST_MESSAGE_VIDEO + " ) AND "
+            + RcsColumns.SmsRcsColumns.RCS_FILE_TRANSFERED + " = "
+            + RcsColumns.SmsRcsColumns.RCS_FILE_SIZE + " THEN "
+            + DeviceApiConstant.FileTransferProvider.TRANSFERRED + " WHEN "
+            + Sms.TYPE + " = 1 AND (" + RcsColumns.SmsRcsColumns.RCS_MSG_TYPE + " = "
+            + MessageConstants.CONST_MESSAGE_IMAGE + " OR " + RcsColumns.SmsRcsColumns.RCS_MSG_TYPE
+            + " = " + MessageConstants.CONST_MESSAGE_VIDEO + " ) AND ("
+            + RcsColumns.SmsRcsColumns.RCS_FILE_TRANSFERED + " < "
+            + RcsColumns.SmsRcsColumns.RCS_FILE_SIZE + " AND "
+            + RcsColumns.SmsRcsColumns.RCS_FILE_TRANSFERED + " > 0 ) THEN "
+            + DeviceApiConstant.FileTransferProvider.STARTED + " WHEN "
+            + Sms.TYPE + " = 1 AND (" + RcsColumns.SmsRcsColumns.RCS_MSG_TYPE + " <> "
+            + MessageConstants.CONST_MESSAGE_IMAGE + " AND " + RcsColumns.SmsRcsColumns.RCS_MSG_TYPE
+            + " <> " + MessageConstants.CONST_MESSAGE_VIDEO + " ) THEN "
+            + DeviceApiConstant.FileTransferProvider.TRANSFERRED + " ELSE 0 END)";
+
+    public static final String MESSAGE_CONVERSATION_VIEW_CLOUMNS =
+            "select "
+            + TABLE_THREADS + "." + Threads.SNIPPET
+            + " as " + DeviceApiConstant.ChatProvider.BODY + ","
+            + TABLE_THREADS + "." + Threads.DATE
+            + " as " + DeviceApiConstant.ChatProvider.TIMESTAMP + ","
+            + TABLE_THREADS + "." + Threads.MESSAGE_COUNT
+            + " as " + DeviceApiConstant.ChatProvider.MESSAGE_COUNT + ","
+            + "(select COUNT(*) FROM (select " + TABLE_SMS + "." + Sms.READ + " FROM "
+            + TABLE_SMS + " inner join " + TABLE_THREADS + " on " + TABLE_SMS + "." + Sms.THREAD_ID
+            + " = " + TABLE_THREADS + "." + Threads._ID + " WHERE " + TABLE_SMS + "." + Sms.READ
+            + " = 0 " + " UNION ALL SELECT " + TABLE_PDU + "." + Mms.READ + " FROM " + TABLE_PDU
+            + " inner join " + TABLE_THREADS + " on " + TABLE_PDU + "." + Mms.THREAD_ID + " = "
+            + TABLE_THREADS + "." + Threads._ID +" WHERE " + TABLE_PDU + "." + Mms.READ + " = 0))"
+            + " as " + DeviceApiConstant.ChatProvider.UNREAD_COUNT + ","
+            + TABLE_THREADS + "." + RcsColumns.ThreadColumns.RCS_CHAT_TYPE
+            + " as " + DeviceApiConstant.ChatProvider.FLAG + ","
+            + "(CASE WHEN " + TABLE_THREADS + "." + RcsColumns.ThreadColumns.RCS_CHAT_TYPE + " = "
+            + DeviceApiConstant.ChatProvider.OFFICIAL
+            + " then NULL ELSE " + TABLE_THREADS + "." + Threads._ID + " END )"
+            + " as " + DeviceApiConstant.ChatProvider.CONVERSATION_ID + ","
+            + "(CASE WHEN " + TABLE_THREADS + "." + RcsColumns.ThreadColumns.RCS_CHAT_TYPE + " = "
+            + DeviceApiConstant.ChatProvider.MTM
+            + " THEN (select " + TABLE_SMS + "." + Sms.ADDRESS + " from " + TABLE_SMS
+            + " where " + TABLE_THREADS + "." + Threads._ID + " = " + TABLE_SMS + "."
+            + Sms.THREAD_ID + " AND " + TABLE_SMS + "." + RcsColumns.SmsRcsColumns.RCS_CHAT_TYPE
+            + " = " + DeviceApiConstant.ChatProvider.MTM + " AND "
+            + TABLE_SMS + "." + RcsColumns.SmsRcsColumns.RCS_MSG_TYPE + " = 7" + ") ELSE "
+            + TABLE_SMS + "." + Sms.ADDRESS + " END)"
+            + " as " + DeviceApiConstant.ChatProvider.RECIPIENTS + ","
+            + "(CASE WHEN " + TABLE_SMS + "." + RcsColumns.SmsRcsColumns.RCS_FILE_TRANSFER_ID
+            + " >= 0 AND " + TABLE_THREADS + "." + RcsColumns.ThreadColumns.RCS_MSG_ID
+            + "=" + TABLE_SMS + "." + Sms._ID + " THEN " + DeviceApiConstant.ChatProvider.FT
+            +" ELSE (CASE WHEN "
+            + TABLE_THREADS + "." + RcsColumns.ThreadColumns.RCS_CHAT_TYPE
+            + " = " + DeviceApiConstant.ChatProvider.OFFICIAL + " THEN "
+            + DeviceApiConstant.ChatProvider.XML + " ELSE (CASE WHEN "
+            + TABLE_THREADS + "." + RcsColumns.ThreadColumns.RCS_CHAT_TYPE + " = "
+            + DeviceApiConstant.ChatProvider.OTO + " OR "
+            + TABLE_THREADS + "." + RcsColumns.ThreadColumns.RCS_CHAT_TYPE + " = "
+            + DeviceApiConstant.ChatProvider.OTM + " OR "
+            + TABLE_THREADS + "." + RcsColumns.ThreadColumns.RCS_CHAT_TYPE + " = "
+            + DeviceApiConstant.ChatProvider.MTM
+            + " THEN " + DeviceApiConstant.ChatProvider.IM + " ELSE "
+            + DeviceApiConstant.ChatProvider.SMSMMS + " END)END)END)"
+            + " as " + DeviceApiConstant.ChatProvider.TYPE + ","
+            + "(CASE WHEN " + TABLE_SMS + "." + RcsColumns.SmsRcsColumns.RCS_FILE_TRANSFER_ID
+            + " >= 0 AND " + TABLE_THREADS + "." + RcsColumns.ThreadColumns.RCS_MSG_ID
+            + "=" + TABLE_SMS + "." + Sms._ID + " THEN "
+            + TABLE_SMS + "." + RcsColumns.SmsRcsColumns.RCS_MIME_TYPE + " ELSE NULL END)"
+            + " as " + DeviceApiConstant.ChatProvider.MIME_TYPE
+            + " from " + TABLE_THREADS + " inner join " + TABLE_SMS + " on "
+            + TABLE_THREADS + "." + RcsColumns.ThreadColumns.RCS_MSG_ID
+            + " = " + TABLE_SMS + "." + Sms._ID + " and " + TABLE_SMS + "."
+            + RcsColumns.SmsRcsColumns.RCS_MSG_TYPE + " <> 7";
+
+    public static final String MESSAGES_VIEW_CLOUMN =
+            "select "
+            + TABLE_SMS + "." + Sms._ID + " as " + DeviceApiConstant.ChatProvider.MESSAGE_ID + ","
+            + "(CASE WHEN " + TABLE_SMS + "." + RcsColumns.SmsRcsColumns.RCS_CHAT_TYPE + " = "
+            + DeviceApiConstant.ChatProvider.MTM + " THEN (select " + "a." + Sms.ADDRESS
+            + " from " + TABLE_SMS + " a where " + "a." + Sms.THREAD_ID
+            + " = " + TABLE_SMS + "." + Sms.THREAD_ID + " AND "
+            + "a." + RcsColumns.SmsRcsColumns.RCS_MSG_TYPE + " = 7" + ") ELSE NULL END) "
+            + " as " + DeviceApiConstant.ChatProvider.CHAT_ID + ","
+            + TABLE_SMS + "." + Sms.DATE
+            + " as " + DeviceApiConstant.ChatProvider.TIMESTAMP + ","
+            + TABLE_SMS + "." + Sms.THREAD_ID
+            + " as " + DeviceApiConstant.ChatProvider.CONVERSATION + ","
+            + TABLE_SMS + "." + RcsColumns.SmsRcsColumns.RCS_CHAT_TYPE
+            + " as " + DeviceApiConstant.ChatProvider.FLAG + ","
+            + " 0 " + " as " + DeviceApiConstant.ChatProvider.ISBLOCKED + ","
+            + "(CASE WHEN " + TABLE_SMS + "." + Sms.TYPE + " = 1 THEN "
+            + DeviceApiConstant.ChatProvider.INCOMING + " ELSE "
+            + DeviceApiConstant.ChatProvider.OUTGOING
+            + " END) as " + DeviceApiConstant.ChatProvider.DIRECTION + ","
+            + "(CASE WHEN " + TABLE_SMS + "." + RcsColumns.SmsRcsColumns.RCS_CHAT_TYPE + " = "
+            + DeviceApiConstant.ChatProvider.MTM + " THEN "
+            + " (select a." + Sms.ADDRESS + " from sms a where a." + Sms._ID + " = "
+            + TABLE_SMS + "." + Sms._ID + " AND a." + RcsColumns.SmsRcsColumns.RCS_MSG_TYPE
+            + " <> 7 ) " + " ELSE " + TABLE_SMS + "." + Sms.ADDRESS + " END) "
+            + " as " + DeviceApiConstant.ChatProvider.CONTACT_NUMBER + ","
+            + "(CASE WHEN " + TABLE_SMS + "." + RcsColumns.SmsRcsColumns.RCS_FILE_TRANSFER_ID
+            + " >= 0 THEN " + TABLE_SMS + "." + RcsColumns.SmsRcsColumns.RCS_FILE_TRANSFER_ID
+            + " ELSE (CASE WHEN " + TABLE_SMS + "." + RcsColumns.SmsRcsColumns.RCS_MESSAGE_ID
+            + "  is not null THEN " + TABLE_SMS + "." + Sms.BODY + " ELSE NULL END)END)"
+            + " as " + DeviceApiConstant.ChatProvider.BODY + ","
+            + "(CASE WHEN " + TABLE_SMS + "." + RcsColumns.SmsRcsColumns.RCS_FILE_TRANSFER_ID
+            + " >= 0 THEN "+ DeviceApiConstant.ChatProvider.FT + " ELSE "
+            + DeviceApiConstant.ChatProvider.IM + " END)"
+            + " as " + DeviceApiConstant.ChatProvider.TYPE + ","
+            + " (CASE WHEN " + TABLE_SMS + "." + Sms.TYPE + " = 1 AND "
+            + TABLE_SMS + "." + Sms.READ + " = 0 THEN "
+            + DeviceApiConstant.ChatProvider.UNREAD + " ELSE (CASE WHEN "
+            + TABLE_SMS + "." + Sms.TYPE + " = 1 AND "
+            + TABLE_SMS + "." + Sms.READ + " = 1 THEN " + DeviceApiConstant.ChatProvider.READ
+            + " ELSE (CASE WHEN "
+            + TABLE_SMS + "." + RcsColumns.SmsRcsColumns.RCS_MESSAGE_ID + " is null AND "
+            + TABLE_SMS + "." + Sms.TYPE + " = "+ Sms.MESSAGE_TYPE_QUEUED + " THEN "
+            + DeviceApiConstant.ChatProvider.SENDING + " WHEN "
+            + TABLE_SMS + "." + RcsColumns.SmsRcsColumns.RCS_MESSAGE_ID + " is null AND "
+            + TABLE_SMS + "." + Sms.TYPE + " = "+ Sms.MESSAGE_TYPE_SENT + " THEN "
+            + DeviceApiConstant.ChatProvider.SENT + " WHEN "
+            + TABLE_SMS + "." + RcsColumns.SmsRcsColumns.RCS_MESSAGE_ID + " is null AND "
+            + TABLE_SMS + "." + Sms.TYPE + " = "+ Sms.MESSAGE_TYPE_FAILED + " THEN "
+            + DeviceApiConstant.ChatProvider.FAILED + " ELSE (CASE WHEN "
+            + TABLE_SMS + "." + RcsColumns.SmsRcsColumns.RCS_MESSAGE_ID + " is not null AND "
+            + TABLE_SMS + "." + RcsColumns.SmsRcsColumns.RCS_MSG_STATE + " = "
+            + MessageConstants.CONST_STATUS_SENDING + " THEN "
+            + DeviceApiConstant.ChatProvider.SENDING + " WHEN "
+            + TABLE_SMS + "." + RcsColumns.SmsRcsColumns.RCS_MESSAGE_ID + " is not null AND "
+            + TABLE_SMS + "." + RcsColumns.SmsRcsColumns.RCS_MSG_STATE + " = "
+            + MessageConstants.CONST_STATUS_SENDED + " THEN "
+            + DeviceApiConstant.ChatProvider.SENT + " WHEN "
+            + TABLE_SMS + "." + RcsColumns.SmsRcsColumns.RCS_MESSAGE_ID + " is not null AND "
+            + TABLE_SMS + "." + RcsColumns.SmsRcsColumns.RCS_MSG_STATE + " = "
+            + MessageConstants.CONST_STATUS_SEND_FAIL + " THEN "
+            + DeviceApiConstant.ChatProvider.FAILED + " WHEN "
+            + TABLE_SMS + "." + RcsColumns.SmsRcsColumns.RCS_MESSAGE_ID + " is not null AND "
+            + TABLE_SMS + "." + RcsColumns.SmsRcsColumns.RCS_MSG_STATE + " = "
+            + MessageConstants.CONST_STATUS_SEND_RECEIVED + " THEN "
+            + DeviceApiConstant.ChatProvider.DELIVERED + " ELSE "
+            + DeviceApiConstant.ChatProvider.TO_SEND + " END)END)END)END)"
+            + " as " + DeviceApiConstant.ChatProvider.MESSAGE_STATUS
+            + " from " + TABLE_SMS + " WHERE " + TABLE_SMS + "."
+            + RcsColumns.SmsRcsColumns.RCS_CHAT_TYPE + " in (1,2,3) and "
+            + TABLE_SMS + "." + RcsColumns.SmsRcsColumns.RCS_MSG_TYPE + " <> 7";
+
+    public static final String PUBLIC_ACCOUNT_MESSAGES_VIEW_CLOUMN =
+            "select "
+            + TABLE_SMS + "." + Sms.ADDRESS
+            + " as " + DeviceApiConstant.PublicAccountProvider.ACCOUNT + ","
+            + TABLE_SMS + "." + Sms.BODY
+            + " as " + DeviceApiConstant.PublicAccountProvider.BODY + ","
+            + TABLE_SMS + "." + Sms.DATE
+            + " as " + DeviceApiConstant.PublicAccountProvider.TIMESTAMP + ","
+            + "(CASE WHEN " + TABLE_SMS + "." + Sms.TYPE + " = 1 THEN "
+            + DeviceApiConstant.PublicAccountProvider.INCOMING + " ELSE "
+            + DeviceApiConstant.PublicAccountProvider.OUTGOING
+            + " END) as " + DeviceApiConstant.PublicAccountProvider.DIRECTION + ","
+            + TABLE_SMS + "." + RcsColumns.SmsRcsColumns.RCS_MIME_TYPE
+            + " as " + DeviceApiConstant.PublicAccountProvider.MIME_TYPE + ","
+            + "(CASE WHEN " + TABLE_SMS + "." + RcsColumns.SmsRcsColumns.RCS_FILE_TRANSFER_ID
+            + " >= 0 THEN "+ DeviceApiConstant.PublicAccountProvider.FT + " ELSE "
+            + DeviceApiConstant.PublicAccountProvider.XML+ " END)"
+            + " as " + DeviceApiConstant.PublicAccountProvider.TYPE + ","
+            + " (CASE WHEN " + TABLE_SMS + "." + Sms.TYPE + " = 1 AND "
+            + TABLE_SMS + "." + Sms.READ + " = 0 THEN "
+            + DeviceApiConstant.PublicAccountProvider.UNREAD + " ELSE (CASE WHEN "
+            + TABLE_SMS + "." + Sms.TYPE + " = 1 AND "
+            + TABLE_SMS + "." + Sms.READ + " = 1 THEN "
+            + DeviceApiConstant.PublicAccountProvider.READ + " ELSE (CASE WHEN "
+            + TABLE_SMS + "." + RcsColumns.SmsRcsColumns.RCS_MESSAGE_ID + " is null AND "
+            + TABLE_SMS + "." + Sms.TYPE + " = "+ Sms.MESSAGE_TYPE_QUEUED + " THEN "
+            + DeviceApiConstant.PublicAccountProvider.SENDING + " WHEN "
+            + TABLE_SMS + "." + RcsColumns.SmsRcsColumns.RCS_MESSAGE_ID + " is null AND "
+            + TABLE_SMS + "." + Sms.TYPE + " = "+ Sms.MESSAGE_TYPE_SENT + " THEN "
+            + DeviceApiConstant.PublicAccountProvider.SENT + " WHEN "
+            + TABLE_SMS + "." + RcsColumns.SmsRcsColumns.RCS_MESSAGE_ID + " is null AND "
+            + TABLE_SMS + "." + Sms.TYPE + " = "+ Sms.MESSAGE_TYPE_FAILED + " THEN "
+            + DeviceApiConstant.PublicAccountProvider.FAILED + " ELSE (CASE WHEN "
+            + TABLE_SMS + "." + RcsColumns.SmsRcsColumns.RCS_MESSAGE_ID + " is not null AND "
+            + TABLE_SMS + "." + RcsColumns.SmsRcsColumns.RCS_MSG_STATE + " = "
+            + MessageConstants.CONST_STATUS_SENDING + " THEN "
+            + DeviceApiConstant.PublicAccountProvider.SENDING + " WHEN "
+            + TABLE_SMS + "." + RcsColumns.SmsRcsColumns.RCS_MESSAGE_ID + " is not null AND "
+            + TABLE_SMS + "." + RcsColumns.SmsRcsColumns.RCS_MSG_STATE + " = "
+            + MessageConstants.CONST_STATUS_SENDED + " THEN "
+            + DeviceApiConstant.PublicAccountProvider.SENT + " WHEN "
+            + TABLE_SMS + "." + RcsColumns.SmsRcsColumns.RCS_MESSAGE_ID + " is not null AND "
+            + TABLE_SMS + "." + RcsColumns.SmsRcsColumns.RCS_MSG_STATE + " = "
+            + MessageConstants.CONST_STATUS_SEND_FAIL + " THEN "
+            + DeviceApiConstant.PublicAccountProvider.FAILED + " WHEN "
+            + TABLE_SMS + "." + RcsColumns.SmsRcsColumns.RCS_MESSAGE_ID + " is not null AND "
+            + TABLE_SMS + "." + RcsColumns.SmsRcsColumns.RCS_MSG_STATE + " = "
+            + MessageConstants.CONST_STATUS_SEND_RECEIVED + " THEN "
+            + DeviceApiConstant.PublicAccountProvider.DELIVERED + " ELSE "
+            + DeviceApiConstant.PublicAccountProvider.TO_SEND + " END)END)END)END)"
+            + " as " + DeviceApiConstant.PublicAccountProvider.MESSAGE_STATUS + ","
+            + "(CASE WHEN " + TABLE_SMS + "." + RcsColumns.SmsRcsColumns.RCS_FILE_TRANSFER_ID
+            + " >= 0 THEN "
+            + TABLE_SMS + "." + RcsColumns.SmsRcsColumns.RCS_FILE_TRANSFER_ID + " ELSE "
+            + TABLE_SMS + "." + Sms._ID + " END)"
+            + " as " + DeviceApiConstant.PublicAccountProvider.MESSAGE_ID
+            + " from " + TABLE_SMS + " WHERE "
+            + TABLE_SMS + "." + RcsColumns.SmsRcsColumns.RCS_CHAT_TYPE
+            + " = " + DeviceApiConstant.ChatProvider.OFFICIAL;
+
+    public static final String FILE_TRANSFER_MESSAGE_VIEW_CLOUMN =
+            "select "
+            + TABLE_SMS + "." + Sms.DATE
+            + " as " + DeviceApiConstant.FileTransferProvider.TIMESTAMP + ","
+            + TABLE_SMS + "." + Sms.ADDRESS
+            + " as " + DeviceApiConstant.FileTransferProvider.CONTACT_NUMBER + ","
+            + TABLE_SMS + "." + RcsColumns.SmsRcsColumns.RCS_FILE_TRANSFER_ID
+            + " as " + DeviceApiConstant.FileTransferProvider.FT_ID + ","
+            + TABLE_SMS + "." + RcsColumns.SmsRcsColumns.RCS_FILENAME
+            + " as " + DeviceApiConstant.FileTransferProvider.FILENAME + ","
+            + TABLE_SMS + "." + RcsColumns.SmsRcsColumns.RCS_THUMB_PATH
+            + " as " + DeviceApiConstant.FileTransferProvider.FILEICON + ","
+            + TABLE_SMS + "." + RcsColumns.SmsRcsColumns.RCS_FILE_SIZE
+            + " as " + DeviceApiConstant.FileTransferProvider.FILE_SIZE + ","
+            + TABLE_SMS + "." + RcsColumns.SmsRcsColumns.RCS_FILE_TRANSFERED
+            + " as " + DeviceApiConstant.FileTransferProvider.TRANSFERRED_SIZE + ","
+            + TABLE_SMS + "." + RcsColumns.SmsRcsColumns.RCS_MIME_TYPE
+            + " as " + DeviceApiConstant.FileTransferProvider.TYPE + ","
+            + "(CASE WHEN " + TABLE_SMS + "." + Sms.TYPE + " = 1 THEN "
+            + DeviceApiConstant.ChatProvider.INCOMING + " ELSE "
+            + DeviceApiConstant.ChatProvider.OUTGOING
+            + " END) as " + DeviceApiConstant.FileTransferProvider.DIRECTION + ","
+            + FILE_TRANSFER_STATE
+            + " as " + DeviceApiConstant.FileTransferProvider.STATE
+            + " from " + TABLE_SMS + " WHERE "
+            + TABLE_SMS + "." + RcsColumns.SmsRcsColumns.RCS_FILE_TRANSFER_ID + " >= 0 ";
+
+    public static final String BLOCKED_CALLOG_CLOUMNS =
+            "select "
+            + " _id as " + DeviceApiConstant.BlacklistProvider.CALL_ID + ","
+            + " contact as " + DeviceApiConstant.BlacklistProvider.PHONE_NUMBER + ","
+            + " null as " + DeviceApiConstant.BlacklistProvider.NAME
+            + " from blockrecorditems where block_type = 0";
 }
diff --git a/rcs_ui_common/src/com/suntek/rcs/ui/common/provider/RcsMessageProviderUtils.java b/rcs_ui_common/src/com/suntek/rcs/ui/common/provider/RcsMessageProviderUtils.java
index 578f9cb..193ff34 100644
--- a/rcs_ui_common/src/com/suntek/rcs/ui/common/provider/RcsMessageProviderUtils.java
+++ b/rcs_ui_common/src/com/suntek/rcs/ui/common/provider/RcsMessageProviderUtils.java
@@ -24,6 +24,8 @@
 package com.suntek.rcs.ui.common.provider;
 
 import android.database.sqlite.SQLiteDatabase;
+import android.database.Cursor;
+import android.net.Uri;
 import android.provider.Telephony;
 import android.provider.Telephony.Mms;
 import android.provider.Telephony.MmsSms;
@@ -183,7 +185,10 @@
                 " = 1;");
         createRcsOneToManyMesageStatusTable(db);
         createRcsThreadUpdateTriggers(db);
+        createDeviceApiSqlView(db);
+        createRcsDeleteGroupStatesTriggers(db);
     }
+
     /**
      * create a table to save rcs 1-N message status.
      */
@@ -198,9 +203,24 @@
     }
 
     public static void createRcsThreadUpdateTriggers(SQLiteDatabase db) {
-        db.execSQL("CREATE TRIGGER sms_update_thread_rcs_message_info_on_insert" +
+        db.execSQL("CREATE TRIGGER sms_update_thread_rcs_message_info_on_insert " +
                 " AFTER INSERT ON sms "
                 + RcsMessageProviderConstants.SMS_UPDATE_THREAD_RCS_MESSAGE_INFO_ON_NEW);
+        createSmsDeleteDuplicateRecordBeforeInsertTriggers(db);
+    }
+
+    public static void createRcsDeleteGroupStatesTriggers(SQLiteDatabase db) {
+        db.execSQL("create trigger delete_group_status_after_delete_sms" +
+                " AFTER DELETE ON sms" +
+                " BEGIN" +
+                " delete from group_status where msg_id = old._id;" +
+                " END");
+    }
+
+    public static void createSmsDeleteDuplicateRecordBeforeInsertTriggers(SQLiteDatabase db) {
+        db.execSQL("CREATE TRIGGER sms_delete_duplicate_record_before_insert" +
+                " BEFORE INSERT ON sms "
+                + RcsMessageProviderConstants.SMS_DELETE_DUPLICATE_RECORD_BEFORE_INSERT);
     }
 
     public static void createRcsThreadsTable(SQLiteDatabase db) {
@@ -221,7 +241,7 @@
                 RcsColumns.ThreadColumns.RCS_NUMBER + " TEXT," +
                 RcsColumns.ThreadColumns.RCS_MSG_ID + " INTEGER  DEFAULT -1," +
                 RcsColumns.ThreadColumns.RCS_MSG_TYPE + " INTEGER  DEFAULT -1," +
-                RcsColumns.ThreadColumns.RCS_CHAT_TYPE + " INTEGER  DEFAULT -1"+
+                RcsColumns.ThreadColumns.RCS_CHAT_TYPE + " INTEGER  DEFAULT -1 " +
                 ");");
     }
 
@@ -320,4 +340,52 @@
         db.execSQL("CREATE TRIGGER sms_words_delete AFTER DELETE ON sms BEGIN DELETE FROM " +
                 "  words WHERE source_id = OLD._id AND table_to_use = 1; END;");
     }
+
+    public static void upgradeDatabaseToVersion66(SQLiteDatabase db) {
+        db.execSQL("DROP TRIGGER IF EXISTS sms_update_thread_rcs_message_info_on_insert");
+        createRcsThreadUpdateTriggers(db);
+        createDeviceApiSqlView(db);
+        createRcsDeleteGroupStatesTriggers(db);
+
+    }
+
+    public static void createDeviceApiSqlView(SQLiteDatabase db) {
+        db.execSQL("create view " + RcsMessageProviderConstants.DeviceApiViews.DEVICE_API_MESSAGES
+                + " as " + RcsMessageProviderConstants.MESSAGES_VIEW_CLOUMN);
+        db.execSQL("create view " + RcsMessageProviderConstants.DeviceApiViews.MESSAGE_CONVERSATION
+                + " as " + RcsMessageProviderConstants.MESSAGE_CONVERSATION_VIEW_CLOUMNS);
+        db.execSQL("create view "
+                + RcsMessageProviderConstants.DeviceApiViews.PUBLIC_ACCOUNT_MESSAGES
+                + " as " + RcsMessageProviderConstants.PUBLIC_ACCOUNT_MESSAGES_VIEW_CLOUMN);
+        db.execSQL("create view "
+                + RcsMessageProviderConstants.DeviceApiViews.FILE_TRANSFER_MESSAGE
+                + " as " + RcsMessageProviderConstants.FILE_TRANSFER_MESSAGE_VIEW_CLOUMN);
+        createDeviceApiIndex(db);
+    }
+
+    public static void createDeviceApiBlockedCallogView(SQLiteDatabase db) {
+        db.execSQL("create view "
+                + RcsMessageProviderConstants.DeviceApiViews.BLOCKED_CALLLOGS
+                + " as " + RcsMessageProviderConstants.BLOCKED_CALLOG_CLOUMNS);
+    }
+
+    public static void createDeviceApiIndex(SQLiteDatabase db) {
+        db.execSQL("create index rcsChatTypeThreadIdIndex on sms ("
+                + RcsColumns.SmsRcsColumns.RCS_CHAT_TYPE + "," + Sms.THREAD_ID + ")");
+        db.execSQL("create index rcsFileTransferIdIndex on sms ("
+                + RcsColumns.SmsRcsColumns.RCS_FILE_TRANSFER_ID + ")");
+        db.execSQL("create index rcsMessageIdIndex on sms ("
+                + RcsColumns.SmsRcsColumns.RCS_MESSAGE_ID + ")");
+        db.execSQL("create index threadIdIndex on sms(" + Sms.THREAD_ID + ")");
+    }
+
+    public static Cursor getConvasatonUnreadCount(SQLiteDatabase db, Uri uri) {
+        String threadId = uri.getQueryParameter("threadId");
+        String queryString =
+        "     SELECT COUNT(*) FROM (SELECT read FROM " +
+        "     sms WHERE read = 0 AND thread_id = " + threadId +
+        "     UNION ALL SELECT read FROM pdu WHERE read = 0 " +
+        "     AND thread_id = " + threadId +") ;";
+        return db.rawQuery(queryString, new String[0]);
+    }
 }
diff --git a/rcs_ui_common/src/com/suntek/rcs/ui/common/utils/RcsUtils.java b/rcs_ui_common/src/com/suntek/rcs/ui/common/utils/RcsUtils.java
index bf36dce..eee5d27 100644
--- a/rcs_ui_common/src/com/suntek/rcs/ui/common/utils/RcsUtils.java
+++ b/rcs_ui_common/src/com/suntek/rcs/ui/common/utils/RcsUtils.java
@@ -23,6 +23,10 @@
 package com.suntek.rcs.ui.common.utils;
 
 import com.suntek.rcs.ui.common.RcsEmojiGifView;
+import com.suntek.rcs.ui.common.RcsLog;
+
+import java.io.Closeable;
+import java.io.IOException;
 
 import android.app.Activity;
 import android.content.Context;
@@ -39,6 +43,7 @@
 import android.widget.RelativeLayout;
 
 public class RcsUtils {
+
     public static int dip2px(Context context, float dipValue) {
         final float scale = context.getResources().getDisplayMetrics().density;
         return (int)(dipValue * scale + 0.5f);
@@ -88,4 +93,14 @@
         popupWindow.showAtLocation(view, Gravity.CENTER, 0, 0);
         popupWindow.update();
     }
+
+    public static void closeSilently(Closeable c) {
+        try {
+            if (c != null) {
+                c.close();
+            }
+        } catch(IOException e) {
+            RcsLog.e(e);
+        }
+    }
 }
