Merge "RCS: add RCS service file"
diff --git a/Android.mk b/Android.mk
new file mode 100644
index 0000000..5053e7d
--- /dev/null
+++ b/Android.mk
@@ -0,0 +1 @@
+include $(call all-subdir-makefiles)
diff --git a/rcs_service_aidl/Android.mk b/rcs_service_aidl/Android.mk
new file mode 100644
index 0000000..580b6c8
--- /dev/null
+++ b/rcs_service_aidl/Android.mk
@@ -0,0 +1,55 @@
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_AIDL_INCLUDES := $(LOCAL_PATH)/src
+
+# Important: Must not contain any aidl files for parcelables
+LOCAL_SRC_FILES := \
+ $(call all-java-files-under, src) \
+ src/com/suntek/mway/rcs/client/api/autoconfig/IAutoConfigApi.aidl \
+ src/com/suntek/mway/rcs/client/api/blacklist/IBlackListApi.aidl \
+ src/com/suntek/mway/rcs/client/api/capability/ICapabilityApi.aidl \
+ src/com/suntek/mway/rcs/client/api/capability/IRcsCapabilityApi.aidl \
+ src/com/suntek/mway/rcs/client/api/emoticon/IEmoticonApi.aidl \
+ src/com/suntek/mway/rcs/client/api/im/IGroupManagerApi.aidl \
+ src/com/suntek/mway/rcs/client/api/im/IInstantMessageApi.aidl \
+ src/com/suntek/mway/rcs/client/api/im/IPaMessageApi.aidl \
+ src/com/suntek/mway/rcs/client/api/IRCSServiceListener.aidl \
+ src/com/suntek/mway/rcs/client/api/login/ILoginApi.aidl \
+ src/com/suntek/mway/rcs/client/api/login/ILoginEventListener.aidl \
+ src/com/suntek/mway/rcs/client/api/mcloud/IMcloudFileApi.aidl \
+ src/com/suntek/mway/rcs/client/api/mcontact/IMcontactApi.aidl \
+ src/com/suntek/mway/rcs/client/api/plugin/callback/ICapabiltyListener.aidl \
+ src/com/suntek/mway/rcs/client/api/plugin/callback/IConferenceCallback.aidl \
+ src/com/suntek/mway/rcs/client/api/plugin/callback/IEmoticonCallbackApi.aidl \
+ src/com/suntek/mway/rcs/client/api/plugin/callback/IEmoticonCanSendCallback.aidl \
+ src/com/suntek/mway/rcs/client/api/plugin/callback/IEmoticonPackagesNetCallbackApi.aidl \
+ src/com/suntek/mway/rcs/client/api/plugin/callback/IEmoticonSetSuccessDownListener.aidl \
+ src/com/suntek/mway/rcs/client/api/plugin/callback/IMcloudAuthListener.aidl \
+ src/com/suntek/mway/rcs/client/api/plugin/callback/IMcloudConfListener.aidl \
+ src/com/suntek/mway/rcs/client/api/plugin/callback/IMcloudFileListener.aidl \
+ src/com/suntek/mway/rcs/client/api/plugin/callback/IMcloudMsgListener.aidl \
+ src/com/suntek/mway/rcs/client/api/plugin/callback/IMcloudOperationCtrl.aidl \
+ src/com/suntek/mway/rcs/client/api/plugin/callback/IMcloudSdkListener.aidl \
+ src/com/suntek/mway/rcs/client/api/plugin/callback/IMcloudShareListener.aidl \
+ src/com/suntek/mway/rcs/client/api/plugin/callback/IMcloudTransListener.aidl \
+ src/com/suntek/mway/rcs/client/api/plugin/callback/IMContactSyncListener.aidl \
+ src/com/suntek/mway/rcs/client/api/plugin/callback/IProfileGetCallback.aidl \
+ src/com/suntek/mway/rcs/client/api/plugin/callback/IProfileListener.aidl \
+ src/com/suntek/mway/rcs/client/api/plugin/callback/IProfilePutCallback.aidl \
+ src/com/suntek/mway/rcs/client/api/plugin/callback/IPublicAccountCallbackAPI.aidl \
+ src/com/suntek/mway/rcs/client/api/plugin/IMcloudFileApi.aidl \
+ src/com/suntek/mway/rcs/client/api/plugin/IProfileApi.aidl \
+ src/com/suntek/mway/rcs/client/api/plugin/IPublicAccountAPI.aidl \
+ src/com/suntek/mway/rcs/client/api/plugin/IRichScreenApi.aidl \
+ src/com/suntek/mway/rcs/client/api/plugincenter/IPluginCenterApi.aidl \
+ src/com/suntek/mway/rcs/client/api/registration/IRegistrationApi.aidl \
+ src/com/suntek/mway/rcs/client/api/setting/callback/IAccountEventListener.aidl \
+ src/com/suntek/mway/rcs/client/api/setting/IRcsSettingApi.aidl \
+ src/com/suntek/mway/rcs/client/api/specialnumber/ISpecialServiceNumApi.aidl
+
+LOCAL_MODULE_TAGS := optional
+LOCAL_MODULE := rcs_service_aidl
+
+include $(BUILD_STATIC_JAVA_LIBRARY)
\ No newline at end of file
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/ClientInterface.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/ClientInterface.java
new file mode 100644
index 0000000..387c1de
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/ClientInterface.java
@@ -0,0 +1,139 @@
+/*
+ * Copyright (c) 2014 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.api;
+
+import java.util.List;
+import java.util.Vector;
+
+import com.suntek.mway.rcs.client.api.constant.APIConstant;
+
+import android.app.ActivityManager;
+import android.content.ComponentName;
+import android.content.Context;
+
+/**
+ * <p>Title: ClientInterface base class</p>
+ * <p>
+ * Description: The abstract class <code>ClientInterface</code> represents a bridge of
+ * communication between local and service. Any object that wants to communicate to
+ * the service must extends <code>com.suntek.mway.rcs.api.client.ClientInterface</code>.
+ * </p>
+ * <p>
+ * Copyright: Copyright (c) 2014
+ * </p>
+ * <p>
+ * Company: pci-suntek
+ * </p>
+ * @author YE JIE MING
+ * @version 1.0
+ *
+ */
+public abstract class ClientInterface {
+ /**
+ * a vertor of {@link ClientInterfaceListener}
+ */
+ private Vector<ClientInterfaceListener> listeners = new Vector<ClientInterfaceListener>();
+
+ /**
+ * Constructs an ClientInterface with zero ClientInterfaceListener.
+ */
+ public ClientInterface() {
+ }
+
+ /**
+ * add a {@link ClientInterfaceListener}
+ * @param listener a implementation of ClientInterfaceListener
+ */
+ public void addInterfaceEventListener(ClientInterfaceListener listener) {
+ listeners.addElement(listener);
+ }
+
+ /**
+ * remove a {@link ClientInterfaceListener}
+ *
+ * @param listener a implementation of ClientInterfaceListener
+ */
+ public void removeInterfaceEventListener(ClientInterfaceListener listener) {
+ listeners.removeElement(listener);
+ }
+
+ /**
+ * remove all {@link ClientInterfaceListener}
+ */
+ public void removeAllInterfaceEventListeners() {
+ listeners.removeAllElements();
+ }
+
+ /**
+ * when the local connect to service, then notify all of its {@link ClientInterfaceListener}
+ */
+ public void notifyEventInterfaceConnected() {
+ for(int i=0; i < listeners.size(); i++) {
+ ClientInterfaceListener listener = (ClientInterfaceListener)listeners.elementAt(i);
+ listener.handleInterfaceConnected();
+ }
+ }
+
+ /**
+ * when disconnect between local and service, then notify all of its {@link ClientInterfaceListener}
+ */
+ public void notifyEventInterfaceDisconnected() {
+ for(int i=0; i < listeners.size(); i++) {
+ ClientInterfaceListener listener = (ClientInterfaceListener)listeners.elementAt(i);
+ listener.handleInterfaceDisconnected();
+ }
+ }
+
+ /**
+ * check the service is start or not.
+ * @param ctx android.content.Context
+ * @return true if the service is started , false otherwise.
+ */
+ public static boolean isServiceStarted(Context ctx) {
+ ActivityManager activityManager = (ActivityManager)ctx.getSystemService(Context.ACTIVITY_SERVICE);
+ List<ActivityManager.RunningServiceInfo> serviceList = activityManager.getRunningServices(Integer.MAX_VALUE);
+ for(int i = 0; i < serviceList.size(); i++) {
+ ActivityManager.RunningServiceInfo serviceInfo = serviceList.get(i);
+ ComponentName serviceName = serviceInfo.service;
+ if (serviceName.getClassName().equals(APIConstant.CORE_SERVICE_CLASSNAME)) {
+ if (serviceInfo.pid != 0) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+ }
+ return false;
+ }
+
+ /**
+ * subclass must override this method for connect operation
+ */
+ protected abstract void connectInterface();
+
+ /**
+ * subclass must override this method for disconnect operation
+ */
+ protected abstract void disconnectInterface();
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/ClientInterfaceException.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/ClientInterfaceException.java
new file mode 100644
index 0000000..c8c213b
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/ClientInterfaceException.java
@@ -0,0 +1,53 @@
+/*
+ * Copyright (c) 2014 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.api;
+
+/**
+ * <p>Title: ClientInterfaceException base class</p>
+ * <p>
+ * Description: The class <code>ClientInterfaceException</code> and its subclasses are a form of
+ * <code>Exception</code> that indicates conditions that a reasonable application
+ * might want to catch.
+ * </p>
+ * <p>
+ * Copyright: Copyright (c) 2014
+ * </p>
+ * <p>
+ * Company: pci-suntek
+ * </p>
+ * @author YE JIE MING
+ * @version 1.0
+ *
+ */
+public class ClientInterfaceException extends java.lang.Exception {
+ static final long serialVersionUID = 4210559475585831906L;
+
+ /**
+ * Constructs a new exception with the specified detail message.
+ * @param message the detail message.
+ */
+ public ClientInterfaceException(String message) {
+ super(message);
+ }
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/ClientInterfaceIntents.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/ClientInterfaceIntents.java
new file mode 100644
index 0000000..a0f2bb3
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/ClientInterfaceIntents.java
@@ -0,0 +1,311 @@
+/*
+ * Copyright (c) 2014 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.api;
+
+/**
+ * <p>Title: ClientInterfaceIntents interface</p>
+ * <p>
+ * Description: The interface <code>ClientInterfaceIntents</code> defines a series of
+ * broadcast messages which are indicated by the field definition in this class.
+ * </p>
+ * <p>
+ * Copyright: Copyright (c) 2014
+ * </p>
+ * <p>
+ * Company: pci-suntek
+ * </p>
+ * @author YE JIE MING
+ * @version 1.0
+ *
+ */
+public interface ClientInterfaceIntents {
+ /**
+ * the broadcast message of login or logout.
+ * The android.content.Intent associated with
+ * the broadcast message carries three arguments
+ * that are described as the following table:
+ * <table border="1">
+ * <tr>
+ * <th>extra variable name</th><th>type</th><th>description</th>
+ * </tr>
+ * <tr>
+ * <td>status</td><td>int</td><td>{@link ClientInterfaceIntents#REGISTER_SUCCESS}<br/>{@link ClientInterfaceIntents#REGISTER_FAILED}<br/>{@link ClientInterfaceIntents#REGISTER_TERMINATED}<br/>{@link ClientInterfaceIntents#REGISTER_IN_PROGRESS}</td>
+ * </tr>
+ * <tr>
+ * <td>errorCode</td><td>int</td><td>the error code related to register failure</td>
+ * </tr>
+ * <tr>
+ * <td>message</td><td>String</td><td>the message related to register failure</td>
+ * </tr>
+ * </table>
+ */
+ public final static String ACTION_REGISTER_STATUS_CHANGED = "com.suntek.mway.rcs.ACTION_REGISTER_STATUS_CHANGED";
+
+ /**
+ * register successfully.
+ */
+ public static final int REGISTER_SUCCESS = 200;
+
+ /**
+ * register fail.
+ */
+ public static final int REGISTER_FAILED = -1;
+
+ /**
+ * unregister successfully.
+ */
+ public static final int REGISTER_TERMINATED = -3;
+
+ /**
+ * In the register progress.
+ */
+ public static final int REGISTER_IN_PROGRESS = 202;
+
+ /** The Constant DMS_USER_STATUS_OK. */
+ public static final int DMS_USER_STATUS_OK = 0;
+
+ /** The Constant DMS_USER_STATUS_TEMP_PASSIVE_DISABLED. */
+ public static final int DMS_USER_STATUS_TEMP_PASSIVE_DISABLED = 1;
+
+ /** The Constant DMS_USER_STATUS_PERMANENT_DISABLED. */
+ public static final int DMS_USER_STATUS_PERMANENT_DISABLED = 2;
+
+ /** The Constant DMS_USER_STATUS_TEMP_ACTIVE_DISABLED. */
+ public static final int DMS_USER_STATUS_TEMP_ACTIVE_DISABLED = 3;
+
+ /** The Constant DMS_USER_STATUS_DORMANT. */
+ public static final int DMS_USER_STATUS_DORMANT = 4;
+
+ /**
+ * the broadcast message of audio or video call.
+ * The android.content.Intent associated with
+ * the broadcast message carries three arguments
+ * that are described as the following table:
+ * <table border="1">
+ * <tr>
+ * <th>extra variable name</th><th>type</th><th>description</th>
+ * </tr>
+ * <tr>
+ * <td>callRecordId</td><td>int</td><td>long</td><td>call record id</td>
+ * </tr>
+ * <tr>
+ * <td>sessionId</td><td>long</td><td>session id</td>
+ * </tr>
+ * <tr>
+ * <td>contact</td><td>String</td><td>phone number</td>
+ * </tr>
+ * </table>
+ */
+ public final static String ACTION_INCOMING_AV_CALL = "com.suntek.mway.rcs.ACTION_INCOMING_AV_CALL";
+
+ /**
+ * the broadcast message of the status changed of message to be send.
+ * The android.content.Intent associated with
+ * the broadcast message carries two arguments
+ * that are described as the following table:
+ * <table border="1">
+ * <tr>
+ * <th>extra variable name</th><th>type</th><th>description</th>
+ * </tr>
+ * <tr>
+ * <td>status</td><td>int</td><td>{@link com.suntek.mway.rcs.client.api.provider.SuntekMessageData#MSG_STATE_SEND_OK}<br/>{@link com.suntek.mway.rcs.client.api.provider.SuntekMessageData#MSG_STATE_SEND_REC}<br/>{@link com.suntek.mway.rcs.client.api.provider.SuntekMessageData#MSG_STATE_SENDED}<br/>{@link com.suntek.mway.rcs.client.api.provider.SuntekMessageData#MSG_STATE_SEND_ING}<br/>{@link com.suntek.mway.rcs.client.api.provider.SuntekMessageData#MSG_STATE_SEND_FAIL}</td>
+ * </tr>
+ * <tr>
+ * <td>messageId</td><td>String</td><td>message id</td>
+ * </tr>
+ * </table>
+ */
+ public final static String ACTION_MESSAGE_STATUS_CHANGED = "com.suntek.mway.rcs.ACTION_MESSAGE_STATUS_CHANGED";
+
+ /**
+ * the broadcast message of the new arrival message.
+ * The android.content.Intent associated with
+ * the broadcast message carries four arguments
+ * that are described as the following table:
+ * <table border="1">
+ * <tr>
+ * <th>extra variable name</th><th>type</th><th>description</th>
+ * </tr>
+ * <tr>
+ * <td>msgType</td><td>int</td><td>{@link com.suntek.mway.rcs.client.api.provider.SuntekMessageData#MSG_TYPE_TEXT}<br/>{@link com.suntek.mway.rcs.client.api.provider.SuntekMessageData#MSG_TYPE_FILE}<br/>{@link com.suntek.mway.rcs.client.api.provider.SuntekMessageData#MSG_TYPE_LOCATION}<br/>{@link com.suntek.mway.rcs.client.api.provider.SuntekMessageData#MSG_TYPE_CONTACT}<br/>{@link com.suntek.mway.rcs.client.api.provider.SuntekMessageData#MSG_TYPE_GROUP_INFO}</td>
+ * </tr>
+ * <tr>
+ * <td>contact</td><td>String</td><td>phone number</td>
+ * </tr>
+ * <tr>
+ * <td>message</td><td>String</td><td>message content</td>
+ * </tr>
+ * <tr>
+ * <td>receivedAt</td><td>Date</td><td>received date</td>
+ * </tr>
+ * </table>
+ */
+ public final static String ACTION_INCOMING_MESSAGE = "com.suntek.mway.rcs.message.ACTION_INCOMING_MESSAGE";
+
+ /**
+ * the broadcast message of the file transfer progress changed.
+ * The android.content.Intent associated with
+ * the broadcast message carries four arguments
+ * that are described as the following table:
+ * <table border="1">
+ * <tr>
+ * <th>name</th><th>type</th><th>description</th>
+ * </tr>
+ * <tr>
+ * <td>messageId</td><td>String</td><td>message id</td>
+ * </tr>
+ * <tr>
+ * <td>file</td><td>String</td><td>the path of file being transfered</td>
+ * </tr>
+ * <tr>
+ * <td>current</td><td>long</td><td>current bytes being sent</td>
+ * </tr>
+ * <tr>
+ * <td>total</td><td>long</td><td>total bytes of file</td>
+ * </tr>
+ * </table>
+ */
+ public final static String ACTION_FILE_TRANSFER_PROGRESS_CHANGED = "com.suntek.mway.rcs.ACTION_FILE_TRANSFER_PROGRESS_CHANGED";
+
+ /**
+ * the broadcast message of request before incoming file transfer is established.
+ * The android.content.Intent associated with
+ * the broadcast message carries five arguments
+ * that are described as the following table:
+ * <table border="1">
+ * <tr>
+ * <th>name</th><th>type</th><th>description</th>
+ * </tr>
+ * <tr>
+ * <td>contact</td><td>String</td><td>phone number</td>
+ * </tr>
+ * <tr>
+ * <td>sessionId</td><td>long</td><td>session id</td>
+ * </tr>
+ * <tr>
+ * <td>filename</td><td>String</td><td>file name</td>
+ * </tr>
+ * <tr>
+ * <td>fileSize</td><td>long</td><td>bytes of file</td>
+ * </tr>
+ * <tr>
+ * <td>fileType</td><td>String</td><td>file type</td>
+ * </tr>
+ * </table>
+ */
+ public final static String ACTION_INCOMING_FILE_TRANSFER = "com.suntek.mway.rcs.message.ACTION_INCOMING_FILE_TRANSFER";
+
+ /**
+ * the broadcast message of incoming geographical location.
+ */
+ //public final static String ACTION_INCOMING_LOCATION = "com.suntek.mway.rcs.message.ACTION_INCOMING_LOCATION";
+
+ /**
+ * the broadcast message of incoming contacts.
+ */
+ //public final static String ACTION_INCOMING_CONTACT = "com.suntek.mway.rcs.message.ACTION_INCOMING_CONTACT";
+
+ /**
+ * the broadcast message of request before one to one chat invitation is agreed.
+ * The android.content.Intent associated with
+ * the broadcast message carries three arguments
+ * that are described as the following table:
+ * <table border="1">
+ * <tr>
+ * <th>name</th><th>type</th><th>description</th>
+ * </tr>
+ * <tr>
+ * <td>contact</td><td>String</td><td>phone number</td>
+ * </tr>
+ * <tr>
+ * <td>subject</td><td>String</td><td>chat topic</td>
+ * </tr>
+ * <tr>
+ * <td>sessionId</td><td>long</td><td>session id</td>
+ * </tr>
+ * </table>
+ */
+ public final static String ACTION_ONE_2_ONE_CHAT_INVITATION = "com.suntek.mway.rcs.message.ACTION_ONE_2_ONE_CHAT_INVITATION";
+
+ /**
+ * the broadcast message of request before group chat invitation is agreed.
+ * The android.content.Intent associated with
+ * the broadcast message carries three arguments
+ * that are described as the following table:
+ * <table border="1">
+ * <tr>
+ * <th>name</th><th>type</th><th>description</th>
+ * </tr>
+ * <tr>
+ * <td>contact</td><td>String</td><td>chat room uri</td>
+ * </tr>
+ * <tr>
+ * <td>subject</td><td>String</td><td>chat topic</td>
+ * </tr>
+ * <tr>
+ * <td>sessionId</td><td>long</td><td>session id</td>
+ * </tr>
+ * </table>
+ */
+ public final static String ACTION_GROUP_CHAT_INVITATION = "com.suntek.mway.rcs.message.ACTION_GROUP_CHAT_INVITATION";
+
+ /**
+ * the broadcast message of incoming group message.
+ * The android.content.Intent associated with
+ * the broadcast message carries four arguments
+ * that are described as the following table:
+ * <table border="1">
+ * <tr>
+ * <th>name</th><th>type</th><th>description</th>
+ * </tr>
+ * <tr>
+ * <td>sessionId</td><td>long</td><td>session id of group chat</td>
+ * </tr>
+ * <tr>
+ * <td>msgType</td><td>int</td><td>{@link com.suntek.mway.rcs.client.api.provider.SuntekMessageData#MSG_TYPE_TEXT}<br/>{@link com.suntek.mway.rcs.client.api.provider.SuntekMessageData#MSG_TYPE_FILE}<br/>{@link com.suntek.mway.rcs.client.api.provider.SuntekMessageData#MSG_TYPE_LOCATION}<br/>{@link com.suntek.mway.rcs.client.api.provider.SuntekMessageData#MSG_TYPE_CONTACT}<br/>{@link com.suntek.mway.rcs.client.api.provider.SuntekMessageData#MSG_TYPE_GROUP_INFO}</td>
+ * </tr>
+ * <tr>
+ * <td>contact</td><td>String</td><td>phone number</td>
+ * </tr>
+ * <tr>
+ * <td>message</td><td>String</td><td>message content</td>
+ * </tr>
+ * </table>
+ */
+ public final static String ACTION_INCOMING_GROUP_MESSAGE = "com.suntek.mway.rcs.message.ACTION_INCOMING_GROUP_MESSAGE";
+
+ /**
+ * the broadcast message of the capability of contacts changed.
+ * The android.content.Intent associated with
+ * the broadcast message carries one argument
+ * that is described as the following table:
+ * <table border="1">
+ * <tr>
+ * <td>contact</td><td>String</td><td>phone number</td>
+ * </tr>
+ * </table>
+ */
+ public final static String ACTION_CAPABILITY_STATUS_CHANGED = "com.suntek.mway.rcs.message.ACTION_CAPABILITY_STATUS_CHANGED";
+
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/ClientInterfaceListener.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/ClientInterfaceListener.java
new file mode 100644
index 0000000..23e76bf
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/ClientInterfaceListener.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright (c) 2014 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.api;
+
+/**
+ * <p>Title: ClientInterfaceListener interface</p>
+ * <p>
+ * Description: The interface <code>ClientInterfaceListener</code> defines two callback methods
+ * about connect/disconnect between local and service.
+ * </p>
+ * <p>
+ * Copyright: Copyright (c) 2014
+ * </p>
+ * <p>
+ * Company: pci-suntek
+ * </p>
+ * @author YE JIE MING
+ * @version 1.0
+ *
+ */
+public interface ClientInterfaceListener {
+ /**
+ * to be invoked when local is connected to the service.
+ */
+ public void handleInterfaceConnected();
+
+ /**
+ * to be invoked when local is disconnected from the service
+ */
+ public void handleInterfaceDisconnected();
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/ClientInterfaceNotify.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/ClientInterfaceNotify.java
new file mode 100644
index 0000000..e477b2e
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/ClientInterfaceNotify.java
@@ -0,0 +1,91 @@
+/*
+ * Copyright (c) 2014 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.api;
+
+/**
+ * <p>Title: ClientInterfaceNotify class</p>
+ * <p>
+ * Description: The class <code>ClientInterfaceNotify</code> is a singleton that
+ * represents the notification when local is connecting to the service.
+ * </p>
+ * <p>
+ * Copyright: Copyright (c) 2014
+ * </p>
+ * <p>
+ * Company: pci-suntek
+ * </p>
+ * @author YE JIE MING
+ * @version 1.0
+ *
+ */
+public class ClientInterfaceNotify {
+ /**
+ * the singleton instance.
+ */
+ private static ClientInterfaceNotify instance;
+
+ /**
+ * the only one static method to be invoked to get a singleton instance.
+ * @return singleton instance of ClientInterfaceNotify
+ */
+ public static ClientInterfaceNotify getInstance() {
+ if(instance == null) {
+ synchronized(ClientInterfaceNotify.class){
+ if(instance == null){
+ instance = new ClientInterfaceNotify();
+ }
+ }
+ }
+ return instance;
+ }
+
+ /**
+ * private constructor to avoid new a instance from outer environment.
+ */
+ private ClientInterfaceNotify() {}
+
+ /**
+ * This is a blocking method.
+ * When invoked, the caller will be blocked until the local is connected to the service.
+ */
+ public void waitConnected() {
+ try {
+ synchronized(this) {
+ wait();
+ }
+ } catch(java.lang.InterruptedException e) {
+
+ }
+ }
+
+ /**
+ * when invoked, wakes up the caller which invoked the method <code>waitConnected()</code> before.
+ */
+ public void notifyConnected() {
+ synchronized(this) {
+ notifyAll();
+ }
+ }
+
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/CoreServiceNotAvailableException.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/CoreServiceNotAvailableException.java
new file mode 100644
index 0000000..d700afc
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/CoreServiceNotAvailableException.java
@@ -0,0 +1,56 @@
+/*
+ * Copyright (c) 2014 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.api;
+
+/**
+ * <p>Title: CoreServiceNotAvailableException base class</p>
+ * <p>
+ * Description: The class <code>CoreServiceNotAvailableException</code> and its subclasses are a form of
+ * {@link ClientInterfaceException} that indicates conditions that a reasonable application
+ * might want to catch.
+ * </p>
+ * <p>
+ * Copyright: Copyright (c) 2014
+ * </p>
+ * <p>
+ * Company: pci-suntek
+ * </p>
+ * @author YE JIE MING
+ * @version 1.0
+ *
+ */
+public class CoreServiceNotAvailableException extends ClientInterfaceException {
+ private static final long serialVersionUID = 8574566864861749638L;
+ /**
+ * Constant of CORE_SERVICE_NOT_AVAILABLE whose value is Core service not available;
+ */
+ private static final String CORE_SERVICE_NOT_AVAILABLE = "Core service not available";
+ /**
+ * Constructs a new exception with the pre-defined constant message {@code CORE_SERVICE_NOT_AVAILABLE} .
+ * @param message the detail message.
+ */
+ public CoreServiceNotAvailableException() {
+ super(CORE_SERVICE_NOT_AVAILABLE);
+ }
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/IRCSServiceListener.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/IRCSServiceListener.aidl
new file mode 100644
index 0000000..b104d54
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/IRCSServiceListener.aidl
@@ -0,0 +1,30 @@
+/*
+ * Copyright (c) 2014 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.api;
+
+interface IRCSServiceListener
+{
+ void onServiceConnected();
+ void onServiceDisconnected();
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/RCSApplication.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/RCSApplication.java
new file mode 100644
index 0000000..582150b
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/RCSApplication.java
@@ -0,0 +1,109 @@
+/*
+ * Copyright (c) 2014 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.api;
+
+import android.app.Application;
+import android.content.Context;
+
+/**
+ * <p>Title: RCSApplication class</p>
+ * <p>
+ * Description: The class <code>RCSApplication</code>
+ * is the root of the class hierarchy in UI project. The UI application
+ * must extends <code>com.suntek.mway.rcs.api.client.RCSApplication</code>
+ * and override the method onCreate() to initialize various APIs
+ * (
+ * such as {@link com.suntek.mway.rcs.client.api.capability.CapabilityApi},
+ * {@link com.suntek.mway.rcs.client.api.contacts.ContactApi},
+ * {@link com.suntek.mway.rcs.client.api.im.MessageApi},
+ * {@link com.suntek.mway.rcs.client.api.log.LogAPI},
+ * {@link com.suntek.mway.rcs.client.api.registration.RegistrationApi},
+ * {@link com.suntek.mway.rcs.client.api.setting.SettingApi},
+ * {@link com.suntek.mway.rcs.client.api.voip.VoIpApi}
+ * )
+ * provided by RCS
+ * according to business needs.
+ * </p>
+ * <p>
+ * Copyright: Copyright (c) 2014
+ * </p>
+ * <p>
+ * Company: pci-suntek
+ * </p>
+ * @author YE JIE MING
+ * @version 1.0
+ *
+ */
+public class RCSApplication extends Application {
+
+ /**
+ * instance of RCSApplication.
+ */
+ private static RCSApplication rcsApp;
+
+ /**
+ * handler of android.content.Context.
+ */
+ private static Context ctx;
+
+ /**
+ * construct a new instance of RCSApplication
+ */
+ public RCSApplication() {
+ RCSApplication.rcsApp = this;
+ }
+
+ /**
+ * init context with the specified subclass of android.content.Context
+ * here is the instance of RCSApplication.
+ * @param context subclass of android.content.Context, here is the instance of RCSApplication.
+ */
+ public static void initContext(Context context) {
+ ctx = context;
+ }
+
+ /**
+ * returns subclass of android.content.Context, here is the instance of RCSApplication
+ * @return the instance of RCSApplication
+ */
+ public static Context getContext() {
+ if(ctx == null) {
+ ctx = RCSApplication.rcsApp;
+ }
+ return ctx;
+ }
+
+ /**
+ * override the method to initialize various API provided by RCS
+ * according to business needs.
+ */
+ @Override
+ public void onCreate() {
+ super.onCreate();
+ initContext(this);
+ ServiceInterface.init(this);
+ }
+
+
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/ServiceInterface.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/ServiceInterface.java
new file mode 100644
index 0000000..04c5e0d
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/ServiceInterface.java
@@ -0,0 +1,61 @@
+/*
+ * Copyright (c) 2014 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.api;
+
+import android.content.Context;
+import android.content.Intent;
+
+/**
+ * <p>Title: ServiceInterface class</p>
+ * <p>
+ * Description: The class <code>ServiceInterface</code> is used to initialize the service context
+ * for future use.
+ * </p>
+ * <p>
+ * Copyright: Copyright (c) 2014
+ * </p>
+ * <p>
+ * Company: pci-suntek
+ * </p>
+ * @author YE JIE MING
+ * @version 1.0
+ *
+ */
+public class ServiceInterface {
+
+ /**
+ * Constant of the key related to the specific service.
+ */
+ public static final String SERVICE_NAME = "com.suntek.mway.rcs.SERVICE";
+
+ /**
+ * initialize the service context. when invoke the method
+ * a service associated with the constant key <code>SERVICE_NAME</code>
+ * will be initialize and started by the specified parameter ctx.
+ * @param ctx android.content.Context
+ */
+ public static void init(Context ctx) {
+ ctx.startService(new Intent(SERVICE_NAME));
+ }
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/ServiceUnknownException.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/ServiceUnknownException.java
new file mode 100644
index 0000000..2a3f46d
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/ServiceUnknownException.java
@@ -0,0 +1,74 @@
+/*
+ * Copyright (c) 2014 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.api;
+
+import android.os.RemoteException;
+
+/**
+ * <p>Title: ServiceUnknownException base class</p>
+ * <p>
+ * Description: The class <code>ServiceUnknownException</code> and its subclasses are a form of
+ * <code>ServiceUnknownException</code> that indicates unregister status when trying to invoke some
+ * methods of the APIs
+ * such as {@link com.suntek.mway.rcs.client.api.capability.CapabilityApi},
+ * {@link com.suntek.mway.rcs.client.api.contacts.ContactApi},
+ * {@link com.suntek.mway.rcs.client.api.im.MessageApi},
+ * {@link com.suntek.mway.rcs.client.api.log.LogAPI},
+ * {@link com.suntek.mway.rcs.client.api.setting.SettingApi},
+ * {@link com.suntek.mway.rcs.client.api.voip.VoIpApi}
+ * provided by RCS without invoke register() method
+ * of {@link com.suntek.mway.rcs.client.api.registration.RegistrationApi}.
+ * </p>
+ * <p>
+ * Copyright: Copyright (c) 2014
+ * </p>
+ * <p>
+ * Company: pci-suntek
+ * </p>
+ * @author YE JIE MING
+ * @version 1.0
+ *
+ */
+public class ServiceUnknownException extends RemoteException {
+ static final long serialVersionUID = 10000L;
+
+ /**
+ * Constructs a new exception with the specified detail exception.
+ *
+ * @param ex Exception
+ */
+ public ServiceUnknownException(Exception ex) {
+ setStackTrace(ex.getStackTrace());
+ }
+
+ /**
+ * Constructs a new exception with the specified detail message.
+ *
+ * @param error Error message
+ */
+ public ServiceUnknownException(String message) {
+ Exception ex = new Exception(message);
+ this.setStackTrace(ex.getStackTrace());
+ }
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/autoconfig/IAutoConfigApi.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/autoconfig/IAutoConfigApi.aidl
new file mode 100644
index 0000000..9c4f756
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/autoconfig/IAutoConfigApi.aidl
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2014 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.api.autoconfig;
+
+/**
+ * AutoConfig API
+ */
+interface IAutoConfigApi {
+
+ // User accept rcs auto registration provisions and press accept button to continue
+ void acceptAutoReg();
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/blacklist/IBlackListApi.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/blacklist/IBlackListApi.aidl
new file mode 100644
index 0000000..26d57eb
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/blacklist/IBlackListApi.aidl
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2014 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.api.blacklist;
+
+interface IBlackListApi
+{
+ boolean add(String number);
+ boolean remove(String number);
+ void clear();
+ boolean checkIsBlack(String number);
+ List<String> getList();
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/capability/ICapabilityApi.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/capability/ICapabilityApi.aidl
new file mode 100644
index 0000000..2a2ea0b
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/capability/ICapabilityApi.aidl
@@ -0,0 +1,31 @@
+/*
+ * Copyright (c) 2014 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.api.capability;
+
+import com.suntek.mway.rcs.client.api.plugin.callback.ICapabiltyListener;
+
+interface ICapabilityApi
+{
+ void findCapabilityByNumber(String number, ICapabiltyListener listener);
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/capability/IRcsCapabilityApi.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/capability/IRcsCapabilityApi.aidl
new file mode 100644
index 0000000..084828a
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/capability/IRcsCapabilityApi.aidl
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2014 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.api.capability;
+
+import com.suntek.mway.rcs.client.api.capability.RCSCapabilities;
+
+/**
+ * Rcs Capability API
+ */
+interface IRcsCapabilityApi {
+ // reset capabilities for a contact
+ void resetCapabilities(in String contact);
+
+ // reset capabilities for all contacts
+ void resetAllCapabilities();
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/capability/RCSCapabilities.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/capability/RCSCapabilities.aidl
new file mode 100644
index 0000000..cdded0a
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/capability/RCSCapabilities.aidl
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2014 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.api.capability;
+
+parcelable RCSCapabilities;
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/capability/RCSCapabilities.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/capability/RCSCapabilities.java
new file mode 100644
index 0000000..515afc9
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/capability/RCSCapabilities.java
@@ -0,0 +1,739 @@
+/*
+ * Copyright (c) 2014 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.api.capability;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+
+import com.suntek.mway.rcs.client.api.constant.APIConstant;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+/**
+ * <p>Title: RCSCapabilities class</p>
+ * <p>
+ * Description: The class <code>RCSCapabilities</code> represents a series of
+ * capabilities of the contact, which is indicated by the field definition in this class.
+ * </p>
+ * <p>
+ * Copyright: Copyright (c) 2014
+ * </p>
+ * <p>
+ * Company: pci-suntek
+ * </p>
+ * @author YE JIE MING
+ * @version 1.0
+ *
+ */
+public class RCSCapabilities implements Parcelable,Serializable {
+ /**
+ *
+ */
+ private static final long serialVersionUID = 5516256269504150135L;
+
+ /**
+ * Image sharing support,
+ * "urn%3Aurn-7%3A3gpp-application.ims.iari.gsma-is"
+ */
+ //private boolean imageSharingSupported = false;
+
+ /**
+ * Video sharing support
+ * +g.3gpp.cs-voice
+ */
+ //private boolean videoSharingSupported = false;
+
+ /**
+ * IP voice call support
+ * "urn%3Aurn-7%3A3gpp-service.ims.icsi.mmtel"
+ */
+ //private boolean ipVoiceCallSupported = false;
+
+ /**
+ * IP video call support
+ * "urn%3Aurn-7%3A3gpp-service.ims.icsi.mmtel";video
+ */
+ //private boolean ipVideoCallSupported = false;
+
+ /**
+ * IM session support
+ * "urn%3Aurn-7%3A3gpp-service.ims.icsi.oma.cpm.session"
+ */
+ private boolean imSessionSupported = false;
+
+ /**
+ * File transfer support
+ * "urn%3Aurn-7%3A3gpp-application.ims.iari.rcse.ft"
+ * "urn%3Aurn-7%3A3gppservice.ims.icsi.oma.cpm.filetransfer"
+ */
+ private boolean fileTransferSupported = false;
+
+ /**
+ * CS video support
+ * +g.3gpp.cs-voice
+ */
+ //private boolean csVideoSupported = false;
+
+ /**
+ * Presence discovery support
+ * "urn%3Aurn-7%3A3gpp-application.ims.iari.rcse.dp"
+ */
+ //private boolean presenceDiscoverySupported = false;
+
+ /**
+ * Social presence support
+ * "urn%3Aurn-7%3A3gpp-application.ims.iari.rcse.sp"
+ */
+ //private boolean socialPresenceSupported = false;
+
+ /**
+ * File transfer over HTTP support
+ * "urn%3Aurn-7%3A3gpp-application.ims.iari.rcs.fthttp"
+ */
+ //private boolean fileTransferHttpSupported = false;
+
+ /**
+ * Geolocation push support
+ * "urn%3Aurn-7%3A3gpp-application.ims.iari.rcs.geopush"
+ */
+ private boolean geolocationPushSupported = false;
+
+ /**
+ * Geolocation pull support
+ * "urn%3Aurn-7%3A3gpp-application.ims.iari.rcs.geopullft"
+ */
+ private boolean geolocationPullSupported = false;
+
+ /**
+ * File Transfer Thumbnail support
+ * "urn%3Aurn-7%3A3gpp-application.ims.iari.rcs.ftthumb"
+ */
+ private boolean fileTransferThumbnailSupported = false;
+
+ /**
+ * File Transfer S&F
+ * "urn%3Aurn-7%3A3gpp-application.ims.iari.rcs.ftstandfw"
+ */
+ private boolean fileTransferStoreForwardSupported = false;
+
+ /**
+ * Group chat S&F
+ * "urn%3Aurn-7%3A3gpp-application.ims.iari.rcs.fullsfgroupchat"
+ */
+ private boolean groupChatStoreForwardSupported = false;
+
+ /**
+ * SIP automata (@see RFC 3840)
+ * +g.oma.sip-im
+ */
+ //
+
+ /**
+ * page mode message
+ */
+ private boolean pageModeMsgSupported = false;
+
+ /**
+ * large mode message
+ */
+ private boolean largeModeMsgSupported = false;
+
+ /**
+ * public message
+ */
+ private boolean publicMsgSupported = false;
+
+ /**
+ * vemotion
+ */
+ private boolean vemotionSupported = false;
+
+ /**
+ * cmcc
+ */
+ private boolean cmccSupported = false;
+
+ private boolean burnAfterReading = false;
+
+ /**
+ * Last capabilities update
+ */
+ private long timestamp = System.currentTimeMillis();
+
+ /**
+ * Constructor
+ */
+ public RCSCapabilities() {
+ }
+
+ /**
+ * Construct a new RCSCapabilities() with another specified instance of RCSCapabilities.
+ *
+ * @param source another instance of RCSCapabilities.
+ */
+ public RCSCapabilities(Parcel source) {
+ //this.imageSharingSupported = source.readInt() != 0;
+ //this.videoSharingSupported = source.readInt() != 0;
+ //this.ipVoiceCallSupported = source.readInt() != 0;
+ //this.ipVideoCallSupported = source.readInt() != 0;
+ this.imSessionSupported = source.readInt() != 0;
+ this.fileTransferSupported = source.readInt() != 0;
+ //this.csVideoSupported = source.readInt() != 0;
+ //this.presenceDiscoverySupported = source.readInt() != 0;
+ //this.socialPresenceSupported = source.readInt() != 0;
+ //this.fileTransferHttpSupported = source.readInt() != 0;
+ this.geolocationPushSupported = source.readInt() != 0;
+ this.geolocationPullSupported = source.readInt() != 0;
+ this.fileTransferThumbnailSupported = source.readInt() != 0;
+ this.fileTransferStoreForwardSupported = source.readInt() != 0;
+ this.groupChatStoreForwardSupported = source.readInt() != 0;
+ this.pageModeMsgSupported = source.readInt() != 0;
+ this.largeModeMsgSupported = source.readInt() != 0;
+ this.publicMsgSupported = source.readInt() != 0;
+ this.vemotionSupported = source.readInt() != 0;
+ this.cmccSupported = source.readInt() != 0;
+ this.burnAfterReading = source.readInt() != 0;
+ //this.sipAutomata = source.readInt() != 0;
+ this.timestamp = source.readLong();
+ }
+
+ /**
+ * Describe the kinds of special objects contained in this Parcelable's
+ * marshalled representation
+ *
+ * @return Integer
+ */
+ public int describeContents() {
+ return APIConstant.PARCEL_OBJECT_TYPE;
+ }
+
+ /**
+ * Write parcelable object
+ *
+ * @param dest The Parcel in which the object should be written
+ * @param flags Additional flags about how the object should be written
+ */
+ public void writeToParcel(Parcel dest, int flags) {
+ //dest.writeInt(imageSharingSupported ? 1 : 0);
+ //dest.writeInt(videoSharingSupported ? 1 : 0);
+ //dest.writeInt(ipVoiceCallSupported ? 1 : 0);
+ //dest.writeInt(ipVideoCallSupported ? 1 : 0);
+ dest.writeInt(imSessionSupported ? 1 : 0);
+ dest.writeInt(fileTransferSupported ? 1 : 0);
+ //dest.writeInt(csVideoSupported ? 1 : 0);
+ //dest.writeInt(presenceDiscoverySupported ? 1 : 0);
+ //dest.writeInt(socialPresenceSupported ? 1 : 0);
+ //dest.writeInt(fileTransferHttpSupported ? 1 : 0);
+ dest.writeInt(geolocationPushSupported ? 1 : 0);
+ dest.writeInt(geolocationPullSupported ? 1 : 0);
+ dest.writeInt(fileTransferThumbnailSupported ? 1 : 0);
+ dest.writeInt(fileTransferStoreForwardSupported ? 1 : 0);
+ dest.writeInt(groupChatStoreForwardSupported ? 1 : 0);
+ dest.writeInt(pageModeMsgSupported ? 1 : 0);
+ dest.writeInt(largeModeMsgSupported ? 1 : 0);
+ dest.writeInt(publicMsgSupported ? 1 : 0);
+ dest.writeInt(vemotionSupported ? 1 : 0);
+ dest.writeInt(cmccSupported ? 1 : 0);
+ dest.writeInt(burnAfterReading ? 1 : 0);
+ //dest.writeInt(sipAutomata ? 1 : 0);
+ dest.writeLong(timestamp);
+ }
+
+ /**
+ * a fast way to get a Parcelable creator.
+ */
+ public static final Parcelable.Creator<RCSCapabilities> CREATOR
+ = new Parcelable.Creator<RCSCapabilities>() {
+ public RCSCapabilities createFromParcel(Parcel source) {
+ return new RCSCapabilities(source);
+ }
+
+ public RCSCapabilities[] newArray(int size) {
+ return new RCSCapabilities[size];
+ }
+ };
+
+ /**
+ * Is image sharing supported
+ *
+ * @return Boolean
+ */
+ /*
+ public boolean isImageSharingSupported() {
+ return imageSharingSupported;
+ }
+ */
+ /**
+ * Set the image sharing support
+ *
+ * @param supported Supported
+ */
+ /*
+ public void setImageSharingSupported(boolean supported) {
+ this.imageSharingSupported = supported;
+ }
+ */
+ /**
+ * Is video sharing supported
+ *
+ * @return Boolean
+ */
+ /*
+ public boolean isVideoSharingSupported() {
+ return videoSharingSupported;
+ }
+ */
+ /**
+ * Set the video sharing support
+ *
+ * @param supported Supported
+ */
+ /*
+ public void setVideoSharingSupported(boolean supported) {
+ this.videoSharingSupported = supported;
+ }
+ */
+
+ /**
+ * Is IP voice call supported
+ *
+ * @return Boolean
+ */
+ /*
+ public boolean isIpVoiceCallSupported() {
+ return ipVoiceCallSupported;
+ }
+ */
+ /**
+ * Is IP video call supported
+ *
+ * @return Boolean
+ */
+ /*
+ public boolean isIpVideoCallSupported() {
+ return ipVideoCallSupported;
+ }
+ */
+ /**
+ * Set the IP voice call support
+ *
+ * @param supported Supported
+ */
+ /*
+ public void setIpVoiceCallSupported(boolean supported) {
+ this.ipVoiceCallSupported = supported;
+ }
+ */
+ /**
+ * Set the IP video call support
+ *
+ * @param supported Supported
+ */
+ /*
+ public void setIpVideoCallSupported(boolean supported) {
+ this.ipVideoCallSupported = supported;
+ }
+ */
+ /**
+ * Is IM session supported
+ *
+ * @return Boolean
+ */
+ public boolean isImSessionSupported() {
+ return imSessionSupported;
+ }
+
+ /**
+ * Set the IM session support
+ *
+ * @param supported Supported
+ */
+ public void setImSessionSupported(boolean supported) {
+ this.imSessionSupported = supported;
+ }
+
+ /**
+ * Is file transfer supported
+ *
+ * @return Boolean
+ */
+ public boolean isFileTransferSupported() {
+ return fileTransferSupported;
+ }
+
+ /**
+ * Set the file transfer support
+ *
+ * @param supported Supported
+ */
+ public void setFileTransferSupported(boolean supported) {
+ this.fileTransferSupported = supported;
+ }
+
+ /**
+ * Is CS video supported
+ *
+ * @return Boolean
+ */
+ /*
+ public boolean isCsVideoSupported() {
+ return csVideoSupported;
+ }
+ */
+ /**
+ * Set the CS video support
+ *
+ * @param supported Supported
+ */
+ /*
+ public void setCsVideoSupported(boolean supported) {
+ this.csVideoSupported = supported;
+ }
+ */
+ /**
+ * Is presence discovery supported
+ *
+ * @return Boolean
+ */
+ /*
+ public boolean isPresenceDiscoverySupported() {
+ return presenceDiscoverySupported;
+ }
+ */
+
+ /**
+ * Set the presence discovery support
+ *
+ * @param supported Supported
+ */
+ /*
+ public void setPresenceDiscoverySupported(boolean supported) {
+ this.presenceDiscoverySupported = supported;
+ }
+ */
+
+ /**
+ * Is social presence supported
+ *
+ * @return Boolean
+ */
+ /*
+ public boolean isSocialPresenceSupported() {
+ return socialPresenceSupported;
+ }
+ */
+
+ /**
+ * Set the social presence support
+ *
+ * @param supported Supported
+ */
+ /*
+ public void setSocialPresenceSupported(boolean supported) {
+ this.socialPresenceSupported = supported;
+ }
+ */
+
+ /**
+ * Is file transfer over HTTP supported
+ *
+ * @return Boolean
+ */
+ /*
+ public boolean isFileTransferHttpSupported() {
+ return fileTransferHttpSupported;
+ }
+ */
+ /**
+ * Set the file transfer over HTTP support
+ *
+ * @param supported Supported
+ */
+ /*
+ public void setFileTransferHttpSupported(boolean supported) {
+ this.fileTransferHttpSupported = supported;
+ }
+ */
+ /**
+ * Is Geolocation Push supported
+ *
+ * @return Boolean
+ */
+ public boolean isGeolocationPushSupported() {
+ return geolocationPushSupported;
+ }
+
+ /**
+ * Set the Geolocation Pull support
+ *
+ * @param supported Supported
+ */
+ public void setGeolocationPullSupported(boolean supported) {
+ this.geolocationPullSupported = supported;
+ }
+
+ /**
+ * Is Geolocation Pull supported
+ *
+ * @return Boolean
+ */
+ public boolean isGeolocationPullSupported() {
+ return geolocationPullSupported;
+ }
+
+ /**
+ * Set the Geolocation Push support
+ *
+ * @param supported Supported
+ */
+ public void setGeolocationPushSupported(boolean supported) {
+ this.geolocationPushSupported = supported;
+ }
+
+ /**
+ * Is file transfer thumbnail supported
+ *
+ * @return Boolean
+ */
+ public boolean isFileTransferThumbnailSupported() {
+ return fileTransferThumbnailSupported;
+ }
+
+ /**
+ * Set the file transfer thumbnail support
+ *
+ * @param supported Supported
+ */
+ public void setFileTransferThumbnailSupported(boolean supported) {
+ this.fileTransferThumbnailSupported = supported;
+ }
+
+ /**
+ * Is file transfer S&F supported
+ *
+ * @return Boolean
+ */
+
+ public boolean isFileTransferStoreForwardSupported() {
+ return fileTransferStoreForwardSupported;
+ }
+
+ /**
+ * Set the file transfer S&F support
+ *
+ * @param supported Supported
+ */
+
+ public void setFileTransferStoreForwardSupported(boolean supported) {
+ this.fileTransferStoreForwardSupported = supported;
+ }
+
+ /**
+ * Is group chat S&F supported
+ *
+ * @return Boolean
+ */
+ public boolean isGroupChatStoreForwardSupported() {
+ return groupChatStoreForwardSupported;
+ }
+
+ /**
+ * Set the group chat S&F support
+ *
+ * @param supported Supported
+ */
+ public void setGroupChatStoreForwardSupported(boolean supported) {
+ this.groupChatStoreForwardSupported = supported;
+ }
+
+ /**
+ * Is device an automata ?
+ * @return True if automata
+ */
+ /*
+ public boolean isSipAutomata() {
+ return sipAutomata;
+ }
+ */
+
+ /**
+ * Set the SIP automata feature tag
+ * @param sipAutomata
+ */
+ /*
+ public void setSipAutomata(boolean sipAutomata) {
+ this.sipAutomata = sipAutomata;
+ }
+ */
+
+ /**
+ * page mode message or not
+ * @return
+ */
+ public boolean isPageModeMsgSupported() {
+ return pageModeMsgSupported;
+ }
+
+ /**
+ * Set page mode message
+ * @param pageModeMsg
+ */
+ public void setPageModeMsgSupported(boolean pageModeMsg) {
+ this.pageModeMsgSupported = pageModeMsg;
+ }
+
+ /**
+ * large mode message or not
+ * @return
+ */
+ public boolean isLargeModeMsgSupported() {
+ return largeModeMsgSupported;
+ }
+
+ /**
+ * set large mode message
+ * @param largeModeMsg
+ */
+ public void setLargeModeMsgSupported(boolean largeModeMsg) {
+ this.largeModeMsgSupported = largeModeMsg;
+ }
+
+ /**
+ * public message or not
+ * @return
+ */
+ public boolean isPublicMsgSupported() {
+ return publicMsgSupported;
+ }
+
+ /**
+ * set public message
+ * @param publicMsg
+ */
+ public void setPublicMsgSupported(boolean publicMsg) {
+ this.publicMsgSupported = publicMsg;
+ }
+
+ /**
+ * ve motion or not
+ * @return
+ */
+ public boolean isVemotionSupported() {
+ return vemotionSupported;
+ }
+
+ /**
+ * set ve motion
+ * @param vemotion
+ */
+ public void setVemotionSupported(boolean vemotion) {
+ this.vemotionSupported = vemotion;
+ }
+
+ /**
+ * group management(modify group name, kick people, transfer the group) nor not
+ * @return
+ */
+ public boolean isCmccSupported() {
+ return cmccSupported;
+ }
+
+ /**
+ * set group management
+ * @param cmcc
+ */
+ public void setCmccSupported(boolean cmcc) {
+ this.cmccSupported = cmcc;
+ }
+
+ /**
+ * Checks is burn after reading
+ * @return
+ */
+ public boolean isBurnAfterReading() {
+ return burnAfterReading;
+ }
+
+ /**
+ * Set burn after reading
+ * @param burnAfterReading
+ */
+ public void setBurnAfterReading(boolean burnAfterReading) {
+ this.burnAfterReading = burnAfterReading;
+ }
+
+ /**
+ * Get the capabilities timestamp
+ *
+ * @return Timestamp (in milliseconds)
+ */
+ public long getTimestamp() {
+ return timestamp;
+ }
+
+ /**
+ * Set capabilities timestamp
+ *
+ * @param Timestamp
+ */
+ public void setTimestamp(long timestamp) {
+ this.timestamp = timestamp;
+ }
+
+ /**
+ * Returns a string representation of the object
+ *
+ * @return String
+ */
+ public String toString() {
+
+ return
+
+ //", Video_share=" + videoSharingSupported +
+ //", IP_voice_call=" + ipVoiceCallSupported +
+ //", IP_video_call=" + ipVideoCallSupported +
+ "File_transfer=" + fileTransferSupported +
+ //", Image_share=" + imageSharingSupported +
+ ", File_transferStoreForward=" + fileTransferStoreForwardSupported +
+
+ ", Chat=" + imSessionSupported +
+ //", CS_video=" + csVideoSupported +
+ //", Presence_discovery=" + presenceDiscoverySupported +
+ //", Social_presence=" + socialPresenceSupported +
+ //", FT_http=" + fileTransferHttpSupported +
+ ", groupChatStoreForward=" + groupChatStoreForwardSupported +
+ ", Geolocation_push=" + geolocationPushSupported +
+ ", Geolocation_pull=" + geolocationPullSupported +
+ ", FT_thumbnail=" + fileTransferThumbnailSupported +
+ ", pageModeMsg=" + pageModeMsgSupported +
+ ", largeModeMsg=" + largeModeMsgSupported +
+ ", publicMsg=" + publicMsgSupported +
+ ", vemotion=" + vemotionSupported +
+ ", cmcc=" + cmccSupported +
+ ", burnAfterReading=" + burnAfterReading +
+ //", SipAutomata=" + sipAutomata +
+ ", Timestamp=" + timestamp;
+ }
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/constant/APIConstant.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/constant/APIConstant.java
new file mode 100644
index 0000000..8e16757
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/constant/APIConstant.java
@@ -0,0 +1,100 @@
+/*
+ * Copyright (c) 2014 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.api.constant;
+
+/**
+ * <p>Title: APIConstant class</p>
+ * <p>
+ * Description: The class <code>APIConstant</code> represents a series of
+ * constants of SDK API, which is indicated by the field definition in this class.
+ * </p>
+ * <p>
+ * Copyright: Copyright (c) 2014
+ * </p>
+ * <p>
+ * Company: pci-suntek
+ * </p>
+ * @author YE JIE MING
+ * @version 1.0
+ *
+ */
+public abstract class APIConstant {
+ /**
+ * The kind of special object contained in this Parcelable's
+ * marshalled representation
+ */
+ public static final int PARCEL_OBJECT_TYPE = 0;
+
+ /**
+ * Class name for CoreService.
+ */
+ public static final String CORE_SERVICE_CLASSNAME = "com.suntek.mway.rcs.app.service.core.CoreService";
+ public static final String MAIN_SERVICE_NAME = "com.suntek.mway.rcs.app.service.service.ServiceManager";
+ /** The Constant IM_STATUS_OFFLINE. */
+ public static final int IM_STATUS_OFFLINE = 0;
+
+ /** The Constant IM_STATUS_ONLINE. */
+ public static final int IM_STATUS_ONLINE = 1;
+
+ public static final int BUTTON_HIDDEN = 0;
+
+ public static final int BUTTON_DISPLAY = 1;
+
+
+ /** The Constant LOGIN_SUCCESS. */
+ public static final int LOGIN_SUCCESS = 0;
+
+ /** The Constant LOGIN_FAIL. */
+ public static final int LOGIN_FAIL = 1;
+
+ /** The Constant SIM_CARD_NOT_EXIST. */
+ public static final int SIM_CARD_NOT_EXIST = 2;
+
+ /** The Constant NETWORK_NOT_AVAILABLE. */
+ public static final int NETWORK_NOT_AVAILABLE = 3;
+
+ /** current account has not open RCS business **/
+ public static final int ACCOUNT_NOT_OPEN_BUSS_ERR_CODE = -999;
+ /** current network is not PS network, must change to PS network. **/
+ public static final int MUST_OPEN_PS_ERR_CODE = -998;
+ /** current account's status is invalid.**/
+ public static final int ACCOUNT_STATUS_INVALID_ERR_CODE = -997;
+
+ /** Send message auto select system sms or im */
+ public static final int MSG_SEND_POLICY_AUTO = 1;
+
+ /** Send message auto select system sms */
+ public static final int MSG_SEND_POLICY_SMS = 2;
+
+ /** Send message auto select im */
+ public static final int MSG_SEND_POLICY_IM = 3;
+
+ /** Remind me when message sent by SMS */
+ public static final int SMS_SEND_REMIND = 1;
+
+ /** Not need remind me when message sent by SMS */
+ public static final int SMS_SEND_NOT_REMIND = 0;
+
+
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/constant/BroadcastConstants.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/constant/BroadcastConstants.java
new file mode 100644
index 0000000..472cca8
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/constant/BroadcastConstants.java
@@ -0,0 +1,589 @@
+/*
+ * Copyright (c) 2014 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.api.constant;
+
+/**
+ * The Class BroadcastContstants.
+ */
+public class BroadcastConstants {
+
+ /** Text send by system SMS broadcast action */
+ public static final String SYSTEM_SMS_SEND_TEXT = "com.suntek.mway.rcs.ACTION_SYSTEM_SMS_SEND";
+
+ /** SYSTEM_SMS_SEND_TEXT broadcast passed parameter name text String. */
+ public static final String BC_VAR_SMS_TEXT = "text";
+
+ /** SYSTEM_SMS_SEND_TEXT broadcast passed parameter name time Long. */
+ public static final String BC_VAR_SMS_TIME = "time";
+
+ /** Notify UI to show message notification. */
+ public static final String UI_SHOW_MESSAGE_NOTIFY = "com.suntek.mway.rcs.ACTION_UI_SHOW_MESSAGE_NOTIFY";
+
+ /** Notify UI to refresh message. */
+ public static final String UI_REFRESH_MESSAGE_LIST = "com.suntek.mway.rcs.ACTION_UI_MESSAGE_LIST_NEED_REFRESH";
+
+ /** UI_REFRESH_MESSAGE_LIST broadcast passed parameter name isBlack int. */
+ public static final String BC_VAR_MSG_BLACK_FLAG = "blackMsgFlag";
+
+ /** Notify UI to show group message notification. */
+ public static final String UI_SHOW_GROUP_MESSAGE_NOTIFY = "com.suntek.mway.rcs.ACTION_UI_SHOW_GROUP_MESSAGE_NOTIFY";
+
+ /**
+ * Notify UI that changed group information
+ */
+ public static final String UI_GROUP_MANAGE_NOTIFY = "com.suntek.mway.rcs.ACTION_UI_GROUP_MANAGE_NOTIFY";
+
+ /**
+ * Notify UI that group state is invalid
+ * contains parameter groupId, state
+ */
+ public static final String UI_GROUP_STATE_ERROR = "com.suntek.mway.rcs.ACTION_UI_GROUP_STATE_ERROR";
+
+ /** Notify UI that message status has changed */
+ public static final String UI_MESSAGE_STATUS_CHANGE_NOTIFY = "com.suntek.mway.rcs.ACTION_UI_MESSAGE_STATUS_CHANGE_NOTIFY";
+
+ /** Notify UI that message has added to database */
+ public static final String UI_MESSAGE_ADD_DATABASE = "com.suntek.mway.rcs.ACTION_UI_MESSAGE_ADD_TO_DATABASE";
+
+ /** UI_MESSAGE_ADD_DATABASE broadcast passed parameter name chatMessage long. */
+ public static final String BC_VAR_CHAT_MESSAGE = "chatMessage";
+
+ /** UI_SHOW_MESSAGE_NOTIFY broadcast passed parameter name threadId long. */
+ public static final String BC_VAR_MSG_THREAD_ID = "threadId";
+
+ /** UI_SHOW_MESSAGE_NOTIFY broadcast passed parameter name id Integer. */
+ public static final String BC_VAR_ID = "id";
+
+ /** UI_SHOW_MESSAGE_NOTIFY broadcast passed parameter name status Integer. */
+ public static final String BC_VAR_MSG_STATUS = "status";
+
+ /** UI_SHOW_MESSAGE_NOTIFY broadcast passed parameter name contact String. */
+ public static final String BC_VAR_MSG_CONTACT = "contact";
+
+ /** UI_SHOW_MESSAGE_NOTIFY broadcast passed parameter name contactName String. */
+ public static final String BC_VAR_MSG_NAME = "name";
+
+ /** UI_SHOW_MESSAGE_NOTIFY broadcast passed parameter name msgType Integer. */
+ public static final String BC_VAR_MSG_TYPE = "msgType";
+
+ /** UI_SHOW_MESSAGE_NOTIFY broadcast passed parameter name burnFlag Integer. */
+ public static final String BC_VAR_BURN_FLAG = "burnFlag";
+
+ /** UI_SHOW_MESSAGE_NOTIFY broadcast passed parameter name tickerText String. */
+ public static final String BC_VAR_MSG_TICKERTEXT = "tickerText";
+
+ /** UI_SHOW_MESSAGE_NOTIFY broadcast passed parameter name groupId String. */
+ public static final String BC_VAR_MSG_GROUP_ID = "groupId";
+
+ /**
+ * UI_SHOW_MESSAGE_NOTIFY broadcast passed parameter name actionType String.
+ *
+ * actionType contains:
+ * {@link BroadcastConstants#ACTION_TYPE_CREATE}
+ * {@link BroadcastConstants#ACTION_TYPE_CREATE_NOT_ACTIVE}
+ * {@link BroadcastConstants#ACTION_TYPE_CONNECTED}
+ * {@link BroadcastConstants#ACTION_TYPE_DEPARTED}
+ * {@link BroadcastConstants#ACTION_TYPE_BOOTED}
+ * {@link BroadcastConstants#ACTION_TYPE_DELETED}
+ * {@link BroadcastConstants#ACTION_TYPE_UPDATE_ALIAS}
+ * {@link BroadcastConstants#ACTION_TYPE_UPDATE_CHAIRMAN}
+ * {@link BroadcastConstants#ACTION_TYPE_UPDATE_REMARK}
+ * {@link BroadcastConstants#ACTION_TYPE_UPDATE_SUBJECT}
+ */
+
+ public static final String BC_VAR_MSG_ACTION_TYPE = "actionType";
+
+ /***
+ * Group created
+ */
+ public static final String ACTION_TYPE_CREATE = "create";
+
+ /**
+ * Group create but not active
+ */
+ public static final String ACTION_TYPE_CREATE_NOT_ACTIVE = "create_not_active";
+
+ /***
+ * New member to join the group
+ */
+ public static final String ACTION_TYPE_CONNECTED = "connected";
+ /**
+ * Group member quit
+ */
+ public static final String ACTION_TYPE_DEPARTED = "departed";
+ /**
+ * Member has been kicked out of the group
+ */
+ public static final String ACTION_TYPE_BOOTED = "booted";
+
+ /**
+ * Group has disband
+ */
+ public static final String ACTION_TYPE_DELETED = "deleted";
+
+ /**
+ * Update the subject of group
+ */
+ public static final String ACTION_TYPE_UPDATE_SUBJECT = "updateSubject";
+
+ /**
+ * Update the remark of group
+ */
+ public static final String ACTION_TYPE_UPDATE_REMARK = "updateRemark";
+
+ /**
+ * Update the alias of group member
+ */
+ public static final String ACTION_TYPE_UPDATE_ALIAS = "updateAlias";
+
+ /**
+ * Update the alias of group member
+ */
+ public static final String ACTION_TYPE_UPDATE_CHAIRMAN = "updateChairman";
+
+ /**
+ * Update the max count of group
+ */
+ public static final String ACTION_TYPE_UPDATE_MAXCOUNT = "updateMaxCount";
+
+ /**
+ * Over the max count of group
+ */
+ public static final String ACTION_TYPE_OVER_MAXCOUNT = "overMaxCount";
+
+ /**
+ * Update the policy of group
+ */
+ public static final String ACTION_TYPE_POLICY_UPDATE = "updatePolicy";
+
+ /** UI_SHOW_MESSAGE_NOTIFY broadcast passed parameter name phoneNumber String. */
+ public static final String BC_VAR_MSG_PHONE = "phoneNumber";
+
+ /** UI_SHOW_MESSAGE_NOTIFY broadcast passed parameter name displayName String. */
+ public static final String BC_VAR_MSG_DISPLAY_NAME = "displayName";
+
+ /** Update download progress broadcast. */
+ public static final String UPDATE_DOWN_PROGRESS = "update_download_progress";
+
+ /** UPDATE_DOWN_PROGRESS broadcast passed parameter name id String. */
+ public static final String BC_VAR_DOWN_PRG_ID = "id";
+
+ /** UPDATE_DOWN_PROGRESS broadcast passed parameter name progress integer. */
+ public static final String BC_VAR_DOWN_PRG_PROGRESS = "progress";
+
+ /** File transfer progress broadcast. */
+ public static final String FILE_TRANSFER_PROGRESS = "ui_file_transfre_progress";
+
+ /** UPDATE_DOWN_PROGRESS broadcast passed parameter name messageId String. */
+ public static final String BC_VAR_TRANSFER_PRG_MESSAGE_ID = "messageId";
+
+ /** UPDATE_DOWN_PROGRESS broadcast passed parameter name sessionId long. */
+ public static final String BC_VAR_TRANSFER_PRG_SESSION_ID = "sessionId";
+
+ /** UPDATE_DOWN_PROGRESS broadcast passed parameter name start long. */
+ public static final String BC_VAR_TRANSFER_PRG_START = "start";
+
+ /** UPDATE_DOWN_PROGRESS broadcast passed parameter name end long. */
+ public static final String BC_VAR_TRANSFER_PRG_END = "end";
+
+ /** UPDATE_DOWN_PROGRESS broadcast passed parameter name total long. */
+ public static final String BC_VAR_TRANSFER_PRG_TOTAL = "total";
+
+ /** Warning file is too large broadcast. */
+ public static final String UI_ALERT_FILE_TOO_LARGE = "com.suntek.mway.rcs.ACTION_UI_MESSAGE_ALERT_FILE_TOO_LARGE";
+
+ /** UI_ALERT_FILE_TOO_LARGE broadcast passed parameter name fileMaxSize String. */
+ public static final String BC_VAR_FILE_MAX_SIZE = "fileMaxSizeKb";
+
+ /** Warning File extension is not valid broadcast. */
+ public static final String UI_ALERT_FILE_SUFFIX_INVALID = "com.suntek.mway.rcs.ACTION_UI_MESSAGE_ALERT_FILE_SUFFIX_INVALID";
+
+ /** UI_ALERT_FILE_SUFFIX_INVALID broadcast passed parameter name validSuffix String. */
+ public static final String BC_VAR_FILE_VALID_SUFFIX = "validSuffix";
+
+ /** Invite users to join a group chat broadcast. */
+ public static final String UI_INVITE_TO_JOIN_GROUP = "com.suntek.mway.rcs.ACTION_UI_INVITE_TO_JOIN_GROUP";
+
+ /** UI_INVITE_TO_JOIN_GROUP broadcast passed parameter name groupId String. */
+ public static final String BC_VAR_GROUP_ID = "groupId";
+
+ /** UI_INVITE_TO_JOIN_GROUP broadcast passed parameter name subject String. */
+ public static final String BC_VAR_GROUP_SUBJECT = "subject";
+
+ /** UI_INVITE_TO_JOIN_GROUP broadcast passed parameter name remark String. */
+ public static final String BC_VAR_GROUP_REMARK = "remark";
+
+ /** UI_INVITE_TO_JOIN_GROUP broadcast passed parameter name inviteUser String. */
+ public static final String BC_VAR_INVITE_USER = "inviteUser";
+
+ /** UI_INVITE_TO_JOIN_GROUP broadcast passed parameter name chatUri String. */
+ public static final String BC_VAR_CHARURI = "chatUri";
+
+ /** UI_INVITE_TO_JOIN_GROUP broadcast passed parameter name conversationId String. */
+ public static final String BC_VAR_CONVERSATION_ID = "conversationId";
+
+ /** UI_INVITE_TO_JOIN_GROUP broadcast passed parameter name contributionId String. */
+ public static final String BC_VAR_CONTRIBUTION_ID = "contributionId";
+
+ /** UI_INVITE_TO_JOIN_GROUP broadcast passed parameter name inviteTime String. */
+ public static final String BC_VAR_INVITE_TIME = "inviteTime";
+
+ /** UI_INVITE_TO_JOIN_GROUP broadcast passed parameter name numberData String. */
+ public static final String BC_VAR_NUMBER_DATA = "numberData";
+
+ /** UI_INVITE_TO_JOIN_GROUP broadcast passed parameter name policy Integer. */
+ public static final String BC_VAR_POLICY = "policy";
+
+ /** UI_INVITE_TO_JOIN_GROUP broadcast passed parameter name alias String. */
+ public static final String BC_VAR_ALIAS = "alias";
+
+ /**
+ * UI_GROUP_CHAT_MAXCOUNT_CHANGE broadcast passed parameter name maxCount String.
+ */
+ public static final String BC_VAR_MAXCOUNT = "maxCount";
+
+ /**
+ * Group chat element change
+ */
+ public static final String UI_GROUP_CHAT_SUBJECT_CHANGE = "ui_groupchat_subject_change";
+
+ /** ************************************** send message error begin ******************************************************. */
+
+ /**
+ * UI send message error broadcast
+ */
+ public static final String UI_SHOW_MESSAGE_SEND_ERROR = "com.suntek.mway.rcs.ACTION_UI_SHOW_MESSAGE_SEND_ERROR";
+
+ /**
+ * Sip not registered
+ */
+ public static final String BC_VAR_SEND_ERROR_NOT_REG = "sip_not_register";
+
+ /**
+ * Group not exist
+ */
+ public static final String BC_VAR_SEND_ERROR_GROUP_NOT_EXIST = "group_not_exist";
+
+ /**
+ * Create group not complete
+ */
+ public static final String BC_VAR_SEND_ERROR_GROUP_NOT_COMPLETED = "group_not_completed";
+
+ /**
+ * Group has deleted
+ */
+ public static final String BC_VAR_SEND_ERROR_GROUP_HAS_DELETED = "group_has_deleted";
+
+ /** ************************************** send message error end ******************************************************. */
+
+ /** ************************************** send group refer error begin ******************************************************. */
+ /**
+ * UI send group refer message failed
+ */
+ public static final String UI_SHOW_GROUP_REFER_ERROR = "com.suntek.mway.rcs.ACTION_UI_SHOW_GROUP_REFER_ERROR";
+
+ /**
+ * UI_SHOW_GROUP_REFER_ERROR broadcast passed parameter name referType String.
+ */
+ public static final String BC_VAR_REFER_TYPE = "referType";
+
+ /**
+ * Send group refer type define
+ */
+ public static final String REFER_TYPE_INVITE = "invite";
+ public static final String REFER_TYPE_SUBJECT = "updateSubject";
+ public static final String REFER_TYPE_ALIAS = "setAlias";
+ public static final String REFER_TYPE_TRANSFER_CHAIRMAN = "transferChairman";
+ public static final String REFER_TYPE_KICKOUT = "kickout";
+ public static final String REFER_TYPE_QUIT = "quit";
+ public static final String REFER_TYPE_DISBAND= "disband";
+
+ /** ************************************** send group refer error end ******************************************************. */
+
+ /** ************************************** send composing broadcast begin ******************************************************. */
+ /**
+ * The broadcast of composing
+ */
+ public static final String UI_SHOW_COMPOSING_INFO = "com.suntek.mway.rcs.ACTION_UI_SHOW_COMPOSING_INFO";
+
+ /**
+ * UI_SHOW_COMPOSING_INFO broadcast passed parameter name state String.
+ */
+ public static final String BC_VAR_COMPOSE_STATE = "state";
+
+ /**
+ * UI_SHOW_COMPOSING_INFO broadcast passed parameter name contentType String.
+ */
+ public static final String BC_VAR_COMPOSE_CONTENTTYPE = "contentType";
+
+ /**
+ * UI_SHOW_COMPOSING_INFO broadcast passed parameter name refresh Integer.
+ */
+ public static final String BC_VAR_COMPOSE_REFRESH = "refresh";
+
+ /**
+ * UI_SHOW_COMPOSING_INFO broadcast passed parameter name lastActive String.
+ */
+ public static final String BC_VAR_COMPOSE_LASTACTIVE = "lastActive";
+
+ /** ************************************** send composing broadcast end ******************************************************. */
+
+ /** ************************************** send report broadcast begin ******************************************************. */
+ /**
+ * The broadcast of composing
+ */
+ public static final String UI_SHOW_RECV_REPORT_INFO = "com.suntek.mway.rcs.ACTION_UI_SHOW_RECV_REPORT_INFO";
+
+ /**
+ * UI_SHOW_RECV_REPORT_INFO broadcast passed parameter name status String.
+ */
+ public static final String BC_VAR_REPORT_STATUS = "status";
+
+ /**
+ * UI_SHOW_RECV_REPORT_INFO broadcast passed parameter recipient String.
+ */
+ public static final String BC_VAR_REPORT_RECIPIENT = "recipient";
+
+ /**
+ * UI_SHOW_RECV_REPORT_INFO broadcast passed parameter name status String.
+ */
+ public static final String BC_VAR_REPORT_ORIGINAL_RECT = "original-recipient";
+
+ /** ************************************** send report broadcast end ******************************************************. */
+
+ /** ************************************** send group transfer chairman confirm broadcast begin ******************************************************. */
+ /**
+ * The broadcast of group chairman transfer confirm
+ * parameter contains chaturi, subject, contributionId, conversationId
+ */
+ public static final String UI_SHOW_GROUP_TRANSFER_CHAIRMAN_CONFIRM = "com.suntek.mway.rcs.ACTION_UI_SHOW_GROUP_TRANSFER_CHAIRMAN_CONFIRM";
+
+ /** ************************************** send group transfer chairman confirm broadcast end ******************************************************. */
+
+ /** Invite to join a group chat timeout broadcast. */
+ public static final String UI_JOIN_GROUP_INVITE_TIMEOUT = "com.suntek.mway.rcs.ACTION_UI_JOIN_GROUP_INVITE_TIMEOUT";
+
+ /** ************************************** download file begin ******************************************************. */
+ /**
+ * broadcast of downloading file
+ */
+ public static final String UI_DOWNLOADING_FILE_CHANGE = "com.suntek.mway.rcs.UI_DOWNLOADING_FILE_CHANGE";
+
+ /**
+ * UI_DOWNLOADING_FILE_CHANGE broadcast passed parameter name primary key id Integer.
+ */
+ public static final String BC_VAR_PK_ID = "pkId";
+
+ /**
+ * UI_DOWNLOADING_FILE_CHANGE broadcast passed parameter name filepath String.
+ */
+ public static final String BC_VAR_FILEPATH = "filepath";
+
+ /**
+ * UI_DOWNLOADING_FILE_CHANGE broadcast passed parameter name total long.
+ */
+ public static final String BC_VAR_TOTAL_LEN = "total";
+
+ /**
+ * UI_DOWNLOADING_FILE_CHANGE broadcast passed parameter name current long.
+ */
+ public static final String BC_VAR_CURRENT_LEN = "current";
+
+
+ /** ************************************** download file end ******************************************************. */
+
+ /** ************************************** AV ******************************************************. */
+ /** Notify UI to Sending call */
+ public static final String UI_AV_SENDING_CALL = "ui_av_sending_call";
+
+ /** Notify UI to Handling Incoming AV Events. */
+ public static final String UI_AV_INCOMING_CALL = "com.suntek.mway.rcs.ACTION_AV_INCOMING_CALL";
+
+ /** Notify UI to Handling AV Invite Events. */
+ public static final String UI_AV_INVITE_EVENT = "ui_av_invite_event";
+
+ /** Notify UI to Handling Restore AV Events. */
+ public static final String UI_AV_RESTORE_CALL = "ui_av_restore_event";
+
+ /** Notify UI to Prompt not register. */
+ public static final String UI_AV_NOT_REGISTER = "ui_av_not_register";
+
+ /** AV broadcast passed parameter name sessionId String. */
+ public static final String BC_VAR_AV_SESSIONID = "sessionId";
+
+ /** AV broadcast passed parameter name contact String. */
+ public static final String BC_VAR_AV_CONTACT = "contact";
+
+ /** AV broadcast passed parameter name callType String. */
+ public static final String BC_VAR_AV_MEDIA_TYPE = "callType";
+
+ /** AV broadcast passed parameter name callRecordId String. */
+ public static final String BC_VAR_AV_CALLRECORDID = "callRecordId";
+
+ /** ************************************** PUBLIC ACCOUNT ******************************************************. */
+ /** Callback notification after load thumb of public account. */
+ public static final String UI_PA_LOAD_THUMB = "ui_pa_load_thumb";
+
+ /** Callback notification after load file of public account. */
+ public static final String UI_PA_LOAD_FILE = "ui_pa_load_file";
+
+ /** Public account broadcast passed parameter name messageId String. */
+ public static final String BC_VAR_PA_MESSAGEID = "messageId";
+
+ /** Public account broadcast passed parameter name eventType String. */
+ public static final String BC_VAR_PA_EVENTTYPE = "eventType";
+
+ /** The load file event type START. */
+ public static final String BC_V_PA_LOAD_FILE_EVENTTYPE_START = "start";
+
+ /** The load file event type SUCCESS. */
+ public static final String BC_V_PA_LOAD_FILE_EVENTTYPE_SUCCESS = "success";
+
+ /** The load file event type ERROR. */
+ public static final String BC_V_PA_LOAD_FILE_EVENTTYPE_ERROR = "error";
+
+ /** The load file event type END. */
+ public static final String BC_V_PA_LOAD_FILE_EVENTTYPE_END = "end";
+
+ /** The load file event type LOADING. */
+ public static final String BC_V_PA_LOAD_FILE_EVENTTYPE_ING = "loading";
+
+ /** Public account broadcast passed parameter name filePaths String. */
+ public static final String BC_VAR_PA_LOAD_THUMB_FILEPATHS = "filePaths";
+
+ /** ************************************** MCLOUD ******************************************************. */
+ /** Callback notification after put file. */
+ public static final String UI_MC_PUT_FILE = "ui_mc_put_file";
+
+ /** Callback notification after share file. */
+ public static final String UI_MC_SHARE_FILE = "ui_mc_share_file";
+
+ /** Callback notification after share and send file. */
+ public static final String UI_MC_SHARE_AND_SEND_FILE = "ui_mc_share_and_send_file";
+
+ /** Callback notification after get share file list. */
+ public static final String UI_MC_GET_SHARE_FILE_LIST = "ui_mc_get_share_file_list";
+
+ /** Callback notification after download file from url. */
+ public static final String UI_MC_DOWNLOAD_FILE_FROM_URL = "ui_mc_download_file_from_url";
+
+ /** Callback notification after get remote file list. */
+ public static final String UI_MC_GET_REMOTE_FILE_LIST = "ui_mc_get_remote_file_list";
+
+ /** Mcloud broadcast passed parameter name eventType String. */
+ public static final String BC_VAR_MC_ENENTTYPE = "eventType";
+
+ /** Mcloud broadcast passed parameter name fullPathInID String. */
+ public static final String BC_VAR_MC_FULL_FILE_ID = "fullPathInID";
+
+ /** Mcloud broadcast passed parameter name percent String. */
+ public static final String BC_VAR_MC_PERCENT = "percent";
+
+ /** Mcloud broadcast passed parameter name processSize String. */
+ public static final String BC_VAR_MC_PROCESS_SIZE = "processSize";
+
+ /** Mcloud broadcast passed parameter name totalSize String. */
+ public static final String BC_VAR_MC_TOTAL_SIZE = "totalSize";
+
+ /** Mcloud broadcast passed parameter name message String. */
+ public static final String BC_VAR_MC_MESSAGE = "message";
+
+ /** Mcloud broadcast passed parameter name localPath String. */
+ public static final String BC_VAR_MC_LOCALPATH = "localPath";
+
+ /** Mcloud broadcast passed parameter name shareNode ShareNode. */
+ public static final String BC_VAR_MC_SHARE_NODE = "shareNode";
+
+ /** Mcloud broadcast passed parameter name shareNodeList list<ShareNode>. */
+ public static final String BC_VAR_MC_SHARE_NODE_LIST = "shareNodeList";
+
+ /** Mcloud broadcast passed parameter name remoteNodeList list<FileNode>. */
+ public static final String BC_VAR_MC_REMOTE_NODE_LIST = "remoteNodeList";
+
+ /** The mcloud event type STARTED. */
+ public static final String BC_V_MC_EVENTTYPE_STARTED = "started";
+
+ /** The mcloud event type SUCCESS. */
+ public static final String BC_V_MC_EVENTTYPE_SUCCESS = "success";
+
+ /** The mcloud event type ERROR. */
+ public static final String BC_V_MC_EVENTTYPE_ERROR = "error";
+
+ /** The mcloud event type PROGRESS. */
+ public static final String BC_V_MC_EVENTTYPE_PROGRESS = "progress";
+
+ /** The mcloud event type FILE_TOO_LARGE. */
+ public static final String BC_V_MC_EVENTTYPE_FILE_TOO_LARGE = "fileToLarge";
+
+ /** The mcloud event type OTHER. */
+ public static final String BC_V_MC_EVENTTYPE_OTHER = "other";
+
+ /** The broadcast for plug-in service unavailable */
+ public static final String PLUGIN_SERVICE_UNAVAILABLE = "com.suntek.mway.rcs.action.PLUGIN_SERVICE_UNAVAILABLE";
+
+ /** The broadcast for plug-in apk uninstalled */
+ public static final String PLUGIN_APK_UNINSTALLED = "com.suntek.mway.rcs.action.PLUGIN_APK_UNINSTALLED";
+
+ /** ************************************** IMAP ******************************************************. */
+ public static final String BACKUP_ALL_MESSAGE = "com.suntek.mway.rcs.BACKUP_ALL_MESSAGE";
+
+ public static final String RESTORE_ALL_MESSAGE = "com.suntek.mway.rcs.RESTORE_ALL_MESSAGE";
+
+ public static final String RESTORE_ALL_MESSAGE_RESULT = "com.suntek.mway.rcs.RESTORE_ALL_MESSAGE_RESULT";
+
+ public static final int BACKUP_STATUS_EXCEPTION = -1;
+ public static final int BACKUP_STATUS_START = 0;
+ public static final int BACKUP_STATUS_WORKING = 1;
+ public static final int BACKUP_STATUS_FINISH = 2;
+
+ public static final int RESTORE_STATUS_EXCEPTION = -1;
+ public static final int RESTORE_STATUS_START = 0;
+ public static final int RESTORE_STATUS_WORKING = 1;
+ public static final int RESTORE_STATUS_FINISH = 2;
+
+ public static final String ACTION_DMS_OPEN_BUSS = "com.suntek.mway.rcs.ACTION_DMS_OPEN_BUSS";
+ public static final String ACTION_DMS_OPEN_BUSS_RESULT = "com.suntek.mway.rcs.ACTION_DMS_OPEN_BUSS_RESULT";
+ public static final String OPER_RESULTCODE = "resultCode";
+ public static final String OPER_RESULTDESC = "resultDesc";
+ public static final String DMS_OPEN_BUSS_IMSI = "imsi";
+ public static final String DMS_OPEN_BUSS_MSISDN = "number";
+ public static final String DMS_TIPS_TITLE = "title";
+ public static final String DMS_TIPS_MESSAGE = "message";
+ public static final String DMS_TIPS_ACCEPT_BTN = "Accept_btn";
+ public static final String DMS_TIPS_REJECT_BTN = "Reject_btn";
+
+ public static final String DMS_USER_STATUS = "status";
+
+ public static final int DMS_OPEN_BUSS_RESULTCODE_SUCCESS = 0;
+ public static final int DMS_OPEN_BUSS_RESULTCODE_FAILED = -1;
+ public static final String ACTION_DMS_NEW_CONFIG = "com.suntek.mway.rcs.ACTION_DMS_NEW_CONFIG";
+ public static final String ACTION_DMS_UPDATE_CONFIG = "com.suntek.mway.rcs.ACTION_DMS_UPDATE_CONFIG";
+ public static final String ACTION_SHOW_DIALOG_INFO = "com.suntek.mway.rcs.ACTION_SHOW_DIALOG_INFO";
+ public static final String ACTION_OPEN_PS = "com.suntek.mway.rcs.ACTION_OPEN_PS";
+ public static final String ACTION_CLOSE_WIFI_AND_OPEN_PS = "com.suntek.mway.rcs.ACTION_CLOSE_WIFI_AND_OPEN_PS";
+ public static final String ACTION_DMS_USER_STATUS_CHANGED = "com.suntek.mway.rcs.ACTION_DMS_USER_STATUS_CHANGED";
+ public static final String ACTION_CONFIRM_USE_NEW_IMSI = "com.suntek.mway.rcs.ACTION_CONFIRM_USE_NEW_IMSI";
+ public static final String ACTION_INPUT_SMS_VERIFY_CODE = "com.suntek.mway.rcs.ACTION_INPUT_SMS_VERIFY_CODE";
+
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/constant/MediaConstants.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/constant/MediaConstants.java
new file mode 100644
index 0000000..4882f18
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/constant/MediaConstants.java
@@ -0,0 +1,59 @@
+/*
+ * Copyright (c) 2014 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.api.constant;
+
+/**
+ * The Class MediaConstants.
+ */
+public class MediaConstants {
+
+ /** The suffixs of image. */
+ public static final String IMAGE_SUFFIX = "JPG,JPEG,PNG,GIF,BMP";
+
+ /** The suffixs of audio. */
+ public static final String AUDIO_SUFFIX = "MP3,M4A,AAC,AMR";
+
+ /** The suffixs of video. */
+ public static final String VIDEO_SUFFIX = "3GP,MP4";
+
+ /** Maximum default file size. */
+ public static final long DEFAULT_FT_MAX_SIZE = 10 * 1024;
+
+ /** Maximum image file size. */
+ public static final long IMAGE_FT_MAX_SIZE = 10 * 1024;
+
+ /** Maximum video file size. */
+ public static final long VIDEO_FT_MAX_SIZE = 500 * 1024;
+
+ /** Maximum video file time. */
+ public static final long VIDEO_MAX_TIME = 90;
+
+ /** Maximum audio file time. */
+ public static final long AUDIO_MAX_TIME = 180;
+
+ /** Maximum file size. */
+ public static final long FT_MAX_SIZE = 500 * 1024;
+
+ public static final String FT_THUMB = "1";
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/contacts/ContactGroup.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/contacts/ContactGroup.aidl
new file mode 100644
index 0000000..3504f8a
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/contacts/ContactGroup.aidl
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2014 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.api.contacts;
+
+parcelable ContactGroup;
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/contacts/ContactGroup.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/contacts/ContactGroup.java
new file mode 100644
index 0000000..2a0fd47
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/contacts/ContactGroup.java
@@ -0,0 +1,66 @@
+/*
+ * Copyright (c) 2014 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.api.contacts;
+
+
+public class ContactGroup {
+ private String id;
+ private String name;
+ private boolean focus;
+
+ public ContactGroup(String id, String name) {
+ super();
+ this.id = id;
+ this.name = name;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ @Override
+ public String toString() {
+ return "ContactGroup [id=" + id + ", name=" + name + "]";
+ }
+
+ public boolean isFocus() {
+ return focus;
+ }
+
+ public void setFocus(boolean focus) {
+ this.focus = focus;
+ }
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/contacts/RCSContact.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/contacts/RCSContact.aidl
new file mode 100644
index 0000000..c8782fe
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/contacts/RCSContact.aidl
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2014 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.api.contacts;
+
+parcelable RCSContact;
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/contacts/RCSContact.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/contacts/RCSContact.java
new file mode 100644
index 0000000..b2362b5
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/contacts/RCSContact.java
@@ -0,0 +1,257 @@
+/*
+ * Copyright (c) 2014 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.api.contacts;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+import com.suntek.mway.rcs.client.api.plugin.entity.profile.Profile;
+
+/**
+ * <p>Title: RCSContact class</p>
+ * <p>
+ * Description: The class <code>RCSContact</code> represents the informations
+ * of RCS contact.
+ * </p>
+ * <p>
+ * Copyright: Copyright (c) 2014
+ * </p>
+ * <p>
+ * Company: pci-suntek
+ * </p>
+ * @author YE JIE MING
+ * @version 1.0
+ *
+ */
+public class RCSContact extends Profile implements Parcelable {
+
+ /** The id. */
+ private long id = -1;
+
+ /** The is rcs contact. */
+ private boolean isRcsContact = false;
+
+ /** The pinyin. */
+ private String pinyin;
+
+ /** The photo. */
+ private byte[] photo;
+
+ private String photoBase64;
+
+ /**
+ * Checks if is rcs contact.
+ *
+ * @return true, if is rcs contact
+ */
+ public boolean isRcsContact() {
+ return isRcsContact;
+ }
+
+ /**
+ * Sets the rcs contact.
+ *
+ * @param isRcsContact the new rcs contact
+ */
+ public void setRcsContact(boolean isRcsContact) {
+ this.isRcsContact = isRcsContact;
+ }
+
+ /**
+ * Gets the id.
+ *
+ * @return the id
+ */
+ public long getId() {
+ return id;
+ }
+
+ /**
+ * Sets the id.
+ *
+ * @param id the new id
+ */
+ public void setId(long id) {
+ this.id = id;
+ }
+
+ /**
+ * Gets the pinyin.
+ *
+ * @return the pinyin
+ */
+ public String getPinyin() {
+ return pinyin;
+ }
+
+ /**
+ * Sets the pinyin.
+ *
+ * @param pinyin the new pinyin
+ */
+ public void setPinyin(String pinyin) {
+ this.pinyin = pinyin;
+ }
+
+ /**
+ * Get photo
+ * @return
+ */
+ public byte[] getPhoto() {
+ return photo;
+ }
+
+ /**
+ * Set photo
+ * @param photo
+ */
+ public void setPhoto(byte[] photo) {
+ this.photo = photo;
+ }
+
+ /**
+ * Get photo base64 code
+ * @return
+ */
+ public String getPhotoBase64() {
+ return photoBase64;
+ }
+
+ /**
+ * Set photo base64 code
+ * @param photoBase64
+ */
+ public void setPhotoBase64(String photoBase64) {
+ this.photoBase64 = photoBase64;
+ }
+
+ /**
+ * Instantiates a new RCSContact.
+ */
+ public RCSContact()
+ {}
+
+ /**
+ * Instantiates a new RCSContact.
+ *
+ * @param source the source
+ */
+ public RCSContact( Parcel source )
+ {
+ readFromParcel( source );
+ }
+
+ /**
+ * The parcel describe contents, defaul is 0.
+ *
+ * @return the int
+ */
+ @Override
+ public int describeContents()
+ {
+ return 0;
+ }
+
+ /**
+ * Write the RCSContact entity to parcel stream. Pay attention to read and
+ * write variables variables sequence should be consistent or not the
+ * correct results
+ *
+ * @param dest the dest
+ * @param flags the flags
+ */
+ @Override
+ public void writeToParcel( Parcel dest, int flags )
+ {
+ super.writeToParcel( dest,flags );
+ dest.writeLong( id );
+ dest.writeInt( isRcsContact ? 1 : 0);
+ dest.writeString( pinyin );
+
+ dest.writeString(photoBase64);
+
+ if( photo != null ) {
+ dest.writeByteArray(photo);
+ }
+ }
+
+ /**
+ * Create the RCSContact entity from parcel stream. Pay attention to read and
+ * write variables variables sequence should be consistent or not the
+ * correct results
+ *
+ * @param source
+ * The parcel stream
+ */
+ public void readFromParcel( Parcel source )
+ {
+ super.readFromParcel( source );
+ id = source.readLong();
+ isRcsContact = source.readInt() == 1 ? true : false;
+ pinyin = source.readString();
+
+ photoBase64 = source.readString();
+
+ if( photo != null ) {
+ source.readByteArray(photo);
+ }
+
+ }
+
+ /** The parcel creator. */
+ public static final Parcelable.Creator<RCSContact> CREATOR = new Parcelable.Creator<RCSContact>() {
+ @Override
+ public RCSContact createFromParcel( Parcel source )
+ {
+ return new RCSContact( source );
+ }
+
+ @Override
+ public RCSContact[] newArray( int size )
+ {
+ return new RCSContact[ size ];
+ }
+ };
+
+
+ @Override
+ public String toString() {
+ int photoLen = 0;
+ if( photo != null ) {
+ photoLen = photo.length;
+ }
+ List<String> list = new ArrayList<String>();
+ list.add("id="+id);
+ list.add("isRcsContact="+isRcsContact);
+ list.add("pinyin="+pinyin);
+ list.add("photo.length="+photoLen);
+ list.add("profile="+super.toString());
+ return list.toString();
+ }
+
+
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/emoticon/IEmoticonApi.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/emoticon/IEmoticonApi.aidl
new file mode 100644
index 0000000..ed19935
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/emoticon/IEmoticonApi.aidl
@@ -0,0 +1,221 @@
+/*
+ * Copyright (c) 2014 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.api.emoticon;
+import com.suntek.mway.rcs.client.api.plugin.entity.emoticon.EmojiPackageBO;
+import com.suntek.mway.rcs.client.api.plugin.entity.emoticon.ResultBO;
+import com.suntek.mway.rcs.client.api.plugin.entity.emoticon.EmoticonBO;
+import com.suntek.mway.rcs.client.api.plugin.entity.emoticon.UserBO;
+import com.suntek.mway.rcs.client.api.plugin.callback.IEmoticonCallbackApi;
+import com.suntek.mway.rcs.client.api.plugin.callback.IEmoticonCanSendCallback;
+import com.suntek.mway.rcs.client.api.plugin.callback.IEmoticonPackagesNetCallbackApi;
+import com.suntek.mway.rcs.client.api.plugin.callback.IEmoticonSetSuccessDownListener;
+interface IEmoticonApi {
+// boolean doRegister();
+
+ /**
+ * Gets the user entity by user phone number.
+ *
+ * @param userPhone
+ * the user phone number
+ * @return the user entity
+ UserBO getUser( String userPhone );
+ */
+
+ /**
+ * Gets the current login user entity.
+ *
+ * @return the current user entity
+ */
+ UserBO getCurrentUser();
+
+ /**
+ * Gets the user login state by the user phone number
+ *
+ * @param userPhone
+ * the user phone number
+ * @return the user login state, true is had logined, false is haddn't
+ * logined
+ boolean getUserState( String userPhone );
+ */
+
+ /**
+ * Gets the current user login state.
+ *
+ * @return the current user login state, true is had logined, false is
+ * haddn't logined
+ */
+ boolean getCurrentUserState();
+
+ /**
+ * Query user emoticon packages by user phone number.
+ *
+ * @return the list of user emoticon package
+ */
+ List<EmojiPackageBO> queryEmojiPackages();
+
+ /**
+ * Gets the emoticon entity by the emoticon id.
+ *
+ * @param emoticonId
+ * the emoticon id
+ * @return the emoticon entity
+ */
+ EmoticonBO getEmoticon( String emoticonId );
+
+ /**
+ * Gets the emoticon package info by the user phone number and the user
+ * emoticon package id.
+ *
+ * @param packageId
+ * the emoticon package id
+ * @return the emoticon package
+ */
+ EmojiPackageBO getEmojiPackage( String packageId);
+
+ /**
+ * Gets the emoticon package with detail by the user phone number and the
+ * emoticon package id.
+ *
+ * @param packageId
+ * the emoticon package id
+ * @return the emoticon package entity
+ */
+ EmojiPackageBO getEmojiPackageWithDetail( String packageId);
+
+ /**
+ * Query emoticons by the user phone number and package id.
+ *
+ * @param packageId
+ * the emoticon package id
+ * @return the list of emoticon entity
+ */
+ List<EmoticonBO> queryEmoticons( String packageId);
+
+ /**
+ * Judge if the package exist by the emoticon package id and is free
+ * condition.
+ *
+ * @param packageId
+ * the emoticon package id
+ * @return true, if exist
+ */
+ boolean emojiPackageExist( String packageId);
+
+ /**
+ * Do accept emoticon.
+ *
+ * @param emoticonId
+ * the emoticonId, such as the emoticon id
+ * @param callback
+ * the accept emoticon event callback handler
+ */
+ void doAcceptEmoticon( String emoticonId, IEmoticonCallbackApi callback );
+
+ /**
+ * Do download emoticon package.
+ *
+ * @param zipPath
+ * the zip path
+ * @param packageId
+ * the package id
+ * @param userPhone
+ * the user phone
+ * @return the result entity
+
+ ResultBO doDownEmojiPackage( String zipPath, String packageId);
+ */
+ /**
+ * Do buy emoticon package.
+ *
+ * @param params
+ * the params, such as the package id , the package name and so
+ * on
+ * @return the result entity
+
+ ResultBO doBuyEmojiPackage( in Map params );
+ */
+ /**
+ * Query emoticon packages with detail by user phone number.
+ *
+ * @return the list of emoticon package
+ */
+ List<EmojiPackageBO> queryEmojiPackagesWithDetail();
+
+ /**
+ * Query users info.
+ *
+ * @return the list of user entity
+ List<UserBO> queryUsers();
+ */
+
+ /**
+ * Authenticate user emoticon right.
+ *
+ * @param paramMap
+ * the param map
+ * @param callback
+ * the authenticate use emoticon right event callback handler
+ */
+ //void authUseEmoticon( in Map paramMap, IEmoticonCallbackApi callback );
+
+ void isCanSend(String emoticonId, String phone, IEmoticonCanSendCallback cansendCallback);
+
+ /**
+ * Gets the storage root path.
+ *
+ * @return the storage root path
+ */
+ String getStorageRootPath();
+ /**
+ *Get a list of the specified user's face - Network
+ *
+ *@param callback
+ * the authenticate use emoticon right event callback handler
+ */
+ void queryEmojiPackagesNet(IEmoticonPackagesNetCallbackApi callback);
+ /**
+ *
+ *Text automatically retrieve expression
+ *@param emoticonName
+ * the expression name
+ */
+ List<EmoticonBO> queryEmoticonName(String emoticonName);
+
+ void setSuccessDownListener(IEmoticonSetSuccessDownListener downListener);
+
+ void unreSuccessListenter();
+
+ String encodeEmoticon(String emoticonId);
+
+ EmoticonBO decodeEmoticon(String eid);
+
+ String getEmoticonId(String eid);
+
+ byte[] decrypt2Bytes(String emoticonId, int emoFileType);
+/*
+ void decrypt2Temp(String key,String fileStr);
+*/
+
+// ResultBO doLogout(String userPhone, String date);
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/im/IGroupManagerApi.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/im/IGroupManagerApi.aidl
new file mode 100644
index 0000000..2108daa
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/im/IGroupManagerApi.aidl
@@ -0,0 +1,89 @@
+/*
+ * Copyright (c) 2014 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.api.im;
+
+import java.util.List;
+
+import com.suntek.mway.rcs.client.api.provider.model.GroupChatUser;
+import com.suntek.mway.rcs.client.api.plugin.callback.IConferenceCallback;
+import com.suntek.mway.rcs.client.api.provider.model.GroupChatModel;
+
+interface IGroupManagerApi {
+
+ String createGroupChat(String subject, in List<String> users);
+
+ void agreeToJoinGroup(String conversationId, String contributionId,
+ String chatUri, String subject, String numberData, long inviteTime);
+
+ void refuseToJoinGroup(String conversationId);
+
+ void updateGroupSubject(String groupId, String newSubject);
+
+ void modifyGroupMemo(String groupId, String memo);
+
+ void disbandGroupChat(String groupId);
+
+ void kickedOutOfGroupChat(String groupId, String number);
+
+ void assignGroupChairman(String groupId, String number);
+
+ void quitGroupChat(String groupId, String number);
+ void quitGroupChatEx(String groupId, String oldChairman, String newChairman);
+ void setMyAlias(String groupId, String alias);
+
+ String getGroupChatMemberDisplayName(String groupId, String number);
+
+ void refreshMemberHeadPic(String groupId,String number,int pixel,in IConferenceCallback confCallback);
+
+ void queryMemberHeadPic(String groupId,String number,int pixel,in IConferenceCallback confCallback);
+
+
+
+
+ GroupChatUser getGroupChairman(String groupId);
+
+ void inviteOneMemberToGroupChat(String groupId, String number);
+
+ void inviteToJoinGroupChat(String groupId, in List<String> numbers);
+
+ GroupChatModel getLastGroupModel();
+
+ GroupChatModel getGroupChatByGroupId(String groupId);
+
+ void updateGroupPolicy(String groupId,int policy);
+
+ List<GroupChatUser> getGroupChatUsersAllowChairman(String groupId);
+ List<GroupChatUser> getGroupChatUsersByGroupId(String groupId);
+
+ GroupChatModel getGroupChatByThreadId(String threadId);
+ GroupChatModel getGroupChatByChatUri(String chatUri);
+
+ String getGroupChatDomainName();
+
+ String getPublicAccountDomainName();
+
+ void refuseAssigedAsChairman(String chatUri, long inviteTime, String conversationId, String contributionId);
+
+ void acceptAssignedAsChairman(String chatUri, long inviteTime, String conversationId, String contributionId);
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/im/IInstantMessageApi.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/im/IInstantMessageApi.aidl
new file mode 100644
index 0000000..c7e2ae8
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/im/IInstantMessageApi.aidl
@@ -0,0 +1,198 @@
+/*
+ * Copyright (c) 2014 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.api.im;
+
+import com.suntek.mway.rcs.client.api.contacts.RCSContact;
+import com.suntek.mway.rcs.client.api.provider.model.ChatMessage;
+import com.suntek.mway.rcs.client.api.provider.model.MessageSessionModel;
+import com.suntek.mway.rcs.client.api.provider.model.GroupChatModel;
+import com.suntek.mway.rcs.client.api.provider.model.GroupChatUser;
+import com.suntek.mway.rcs.client.api.provider.model.TopMessageData;
+import com.suntek.mway.rcs.client.api.provider.model.SimpleMsg;
+import com.suntek.mway.rcs.client.api.provider.model.FavoriteMessage;
+
+interface IInstantMessageApi {
+ void sendTextMessage(long thread_id,String number, String text,
+ int burnFlag, int barCycle);
+
+ void sendImageFile(long thread_id,long sms_id,String number, String filePath,
+ int burnFlag, int barCycle,int quality);
+
+ void sendAudioFile(long thread_id,long sms_id,String number, String filePath,
+ int recordTime,int burnFlag, int barCycle) ;
+ void sendVideoFile(long thread_id,long sms_id,String number, String filePath,
+ int length,int burnFlag, int barCycle);
+ void sendLocation(long thread_id,long sms_id,String number, double lat,
+ double lng,String text);
+ void sendPaidEmo(long thread_id,long sms_id,String number, String emoid,
+ String emoImgFileName);
+ void sendVCard(long thread_id,long sms_id,String number, in RCSContact rcsContact);
+ void sendVCardByPath(long thread_id,long sms_id,String number, String vcardFilePath);
+
+
+ void sendOne2ManyTextMessage(long thread_id,in List<String> numbers, String text,
+ int burnFlag, int barCycle);
+
+ void sendOne2ManyImageFile(long thread_id,long sms_id, in List<String> numbers, String filePath,
+ int burnFlag, int barCycle,int quality);
+
+ void sendOne2ManyAudioFile(long thread_id,long sms_id,in List<String> numbers, String filePath,
+ int recordTime,int burnFlag, int barCycle);
+ void sendOne2ManyVideoFile(long thread_id,long sms_id,in List<String> numbers, String filePath,
+ int length,int burnFlag, int barCycle);
+ void sendOne2ManyLocation(long thread_id,long sms_id,in List<String> numbers, double lat,
+ double lng,String text);
+
+
+ void sendGroupMessage(long thread_id, String conversationId,long sms_id,String msg,
+ String groupId);
+ void sendGroupImageFile(long thread_id, String conversationId,long sms_id,String filepath,
+ String groupId, int quality);
+ void sendGroupAudioFile(long thread_id, String conversationId,long sms_id,String filepath,
+ int recordTime ,String groupId);
+ void sendGroupVideoFile(long thread_id, String conversationId,long sms_id,String filepath,
+ int length ,String groupId);
+ void sendGroupLocation(long thread_id,String conversationId,long sms_id, double lat,
+ double lng,String text,String groupId);
+ void sendGroupVCard(long thread_id,String conversationId,long sms_id,
+ in RCSContact rcsContact,String groupId);
+ void sendGroupVCardByPath(long thread_id,String conversationId,long sms_id,
+ String vcardFilePath,String groupId);
+
+ void acceptFile(in ChatMessage chatMessage);
+ boolean interruptFile(in ChatMessage chatMessage);
+
+ GroupChatModel getGroupChatById(String groupId);
+ GroupChatModel getGroupChatByThreadId(long threadId);
+ GroupChatUser getGroupChairman(String groupId);
+
+ long getNewThreadId();
+ List<MessageSessionModel> getMessageSessionList(int offset, int number);
+ List<ChatMessage> getChatMessageList(long threadId, boolean less, int specifiedMsgId, int count);
+ List<ChatMessage> searchMessageByText(String text, int offset, int number, boolean timaAsc);
+ ChatMessage getMessageById(String rowId);
+ ChatMessage getMessageByMessageId(String messageId);
+
+ void removeMessageByThreadId(long threadId);
+ void removeOneMessage(String id);
+ void removeAllMessage();
+
+ void topMessage(long threadId);
+ void cancelTopMessage(long threadId);
+
+ ChatMessage getTheLastMessage(long threadId);
+ String getThreadIdByNumber(in List<String> numbers);
+ MessageSessionModel getMessageSessionByThreadId(long threadId);
+ String getFilepath(in ChatMessage message);
+ String getThumbFilepath(in ChatMessage message);
+
+ List<TopMessageData> getTopMsgsInOrder(boolean asc);
+ void backupAllMessage();
+ void restoreAllMessage();
+ void collectMessage(in List<SimpleMsg> simpleMsgList);
+ void accuseMessage(long thread_id, String id);
+
+ List<ChatMessage> getMessageOfSpecialService();
+ List<ChatMessage> getMessageOfStrangeNumber();
+
+ List<MessageSessionModel> qryNotifyArchiveMsgSessionList();
+ List<MessageSessionModel> qryNonFriendMsgSessionList();
+
+ void sendOne2ManyPaidEmoMessage(long thread_id, long sms_id, in List<String> numbers,
+ String emoid, String emoImgFileName);
+ void sendGroupPaidEmo(long thread_id, String conversationId, long sms_id,
+ String emoid, String emoImgFileName, String groupId);
+
+ List<ChatMessage> getMsgListGreatOrLessThanSpecifiedForBlack(long threadId, boolean less, int specifiedId, int number);
+ MessageSessionModel getMessageSessionByThreadIdForBlack(String threadId);
+ List<MessageSessionModel> getMessageSessionListForBlack(int offset, int number);
+ ChatMessage getTheLastMsgOfThreadForBlack(long threadId);
+
+ void sendOne2ManyVCard(long thread_id, long sms_id,
+ in List<String> numbers, in RCSContact rcsContact);
+ void sendOne2ManyVCardByPath(long thread_id, long sms_id,
+ in List<String> numbers, String vcardFilePath);
+
+ int recoveBlackMsgByMessageId(String messageId);
+ int recoveBlackMsgByThreadId(long threadId);
+ int recoveBlackMsgAll();
+
+ void retransmitMessageById(String id);
+ void sendDisplayNotification(String conversationId, String number, String messageId);
+
+ List<GroupChatModel> getAllGroupChat();
+ void burnMessage(String id);
+
+ void cancelCollectSimpleMsg(in List<SimpleMsg> simpleMsgList);
+ List<FavoriteMessage> getFavouriteMessageList();
+ void burnMessageAtOnce(String id);
+
+ String getAccuseNumber();
+ byte[] getImageThumbnails(String filepath);
+ byte[] getVideoThumbnails(String filepath);
+
+ int getUnreadMsgCountByThreadId(String threadId);
+ int getAllUnreadCount();
+ void removeUnreadMessageByThreadId(String threadId);
+
+ int getMsgSendPolicy();
+
+ void setMsgSendPolicy(int policy);
+
+ int updateMessageRead(String id);
+ void uploadFile(in ChatMessage chatMessage);
+
+ int getPlayTime(int msgType, String data);
+
+ GroupChatModel getGroupChatByConversationId(String conversationId);
+
+ void setSMSSentRemind(int policy);
+
+ int getSMSSentRemind();
+
+ void burnAllMsgAtOnce();
+
+ void sendComposingMsg(long threadId, String contact, String contentType, int seconds);
+
+ void sendCancelComposingMsg(long threadId, String contact, String contentType, long lastActive);
+
+ void sendComposingMsgToGroup(long threadId, int id, String contentType, int seconds);
+
+ void sendCancelComposingMsgToGroup(long threadId, int id, String contentType, long lastActive);
+
+ void sendVCardList(long thread_id, long sms_id, String number, in List<RCSContact> contactList, int chatType);
+
+ void sendOne2ManyVCardList(long thread_id, long sms_id, in List<String> numbers, in List<RCSContact> contactList);
+
+ void sendGroupVCardList(long thread_id, String conversationId, long sms_id, in List<RCSContact> contactList, String groupId);
+
+ long getImageFtMaxSize();
+
+ long getAudioMaxTime();
+
+ long getVideoMaxTime();
+
+ long getVideoFtMaxSize();
+
+ void removeMsgWithNotificationByThread(long threadId);
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/im/IPaMessageApi.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/im/IPaMessageApi.aidl
new file mode 100644
index 0000000..c9349c7
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/im/IPaMessageApi.aidl
@@ -0,0 +1,61 @@
+/*
+ * Copyright (c) 2014 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.api.im;
+
+import com.suntek.mway.rcs.client.api.contacts.RCSContact;
+
+interface IPaMessageApi{
+
+ void sendTextMessage(long thread_id, long sms_id, String uuid, String text);
+
+ void sendImageFile(long thread_id, long sms_id, String uuid , String filepath, int quality);
+
+ void sendAudioFile(long thread_id, long sms_id, String uuid, String filepath, int recordTime);
+
+ void sendVideoFile(long thread_id, long sms_id, String uuid, String filepath, int length);
+
+ void sendLocation(long thread_id, long sms_id, String uuid, double lat, double lng, String text);
+
+ void sendVCard(long thread_id, long sms_id, String uuid, in RCSContact rcsContact);
+
+ void sendVCardByPath(long thread_id, long sms_id, String uuid, in String vcardFilePath);
+
+ void sendVCardList(long thread_id, long sms_id, String uuid, in List<RCSContact> contactList);
+
+ void sendMenuMessage(String uuid, String text);
+
+ void deleteMessage(String messageId);
+
+ void deleteMessageByThreadId(long thread_id);
+
+ void deleteMessageByUuid(String uuid);
+
+ long getImageFtMaxSize();
+
+ long getAudioMaxTime();
+
+ long getVideoMaxTime();
+
+ long getVideoFtMaxSize();
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/login/ILoginApi.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/login/ILoginApi.aidl
new file mode 100644
index 0000000..f69f7e4
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/login/ILoginApi.aidl
@@ -0,0 +1,32 @@
+/*
+ * Copyright (c) 2014 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.api.login;
+
+import com.suntek.mway.rcs.client.api.login.ILoginEventListener;
+import com.suntek.mway.rcs.client.api.setting.LoginUser;
+
+interface ILoginApi {
+ void login(in LoginUser userModel, ILoginEventListener listener);
+ void logout();
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/login/ILoginEventListener.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/login/ILoginEventListener.aidl
new file mode 100644
index 0000000..0e97a2d
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/login/ILoginEventListener.aidl
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) 2014 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.api.login;
+
+interface ILoginEventListener {
+
+ void onLoginEventChanged(int resultCode, String resultDesc);
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/mcloud/IMcloudFileApi.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/mcloud/IMcloudFileApi.aidl
new file mode 100644
index 0000000..cb26a3f
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/mcloud/IMcloudFileApi.aidl
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2014 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.api.mcloud;
+
+interface IMcloudFileApi {
+ void putFile(String localPath, String remotePath, int transOper);
+ void shareFile(String fullPathInID, String shareDesc);
+ void shareFileAndSend(String fullPathInID, String shareDesc, String contact, long threadId, String beforeText, String afterText);
+ void getShareFileList(int beginIndex, int endIndex);
+ void downloadFileFromUrl(String remoteUrl, String fileName, int transOper);
+
+ void shareFileAndSendGroup(String fullPathInID, String shareDesc, long threadId, String conversationId, String groupId, String beforeText, String afterText);
+ void shareFileAndSendOne2Many(String fullPathInID, String shareDesc, in List<String> contacts, long threadId, String beforeText, String afterText);
+
+ void getRemoteFileList(String remotePath, int beginIndex, int endIndex, int fileNodeOrder);
+
+}
+
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/mcontact/IMcontactApi.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/mcontact/IMcontactApi.aidl
new file mode 100644
index 0000000..af31e6f
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/mcontact/IMcontactApi.aidl
@@ -0,0 +1,40 @@
+/*
+ * Copyright (c) 2014 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.api.mcontact;
+
+import com.suntek.mway.rcs.client.api.plugin.callback.IMContactSyncListener;
+
+interface IMcontactApi {
+ void doSync(int action, IMContactSyncListener listener);
+ void startIntervalSync(int action, int interval, long time);
+ void cancelIntervalSync();
+ void setEnableAutoSync(boolean status,int syncAction);
+ boolean getEnableAutoSync();
+ int getAutoSync();
+ void setOnlySyncEnableViaWifi(boolean status);
+ boolean getOnlySyncEnableViaWifi();
+ int getLocalContactCounts();
+ int getRemoteContactCounts();
+ int getIntervalSyncMode();
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/IMcloudFileApi.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/IMcloudFileApi.aidl
new file mode 100644
index 0000000..d83ffa5
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/IMcloudFileApi.aidl
@@ -0,0 +1,83 @@
+/*
+ * Copyright (c) 2014 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.api.plugin;
+
+import com.suntek.mway.rcs.client.api.plugin.callback.IMcloudOperationCtrl;
+import com.suntek.mway.rcs.client.api.plugin.callback.IMcloudAuthListener;
+import com.suntek.mway.rcs.client.api.plugin.callback.IMcloudSdkListener;
+import com.suntek.mway.rcs.client.api.plugin.callback.IMcloudConfListener;
+import com.suntek.mway.rcs.client.api.plugin.callback.IMcloudFileListener;
+import com.suntek.mway.rcs.client.api.plugin.callback.IMcloudMsgListener;
+import com.suntek.mway.rcs.client.api.plugin.callback.IMcloudShareListener;
+import com.suntek.mway.rcs.client.api.plugin.callback.IMcloudTransListener;
+
+import com.suntek.mway.rcs.client.api.plugin.entity.mcloudfile.MsgNode;
+
+interface IMcloudFileApi
+{
+ void init( IMcloudSdkListener sdkListener );
+ boolean checkParam( String key, String value );
+ String getParam( String name );
+ void setParam(String name, String value);
+
+ IMcloudOperationCtrl checkUpdate( IMcloudAuthListener authListener, String userAccount );
+ IMcloudOperationCtrl login( IMcloudAuthListener authListener, String userName, String userPass, String verifyCode, int passType, boolean isAuto, in Map extInfo );
+ IMcloudOperationCtrl logout( IMcloudAuthListener authListener, boolean waitTag );
+ IMcloudOperationCtrl refresh( IMcloudAuthListener authListener, boolean forceTag );
+ IMcloudOperationCtrl ssoLogin( IMcloudAuthListener authListener, String account, String ssoToken, String ssoKey, String verifyCode, String clientType, String cpid, String version, String channel, in Map extInfo );
+ IMcloudOperationCtrl modifyPwd( IMcloudAuthListener authListener, String msisdn, String dycPwd, String passPwd );
+ IMcloudOperationCtrl prepairRegister( IMcloudAuthListener authListener, String userName, int type );
+ IMcloudOperationCtrl prepairResetPwd( IMcloudAuthListener authListener, String userName, int type );
+ IMcloudOperationCtrl register( IMcloudAuthListener authListener, String msisdn, String dycPwd, String userPass, String clientType );
+ IMcloudOperationCtrl resetPwd( IMcloudAuthListener authListener, String userName, String userPass, int type, String verifyCode );
+
+ IMcloudOperationCtrl getServerConfig( IMcloudConfListener confListener, boolean reset );
+
+ IMcloudOperationCtrl copy( IMcloudFileListener callback, in String[] sourcePath, String destPath );
+ IMcloudOperationCtrl delete( IMcloudFileListener callback, in String[] path );
+ IMcloudOperationCtrl getDiskSize( IMcloudFileListener callback );
+ IMcloudOperationCtrl getFileInfo( IMcloudFileListener callback, in String[] path, boolean isFromCache );
+ IMcloudOperationCtrl listDir( IMcloudFileListener callback, String path, int startIndex, int endIndex, int order, in int syncType );
+ IMcloudOperationCtrl mkdir( IMcloudFileListener callback, in String[] dirPath );
+ IMcloudOperationCtrl move( IMcloudFileListener callback, in String[] sourcePath, String destPath );
+ IMcloudOperationCtrl rename( IMcloudFileListener callback, in String[] originalPaths, in String[] newNames );
+ IMcloudOperationCtrl search( IMcloudFileListener callback, String path, String query, int startIndex, int endIndex, int type, int order );
+ void emptyCache( );
+
+ IMcloudOperationCtrl backupMsg( IMcloudMsgListener listener, in MsgNode[] nodes, in String[] sessionIDs );
+ IMcloudOperationCtrl deleteMsg( IMcloudMsgListener listener, in MsgNode[] nodes, in String[] msgContacts, boolean recyFlag );
+ IMcloudOperationCtrl listMsg( IMcloudMsgListener listener, int beginIndex, int endIndex, int order, String msgContact );
+ IMcloudOperationCtrl listMsgSession( IMcloudMsgListener listener, int beginIndex, int endIndex );
+ IMcloudOperationCtrl restoreMsg( IMcloudMsgListener listener, in MsgNode[] nodes, in String[] msgContacts );
+ IMcloudOperationCtrl sumMsg( IMcloudMsgListener listener, int type );
+
+ IMcloudOperationCtrl addLink( IMcloudShareListener listener, in String[] paths, String desc);
+ IMcloudOperationCtrl delLink( IMcloudShareListener listener, in String[] shareIDs);
+ IMcloudOperationCtrl listLink( IMcloudShareListener listener, int beginIndex, int endIndex, int order);
+
+ IMcloudOperationCtrl getFile( IMcloudTransListener callback, String remotePath, String localPath, int oper );
+ IMcloudOperationCtrl getFileFromURL( IMcloudTransListener callback, String url, String localPath, int oper );
+ IMcloudOperationCtrl getThumb( IMcloudTransListener callback, String remotePath, String localPath, int oper, int thumbType );
+ IMcloudOperationCtrl putFile( IMcloudTransListener callback, String remotePath, String localPath, int oper );
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/IProfileApi.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/IProfileApi.aidl
new file mode 100644
index 0000000..a273b08
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/IProfileApi.aidl
@@ -0,0 +1,50 @@
+/*
+ * Copyright (c) 2014 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.api.plugin;
+
+import com.suntek.mway.rcs.client.api.plugin.callback.IProfileListener;
+import com.suntek.mway.rcs.client.api.plugin.entity.profile.Profile;
+import com.suntek.mway.rcs.client.api.plugin.entity.profile.Avatar;
+
+interface IProfileApi
+{
+ void setMyProfile(in Profile profile, IProfileListener listener);
+
+ void setMyHeadPic(in Avatar avatar, IProfileListener listener);
+
+ void getMyProfile(IProfileListener listener);
+
+ void getMyHeadPic(IProfileListener listener);
+
+ void getHeadPicByContact(long contactId, IProfileListener listener);
+
+ void getHeadPicByNumber(String number, int pixel, IProfileListener listener);
+
+ void refreshMyQRImg(in Profile profile, boolean includeEInfo, IProfileListener listener);
+
+ void updateContactsHeadPicAtFixedRateEveryDay(String hhmm,IProfileListener listener);
+
+ String getUpdateTimeOfContactsHeadPic();
+
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/IPublicAccountAPI.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/IPublicAccountAPI.aidl
new file mode 100644
index 0000000..2e19436
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/IPublicAccountAPI.aidl
@@ -0,0 +1,188 @@
+/*
+ * Copyright (c) 2014 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.api.plugin;
+
+import com.suntek.mway.rcs.client.api.plugin.callback.IPublicAccountCallbackAPI;
+import com.suntek.mway.rcs.client.api.plugin.entity.pubacct.MsgContent;
+import com.suntek.mway.rcs.client.api.plugin.entity.pubacct.PublicAccountReqEntity;
+import com.suntek.mway.rcs.client.api.plugin.entity.pubacct.PublicAccountsDetail;
+import com.suntek.mway.rcs.client.api.plugin.entity.pubacct.PublicAccounts;
+
+/**
+ * <p>Title: Public account api</p>
+ * <p>Description: The public account api implemented by the plugin center, The client app will invoke the plugin center by this interface</p>
+ * <p>Copyright: Copyright (c) 2014</p>
+ * <p>Company: pci-suntek</p>
+ *
+ * @author zrq
+ * @version 1.0
+ *
+ */
+interface IPublicAccountAPI
+{
+
+ /**
+ * follow some public account.
+ *
+ * @param uuid the public account uuid
+ * @return the account info will return by asynchronous callback, here only
+ * return invoke result if it has exception
+ */
+ boolean addSubscribe( String uuid );
+
+ /**
+ * cancel some followed public account.
+ *
+ * @param uuid the public account uuid
+ * @return the account info will return by asynchronous callback, here only
+ * return invoke result if it has exception
+ */
+ boolean cancelSubscribe( String uuid );
+
+ /**
+ * complain one public account.
+ *
+ * @param uuid the public account uuid
+ * @param reason the reason of complaint
+ * @param description the description of complaint
+ * @return the result of complaint will return by asynchronous callback,
+ * here only return invoke result if it has exception
+ */
+ boolean complainPublic( String uuid, String reason, String description, int type, String data );
+
+ /**
+ * query the public account history message.
+ *
+ * @param uuid the public account uuid
+ * @param timestamp the begin query time
+ * @param order the query order, default is 0, 0 is asc, 1 is desc
+ * @param pageSize the query result page size
+ * @param pageNum the query result page number
+ * @return the query result will return by asynchronous callback, here only
+ * return invoke result if it has exception
+ */
+ boolean getPreMessage( String uuid, String timestamp, int order, int pageSize, int pageNum );
+
+ /**
+ * query the public account detail info.
+ *
+ * @param uuid the public account uuid
+ * @return the query result will return by asynchronous callback, here only
+ * return invoke result if it has exception
+ */
+ boolean getPublicDetail( String uuid );
+
+ /**
+ * search the public account by keyword.
+ *
+ * @param keywords the search keyword
+ * @param pageSize the query result page size
+ * @param pageNum the query result page number
+ * @param order the query result order, default is 0, 0 is desc order by the
+ * follow time; 1 is order by the public account name
+ * @return the query result will return by asynchronous callback, here only
+ * return invoke result if it has exception
+ */
+ boolean getPublicList( String keywords, int pageSize, int pageNum, int order );
+
+ /**
+ * query the public account's menu info.
+ *
+ * @param uuid the public account uuid
+ * @return the query result will return by asynchronous callback, here only
+ * return invoke result if it has exception
+ */
+ boolean getPublicMenuInfo( String uuid );
+
+ /**
+ * query the user had follow public account.
+ *
+ * @param order the query result order, default is 0, 0 is desc order by the
+ * follow time; 1 is order by the public account name
+ * @param pageSize the query result page size
+ * @param pageNum the query result page number
+ * @return the query result will return by asynchronous callback, here only
+ * return invoke result if it has exception
+ */
+ boolean getUserSubscribePublicList( int order, int pageSize, int pageNum );
+
+ /**
+ * parse response message to message content entity json string.
+ *
+ * @param xml the response message body, content format is xml
+ * @return the parse result, message content entity json string
+ */
+ MsgContent parseContentMessage( String xml );
+
+
+ /**
+ * register the public account callback handler
+ * @param callback the public account callback handler
+ */
+ void registerCallback( IPublicAccountCallbackAPI callback );
+
+ /**
+ * unregister the registered public account callback handler
+ * @param callback the public account callback handler
+ */
+ void unregisterCallback( IPublicAccountCallbackAPI callback );
+
+ /**
+ * get recommend public account.
+ *
+ * @param type the type
+ * @param pageSize the query result page size
+ * @param pageNum the query result page number
+ * @return the query result of recommend public account
+ */
+ boolean getRecommendPublic(int type, int pagesize, int pagenum);
+
+ /**
+ * query the public account detail info from database cache.
+ *
+ * @param uuid the public account uuid
+ * @return the public accounts detail entity
+ */
+ PublicAccountsDetail getPublicDetailCache( String uuid );
+
+ /**
+ * query the user had follow public account.
+ *
+ * @param order the query result order, default is 0, 0 is desc order by the
+ * follow time; 1 is order by the public account name
+ * @param pageSize the query result page size
+ * @param pageNum the query result page number
+ * @return the list of public accounts entity
+ */
+ List<PublicAccounts> getUserSubscribePublicListCache( int order, int pageSize, int pageNum );
+
+ /**
+ * set accept status.
+ *
+ * @param uuid the public account uuid
+ * @param acceptStatus the accept status 1:accept, 0:do not accept
+ * @return the query result of recommend public account
+ */
+ boolean setAcceptStatus(String uuid, int acceptStatus);
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/IRichScreenApi.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/IRichScreenApi.aidl
new file mode 100644
index 0000000..dc2fbd0
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/IRichScreenApi.aidl
@@ -0,0 +1,134 @@
+/*
+ * Copyright (c) 2014 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.api.plugin;
+
+import com.suntek.mway.rcs.client.api.plugin.entity.richscrn.ResultInfo;
+import com.suntek.mway.rcs.client.api.plugin.entity.richscrn.ResultUtil;
+import com.suntek.mway.rcs.client.api.plugin.entity.richscrn.PhoneList;
+import com.suntek.mway.rcs.client.api.plugin.entity.richscrn.RichScrnShowing;
+
+/**
+ * <p>
+ * Title: The rich screen api
+ * </p>
+ * <p>
+ * Description: The rich screen api
+ * </p>
+ * <p>
+ * Copyright: Copyright (c) 2014
+ * </p>
+ * <p>
+ * Company: pci-suntek
+ * </p>
+ *
+ * @author zrq
+ * @version 1.0
+ *
+ */
+interface IRichScreenApi
+{
+
+ /**
+ * Gets the rich screen object.
+ *
+ * @param missdn
+ * the missdn
+ * @param phoneEvent
+ * the phone event
+ * @return the rich screen object
+ */
+ ResultUtil getRichScrnObj( String missdn, String phoneEvent );
+
+ /**
+ * Download rich screen object.
+ *
+ * @param missdn
+ * the missdn
+ * @param phoneEvent
+ * the phone event
+ * @return the result info
+ */
+ ResultInfo downloadRichScrnObj( String missdn, String phoneEvent );
+
+ /**
+ * Clear rich screen local cache.
+ *
+ * @param phoneEvent
+ * the phone event
+ * @return the result info
+ */
+ ResultInfo clearRichScrnLocalCache( String phoneEvent );
+ /**
+ * Inits the handler.
+ *
+ * @param cacheSize
+ * the cache size
+ * @return the result info
+ */
+ ResultInfo init( int cacheSize );
+
+ /**
+ * Generated by the terminal authentication token and a generation
+ * sourceId token to use, and then call the interface to the unified
+ * authentication service platform for authentication certification
+ *
+ * @return the result info
+ */
+ ResultInfo richScrnCMCCSSOLogin();
+ /**
+ * Download home local rules.
+ *
+ * @param phoneEvent
+ * the phone event
+ * @return the result info
+ */
+ ResultInfo downloadHomeLocRules( String phoneEvent );
+ /**
+ * Switching network terminal case,
+ * notice enhanced screen SDK interface.
+ * Trigger operation is completed without
+ * major network under conditions
+ */
+ ResultInfo richScrnChangeNetWork();
+ /**
+ * When come and go electric, terminals see favorite
+ * pictures resources, you can call this interface Collection
+ *
+ * @param sourceType
+ * Resource type: 0 for static images, one for dynamic
+ * pictures, two said the video, three unknown
+ *
+ * @param cId
+ * the cId is RichScreen id
+ */
+ ResultInfo collectRichScrnObj (String sourceType, String cId);
+ /**
+ *start site rich screen apk
+ *
+ *@param mobile
+ * Phone number is null, the setting for everyone ,
+ * otherwise the numbers for
+ */
+ void startSiteApk(in PhoneList mobile);
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/callback/ICapabiltyListener.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/callback/ICapabiltyListener.aidl
new file mode 100644
index 0000000..d577fd6
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/callback/ICapabiltyListener.aidl
@@ -0,0 +1,31 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.callback;
+
+import com.suntek.mway.rcs.client.api.capability.RCSCapabilities;
+
+interface ICapabiltyListener
+{
+ void onCallback(in RCSCapabilities capabilities, int resultCode, String resultDesc, String number);
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/callback/IConferenceCallback.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/callback/IConferenceCallback.aidl
new file mode 100644
index 0000000..ecc7207
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/callback/IConferenceCallback.aidl
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.callback;
+
+import com.suntek.mway.rcs.client.api.plugin.entity.profile.Avatar;
+
+interface IConferenceCallback
+{
+
+ void onRefreshAvatar( in Avatar avatar, int resultCode, String resultDesc );
+
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/callback/IEmoticonCallbackApi.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/callback/IEmoticonCallbackApi.aidl
new file mode 100644
index 0000000..d088862
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/callback/IEmoticonCallbackApi.aidl
@@ -0,0 +1,68 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.callback;
+
+import com.suntek.mway.rcs.client.api.plugin.entity.emoticon.EmoticonBO;
+import com.suntek.mway.rcs.client.api.plugin.entity.emoticon.ResultBO;
+
+/**
+ * <p>
+ * Title: The emoticon callback api interface
+ * </p>
+ * <p>
+ * Description: The emoticon encapsulate the plugin emoticon api
+ * </p>
+ * <p>
+ * Copyright: Copyright (c) 2014
+ * </p>
+ * <p>
+ * Company: pci-suntek
+ * </p>
+ *
+ * @author zrq
+ * @version 1.0
+ *
+ */
+interface IEmoticonCallbackApi
+{
+ /**
+ * on receive accept emoticon event.
+ *
+ * @param what
+ * the event message flag, 0 is MSG4FAILURE, 1 is MSG4SUCCESS, 2 is MSG4LOADING
+ * @param emoticon
+ * the success event body, other is null
+ */
+ void onAcceptEmoticon( int what, in EmoticonBO emoticon );
+
+ /**
+ * on receive authenticate user emoticon right event.
+ *
+ * @param what
+ * the event message flag, 0 is MSG4FAILURE, 1 is MSG4SUCCESS, 2 is MSG4LOADING
+ * @param authResult
+ * the authenticate result, true or false
+ */
+ //void onAuthUseEmoticon( int what, boolean authResult );
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/callback/IEmoticonCanSendCallback.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/callback/IEmoticonCanSendCallback.aidl
new file mode 100644
index 0000000..16d38d9
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/callback/IEmoticonCanSendCallback.aidl
@@ -0,0 +1,57 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.callback;
+
+/**
+ * <p>
+ * Title: The emoticon callback CanSendCallback interface
+ * </p>
+ * <p>
+ * Description: The emoticon encapsulate the China Mobile emoticon CanSendCallback
+ * </p>
+ * <p>
+ * Copyright: Copyright (c) 2014
+ * </p>
+ * <p>
+ * Company: pci-suntek
+ * </p>
+ *
+ * @author wy
+ * @version 1.0
+ *
+ */
+interface IEmoticonCanSendCallback
+{
+ /**
+ *
+ *
+ * @param paramBoolean
+ *
+ * @param paramString1
+ *
+ * @param paramString2
+ */
+ void canSend(boolean paramBoolean, String paramString1, String paramString2);
+
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/callback/IEmoticonPackagesNetCallbackApi.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/callback/IEmoticonPackagesNetCallbackApi.aidl
new file mode 100644
index 0000000..853512d
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/callback/IEmoticonPackagesNetCallbackApi.aidl
@@ -0,0 +1,56 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.callback;
+
+import com.suntek.mway.rcs.client.api.plugin.entity.emoticon.EmojiPackageBO;
+/**
+ * <p>
+ * Title: The emoticon callback api interface
+ * </p>
+ * <p>
+ * Description: The emoticon encapsulate the China Mobile emoticon api
+ * </p>
+ * <p>
+ * Copyright: Copyright (c) 2014
+ * </p>
+ * <p>
+ * Company: pci-suntek
+ * </p>
+ *
+ * @author zrq
+ * @version 1.0
+ *
+ */
+interface IEmoticonPackagesNetCallbackApi
+{
+ /**
+ * on receive accept emoticon event.
+ *
+ * @param what
+ * the event message flag, 0 is MSG4FAILURE, 1 is MSG4SUCCESS, 2 is MSG4LOADING
+ * @param emoticon
+ * the success event body, other is null
+ */
+ void queryPackagesNet( int what, in List<EmojiPackageBO> emoticon );
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/callback/IEmoticonSetSuccessDownListener.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/callback/IEmoticonSetSuccessDownListener.aidl
new file mode 100644
index 0000000..425dd54
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/callback/IEmoticonSetSuccessDownListener.aidl
@@ -0,0 +1,49 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.callback;
+
+import com.suntek.mway.rcs.client.api.plugin.entity.emoticon.EmojiPackageBO;
+/**
+ * <p>Title: The emoticon sdk listener</p>
+ * <p>Description: the emoticon sdk listener used in the emoticon api</p>
+ * <p>Copyright: Copyright (c) 2014</p>
+ * <p>Company: pci-suntek</p>
+ *
+ * @author zrq
+ * @version 1.0
+ *
+ */
+interface IEmoticonSetSuccessDownListener
+{
+ /**
+ * emoticon sdk callback event
+ *
+ * @param event the event type
+ * @param type the sdk type
+ * @param mcloudParam the mcloud param
+ * @return the mcloud sdk callback event result
+ *
+ */
+ void dosuccess(in EmojiPackageBO emojipackagebo);
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/callback/IMContactSyncListener.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/callback/IMContactSyncListener.aidl
new file mode 100644
index 0000000..3b1ae92
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/callback/IMContactSyncListener.aidl
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.callback;
+
+import com.suntek.mway.rcs.client.api.plugin.entity.mcontact.Auth;
+
+/**
+ * <p>
+ * Title: The synchronization callback listener
+ * </p>
+ * <p>
+ * Copyright: Copyright (c) 2014
+ * </p>
+ * <p>
+ * Company: pci-suntek
+ * </p>
+ *
+ * @author yzx
+ * @version 1.0
+ *
+ */
+interface IMContactSyncListener
+{
+
+ void onPreExecuteAuthSession(in Auth auth);
+ void onAuthSession(in Auth auth, boolean timeout);
+ void onExecuting(in Auth auth, int syncAction);
+ void onProgress(in Auth auth, int contactAction, int value, int max);
+ void onHttpResponeText(String message, String resultcode);
+ void onSync(in Auth auth, int syncAction, boolean success);
+ //void onThrowException(in Auth auth, int syncAction, Exception e);
+ void onRunning();
+
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/callback/IMcloudAuthListener.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/callback/IMcloudAuthListener.aidl
new file mode 100644
index 0000000..b60567f
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/callback/IMcloudAuthListener.aidl
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.callback;
+
+import com.suntek.mway.rcs.client.api.plugin.callback.IMcloudOperationCtrl;
+import com.suntek.mway.rcs.client.api.plugin.entity.mcloudfile.Param;
+import com.suntek.mway.rcs.client.api.plugin.entity.mcloudfile.AuthNode;
+
+interface IMcloudAuthListener
+{
+ int onMcloudAuthEvent( IMcloudOperationCtrl operation, int event, in Param param, in AuthNode node );
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/callback/IMcloudConfListener.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/callback/IMcloudConfListener.aidl
new file mode 100644
index 0000000..f6dbf34
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/callback/IMcloudConfListener.aidl
@@ -0,0 +1,32 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.callback;
+
+import com.suntek.mway.rcs.client.api.plugin.callback.IMcloudOperationCtrl;
+import com.suntek.mway.rcs.client.api.plugin.entity.mcloudfile.ConfNode;
+
+interface IMcloudConfListener
+{
+ int onMcsConfEvent( IMcloudOperationCtrl operation, int event, in ConfNode node);
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/callback/IMcloudFileListener.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/callback/IMcloudFileListener.aidl
new file mode 100644
index 0000000..f27a673
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/callback/IMcloudFileListener.aidl
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.callback;
+
+import com.suntek.mway.rcs.client.api.plugin.callback.IMcloudOperationCtrl;
+import com.suntek.mway.rcs.client.api.plugin.entity.mcloudfile.Param;
+import com.suntek.mway.rcs.client.api.plugin.entity.mcloudfile.FileNode;
+
+interface IMcloudFileListener
+{
+ int onMcloudFileEvent( IMcloudOperationCtrl operation, int event, in Param param, in FileNode[] nodes );
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/callback/IMcloudMsgListener.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/callback/IMcloudMsgListener.aidl
new file mode 100644
index 0000000..7994ec5
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/callback/IMcloudMsgListener.aidl
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.callback;
+
+import com.suntek.mway.rcs.client.api.plugin.callback.IMcloudOperationCtrl;
+import com.suntek.mway.rcs.client.api.plugin.entity.mcloudfile.Param;
+import com.suntek.mway.rcs.client.api.plugin.entity.mcloudfile.MsgNode;
+
+interface IMcloudMsgListener
+{
+ int onMcloudMsgEvent( IMcloudOperationCtrl operation, int event, in Param param, in MsgNode[] nodes );
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/callback/IMcloudOperationCtrl.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/callback/IMcloudOperationCtrl.aidl
new file mode 100644
index 0000000..60711f5
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/callback/IMcloudOperationCtrl.aidl
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.callback;
+
+import com.suntek.mway.rcs.client.api.plugin.entity.mcloudfile.Result;
+
+interface IMcloudOperationCtrl
+{
+ void cancel();
+ void exec();
+ void hangup();
+ void option( in Map param );
+ void pause();
+ Result getResult();
+ int getStatus();
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/callback/IMcloudSdkListener.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/callback/IMcloudSdkListener.aidl
new file mode 100644
index 0000000..961ee04
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/callback/IMcloudSdkListener.aidl
@@ -0,0 +1,31 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.callback;
+
+import com.suntek.mway.rcs.client.api.plugin.entity.mcloudfile.Param;
+
+interface IMcloudSdkListener
+{
+ int onMcloudSdkEvent( int event, int sdkType, in Param mcsParam );
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/callback/IMcloudShareListener.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/callback/IMcloudShareListener.aidl
new file mode 100644
index 0000000..9e32320
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/callback/IMcloudShareListener.aidl
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.callback;
+
+import com.suntek.mway.rcs.client.api.plugin.callback.IMcloudOperationCtrl;
+import com.suntek.mway.rcs.client.api.plugin.entity.mcloudfile.Param;
+import com.suntek.mway.rcs.client.api.plugin.entity.mcloudfile.ShareNode;
+
+interface IMcloudShareListener
+{
+ int onMcloudShareEvent( IMcloudOperationCtrl operation, int event, in Param param, in ShareNode[] nodes);
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/callback/IMcloudTransListener.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/callback/IMcloudTransListener.aidl
new file mode 100644
index 0000000..e2fee72
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/callback/IMcloudTransListener.aidl
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.callback;
+
+import com.suntek.mway.rcs.client.api.plugin.callback.IMcloudOperationCtrl;
+import com.suntek.mway.rcs.client.api.plugin.entity.mcloudfile.Param;
+import com.suntek.mway.rcs.client.api.plugin.entity.mcloudfile.TransNode;
+
+interface IMcloudTransListener
+{
+ int onMcloudTransEvent( IMcloudOperationCtrl operation, int event, in Param param, in TransNode[] nodes);
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/callback/IProfileGetCallback.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/callback/IProfileGetCallback.aidl
new file mode 100644
index 0000000..6677bfa
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/callback/IProfileGetCallback.aidl
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.callback;
+
+interface IProfileGetCallback
+{
+ void success( in List objects, String message );
+
+ void sameToCache();
+
+ void error( int responesCode, String message );
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/callback/IProfileListener.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/callback/IProfileListener.aidl
new file mode 100644
index 0000000..fa53fdf
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/callback/IProfileListener.aidl
@@ -0,0 +1,44 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.callback;
+
+import com.suntek.mway.rcs.client.api.plugin.entity.profile.Avatar;
+import com.suntek.mway.rcs.client.api.plugin.entity.profile.Profile;
+import com.suntek.mway.rcs.client.api.plugin.entity.profile.QRCardImg;
+import com.suntek.mway.rcs.client.api.plugin.entity.profile.QRCardInfo;
+
+interface IProfileListener
+{
+ void onProfileUpdated( int resultCode, String resultDesc );
+
+ void onAvatarUpdated( int resultCode, String resultDesc );
+
+ void onAvatarGet( in Avatar avatar, int resultCode, String resultDesc );
+
+ void onProfileGet( in Profile profile, int resultCode, String resultDesc );
+
+ void onQRImgGet( in QRCardImg qrImgObj, int resultCode, String resultDesc );
+
+ void onQRImgDecode( in QRCardInfo qrCardInfo, int resultCode, String resultDesc );
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/callback/IProfilePutCallback.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/callback/IProfilePutCallback.aidl
new file mode 100644
index 0000000..7f84544
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/callback/IProfilePutCallback.aidl
@@ -0,0 +1,30 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.callback;
+
+interface IProfilePutCallback
+{
+ void error( int responesCode, String message );
+ void success( int responesCode, String message );
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/callback/IPublicAccountCallbackAPI.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/callback/IPublicAccountCallbackAPI.aidl
new file mode 100644
index 0000000..1353eca
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/callback/IPublicAccountCallbackAPI.aidl
@@ -0,0 +1,156 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.callback;
+
+import com.suntek.mway.rcs.client.api.plugin.entity.pubacct.MsgContent;
+import com.suntek.mway.rcs.client.api.plugin.entity.pubacct.MenuInfo;
+import com.suntek.mway.rcs.client.api.plugin.entity.pubacct.PublicAccounts;
+import com.suntek.mway.rcs.client.api.plugin.entity.pubacct.PublicAccountsDetail;
+import com.suntek.mway.rcs.client.api.plugin.entity.pubacct.PublicAccounts;
+
+/**
+ * <p>Title: Public account callback api</p>
+ * <p>Description: The public account callback api need the client app to implement, The plugin center will invoke the client app by this interface</p>
+ * <p>Copyright: Copyright (c) 2014</p>
+ * <p>Company: pci-suntek</p>
+ *
+ * @author zrq
+ * @version 1.0
+ *
+ */
+interface IPublicAccountCallbackAPI
+{
+ /**
+ * response the follow public account result
+ *
+ * @param result
+ * if follow success
+ */
+ //void respAddSubscribe( boolean result );
+
+ /**
+ * response the cancel public account result
+ *
+ * @param result
+ * if cancel success
+ */
+ //void respCancelSubscribe( boolean result );
+
+ /**
+ * response the complain public account result
+ * @param result if complain success
+ */
+ //void respComplainPublic( boolean result );
+
+ /**
+ * response the query public account history message result
+ * @param result if query success
+ * @param msgContent the message content entity list
+ */
+ void respGetPreMessage( boolean result, in List<MsgContent> msgContent );
+
+ /**
+ * response the query public account menu info
+ * @param result if query success
+ * @param menus the menu's entity list
+ */
+ void respGetPublicMenuInfo( boolean result, in List<MenuInfo> menus );
+
+ /**
+ * response the query user follow public account list
+ * @param result if query success
+ * @param pubAcctList the public accounts entity list
+ */
+ void respGetUserSubscribePublicList( boolean result, in List<PublicAccounts> pubAcctList );
+
+ /**
+ * response the query public account detail
+ * @param result if query success
+ * @param accountDetail the public account detail entity
+ */
+ void respGetPublicDetail( boolean result, in PublicAccountsDetail accountDetail );
+
+ /**
+ * response the query public accounts
+ * @param result if query success
+ * @param accountList the public account entity list
+ */
+ void respGetPublicList( boolean result, in List<PublicAccounts> accountList );
+
+ /**
+ * response the follow public account entity
+ * @param result if query success
+ * @param account public account
+ */
+ void respAddSubscribeAccount(boolean result, in PublicAccounts account);
+
+ /**
+ * response the follow public account
+ * @param result if query success
+ * @param account public account
+ */
+ void respCancelSubscribeAccount(boolean result, in PublicAccounts account);
+
+ /**
+ * response the follow public account
+ * @param result if query success
+ * @param account public account
+ */
+ void respComplainPublicAccount(boolean result, in PublicAccounts account);
+
+ /**
+ * response the follow public account
+ * @param result if query success
+ * @param account public account
+ */
+ //void respGetPreMessageAccount(boolean result, in PublicAccounts account);
+
+ /**
+ * response the follow public menu info xml string
+ * @param result if query success
+ * @param xmlString public menu info xml string
+ */
+ //void respGetPublicMenuInfoString(boolean result, String xmlString);
+
+ /**
+ * response the follow public account
+ * @param result if query success
+ * @param account public account
+ */
+ //void respGetPublicMenuInfoAccount(boolean result, in PublicAccounts account);
+
+ /**
+ * response the query recommend public accounts
+ * @param result if query success
+ * @param accountList the public account entity list
+ */
+ void respGetPublicRecommend(boolean result, in List<PublicAccounts> accountList);
+
+ /**
+ * response the set accept status
+ * @param result if query success
+ * @param uuid the public account uuid
+ */
+ void respSetAcceptStatus(boolean result, String uuid);
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/emoticon/EmojiPackageBO.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/emoticon/EmojiPackageBO.aidl
new file mode 100644
index 0000000..8c13101
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/emoticon/EmojiPackageBO.aidl
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.entity.emoticon;
+
+parcelable EmojiPackageBO;
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/emoticon/EmojiPackageBO.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/emoticon/EmojiPackageBO.java
new file mode 100644
index 0000000..d33f9d8
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/emoticon/EmojiPackageBO.java
@@ -0,0 +1,434 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.entity.emoticon;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+/**
+ * <p>Title: The emoticon package entity class</p>
+ * <p>Description: The emoticon package entity save some package info, such as package id, package name and so on</p>
+ * <p>Copyright: Copyright (c) 2014</p>
+ * <p>Company: pci-suntek</p>
+ *
+ * @author zrq
+ * @version 1.0
+ *
+ */
+public class EmojiPackageBO implements Parcelable
+{
+
+ /** The package id. */
+ private String packageId;
+
+ /** The package name. */
+ private String packageName;
+
+ /** The package icon. */
+ private String packageIcon;
+
+ /** The package size. */
+ private String packageSize;
+
+ /** The package state. 1 had buyed, 0 havnt buyed*/
+ private String packageState;
+
+ /** The package price. */
+ private String packagePrice;
+
+ /** The package use limited time. */
+ private String packageUseTime;
+
+ /** The package cp id. */
+ private String packageCpId;
+
+ /** The package cp name. */
+ private String packageCpName;
+
+ /** The package description. */
+ private String packageDesc;
+
+ /** The package zip icon. */
+ private String packageZipIcon;
+
+ /** The package zip name. */
+ private String packageZipName;
+
+ /** The package zip path. */
+ private String packageZipPath;
+
+ /**
+ * The parcel describe contents, defaul is 0.
+ *
+ * @return the int
+ */
+ @Override
+ public int describeContents()
+ {
+ return 0;
+ }
+
+ /**
+ * Write the emoticon package entity to parcel stream. Pay attention to read and
+ * write variables variables sequence should be consistent or not the
+ * correct results
+ *
+ * @param dest the dest
+ * @param flags the flags
+ */
+ @Override
+ public void writeToParcel( Parcel dest, int flags )
+ {
+ dest.writeString( packageId );
+ dest.writeString( packageName );
+ dest.writeString( packageIcon );
+ dest.writeString( packageSize );
+ dest.writeString( packageState );
+ dest.writeString( packagePrice );
+ dest.writeString( packageUseTime );
+ dest.writeString( packageCpId );
+ dest.writeString( packageCpName );
+ dest.writeString( packageDesc );
+ dest.writeString( packageZipIcon );
+ dest.writeString( packageZipName );
+ dest.writeString( packageZipPath );
+ }
+
+ /**
+ * Create the emoticon package entity from parcel stream. Pay attention to read and
+ * write variables variables sequence should be consistent or not the
+ * correct results
+ *
+ * @param source
+ * The parcel stream
+ */
+ public void readFromParcel( Parcel source )
+ {
+ packageId = source.readString();
+ packageName = source.readString();
+ packageIcon = source.readString();
+ packageSize = source.readString();
+ packageState = source.readString();
+ packagePrice = source.readString();
+ packageUseTime = source.readString();
+ packageCpId = source.readString();
+ packageCpName = source.readString();
+ packageDesc = source.readString();
+ packageZipIcon = source.readString();
+ packageZipName = source.readString();
+ packageZipPath = source.readString();
+ }
+
+ /** The parcel creator. */
+ public static final Parcelable.Creator<EmojiPackageBO> CREATOR = new Parcelable.Creator<EmojiPackageBO>() {
+ @Override
+ public EmojiPackageBO createFromParcel( Parcel source )
+ {
+ return new EmojiPackageBO( source );
+ }
+
+ @Override
+ public EmojiPackageBO[] newArray( int size )
+ {
+ return new EmojiPackageBO[ size ];
+ }
+ };
+
+ /**
+ * Instantiates a new emoji package bo.
+ */
+ public EmojiPackageBO()
+ {}
+
+ /**
+ * Instantiates a new emoji package bo.
+ *
+ * @param source the source
+ */
+ public EmojiPackageBO( Parcel source )
+ {
+ readFromParcel( source );
+ }
+
+ /**
+ * Gets the package id.
+ *
+ * @return the package id
+ */
+ public String getPackageId()
+ {
+ return packageId;
+ }
+
+ /**
+ * Sets the package id.
+ *
+ * @param packageId the new package id
+ */
+ public void setPackageId( String packageId )
+ {
+ this.packageId = packageId;
+ }
+
+ /**
+ * Gets the package name.
+ *
+ * @return the package name
+ */
+ public String getPackageName()
+ {
+ return packageName;
+ }
+
+ /**
+ * Sets the package name.
+ *
+ * @param packageName the new package name
+ */
+ public void setPackageName( String packageName )
+ {
+ this.packageName = packageName;
+ }
+
+ /**
+ * Gets the package icon.
+ *
+ * @return the package icon
+ */
+ public String getPackageIcon()
+ {
+ return packageIcon;
+ }
+
+ /**
+ * Sets the package icon.
+ *
+ * @param packageIcon the new package icon
+ */
+ public void setPackageIcon( String packageIcon )
+ {
+ this.packageIcon = packageIcon;
+ }
+
+ /**
+ * Gets the package size.
+ *
+ * @return the package size
+ */
+ public String getPackageSize()
+ {
+ return packageSize;
+ }
+
+ /**
+ * Sets the package size.
+ *
+ * @param packageSize the new package size
+ */
+ public void setPackageSize( String packageSize )
+ {
+ this.packageSize = packageSize;
+ }
+
+ /**
+ * Gets the package state.
+ *
+ * @return the package state
+ */
+ public String getPackageState()
+ {
+ return packageState;
+ }
+
+ /**
+ * Sets the package state.
+ *
+ * @param packageState the new package state
+ */
+ public void setPackageState( String packageState )
+ {
+ this.packageState = packageState;
+ }
+
+ /**
+ * Gets the package price.
+ *
+ * @return the package price
+ */
+ public String getPackagePrice()
+ {
+ return packagePrice;
+ }
+
+ /**
+ * Sets the package price.
+ *
+ * @param packagePrice the new package price
+ */
+ public void setPackagePrice( String packagePrice )
+ {
+ this.packagePrice = packagePrice;
+ }
+
+ /**
+ * Gets the package use limited time.
+ *
+ * @return the package use limited time
+ */
+ public String getPackageUseTime()
+ {
+ return packageUseTime;
+ }
+
+ /**
+ * Sets the package use limited time.
+ *
+ * @param packageUseTime the new package use limited time
+ */
+ public void setPackageUseTime( String packageUseTime )
+ {
+ this.packageUseTime = packageUseTime;
+ }
+
+ /**
+ * Gets the package cp id.
+ *
+ * @return the package cp id
+ */
+ public String getPackageCpId()
+ {
+ return packageCpId;
+ }
+
+ /**
+ * Sets the package cp id.
+ *
+ * @param packageCpId the new package cp id
+ */
+ public void setPackageCpId( String packageCpId )
+ {
+ this.packageCpId = packageCpId;
+ }
+
+ /**
+ * Gets the package cp name.
+ *
+ * @return the package cp name
+ */
+ public String getPackageCpName()
+ {
+ return packageCpName;
+ }
+
+ /**
+ * Sets the package cp name.
+ *
+ * @param packageCpName the new package cp name
+ */
+ public void setPackageCpName( String packageCpName )
+ {
+ this.packageCpName = packageCpName;
+ }
+
+ /**
+ * Gets the package description.
+ *
+ * @return the package description
+ */
+ public String getPackageDesc()
+ {
+ return packageDesc;
+ }
+
+ /**
+ * Sets the package description.
+ *
+ * @param packageDesc the new package description
+ */
+ public void setPackageDesc( String packageDesc )
+ {
+ this.packageDesc = packageDesc;
+ }
+
+ /**
+ * Gets the package zip icon.
+ *
+ * @return the package zip icon
+ */
+ public String getPackageZipIcon()
+ {
+ return packageZipIcon;
+ }
+
+ /**
+ * Sets the package zip icon.
+ *
+ * @param packageZipIcon the new package zip icon
+ */
+ public void setPackageZipIcon( String packageZipIcon )
+ {
+ this.packageZipIcon = packageZipIcon;
+ }
+
+ /**
+ * Gets the package zip name.
+ *
+ * @return the package zip name
+ */
+ public String getPackageZipName()
+ {
+ return packageZipName;
+ }
+
+ /**
+ * Sets the package zip name.
+ *
+ * @param packageZipName the new package zip name
+ */
+ public void setPackageZipName( String packageZipName )
+ {
+ this.packageZipName = packageZipName;
+ }
+
+ /**
+ * Gets the package zip path.
+ *
+ * @return the package zip path
+ */
+ public String getPackageZipPath()
+ {
+ return packageZipPath;
+ }
+
+ /**
+ * Sets the package zip path.
+ *
+ * @param packageZipPath the new package zip path
+ */
+ public void setPackageZipPath( String packageZipPath )
+ {
+ this.packageZipPath = packageZipPath;
+ }
+
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/emoticon/EmoticonBO.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/emoticon/EmoticonBO.aidl
new file mode 100644
index 0000000..c9acf16
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/emoticon/EmoticonBO.aidl
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.entity.emoticon;
+
+parcelable EmoticonBO;
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/emoticon/EmoticonBO.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/emoticon/EmoticonBO.java
new file mode 100644
index 0000000..2bf0bcb
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/emoticon/EmoticonBO.java
@@ -0,0 +1,335 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.entity.emoticon;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+/**
+ * <p>Title: The emoticon entity class</p>
+ * <p>Description: The emoticon entity save some emoticon info, such as emoticon id, name and so on</p>
+ * <p>Copyright: Copyright (c) 2014</p>
+ * <p>Company: pci-suntek</p>
+ *
+ * @author zrq
+ * @version 1.0
+ *
+ */
+public class EmoticonBO implements Parcelable
+{
+ /** The emoticon id. */
+ private String emoticonId;
+
+ /** The emoticon name. */
+ private String emoticonName;
+
+ /** The emoticon static url. */
+ private String emoticonStatic;
+
+ /** The emoticon dynamic url. */
+ private String emoticonDynamic;
+
+ /** The package id. */
+ private String packageId;
+
+ /** The static emoticon bytes. */
+ private byte[] emoticonStaticByte;
+
+ /** The dynamic emoticon bytes. */
+ private byte[] emoticonDynamicByte;
+
+ /** The user phone number. */
+ private String userPhone;
+
+ /** The is only browse. */
+ private boolean isOnlyBrowse;
+
+ /**
+ * The parcel describe contents, defaul is 0.
+ *
+ * @return the int
+ */
+ @Override
+ public int describeContents()
+ {
+ return 0;
+ }
+
+ /**
+ * Write the emoticon entity to parcel stream. Pay attention to read and
+ * write variables variables sequence should be consistent or not the
+ * correct results
+ *
+ * @param dest the dest
+ * @param flags the flags
+ */
+ @Override
+ public void writeToParcel( Parcel dest, int flags )
+ {
+ dest.writeString( emoticonId );
+ dest.writeString( emoticonName );
+ dest.writeString( emoticonStatic );
+ dest.writeString( emoticonDynamic );
+ dest.writeString( packageId );
+ dest.writeByteArray( emoticonStaticByte );
+ dest.writeByteArray( emoticonDynamicByte );
+ dest.writeString( userPhone );
+ dest.writeBooleanArray( new boolean[]{ isOnlyBrowse } );
+ }
+
+ /**
+ * Create the emoticon entity from parcel stream. Pay attention to read and
+ * write variables variables sequence should be consistent or not the
+ * correct results
+ *
+ * @param source
+ * The parcel stream
+ */
+ public void readFromParcel( Parcel source )
+ {
+ emoticonId = source.readString();
+ emoticonName = source.readString();
+ emoticonStatic = source.readString();
+ emoticonDynamic = source.readString();
+ packageId = source.readString();
+ source.readByteArray( emoticonStaticByte );
+ source.readByteArray( emoticonDynamicByte );
+ userPhone = source.readString();
+ boolean[] val = new boolean[ 1 ];
+ source.readBooleanArray( val );
+ isOnlyBrowse = val[ 0 ];
+ }
+
+ /** The parcel creator. */
+ public static final Parcelable.Creator<EmoticonBO> CREATOR = new Parcelable.Creator<EmoticonBO>() {
+ @Override
+ public EmoticonBO createFromParcel( Parcel source )
+ {
+ return new EmoticonBO( source );
+ }
+
+ @Override
+ public EmoticonBO[] newArray( int size )
+ {
+ return new EmoticonBO[ size ];
+ }
+ };
+
+ /**
+ * Instantiates a new emoticon entity.
+ */
+ public EmoticonBO()
+ {}
+
+ /**
+ * Instantiates a new emoticon entity.
+ *
+ * @param source the source parcel
+ */
+ public EmoticonBO( Parcel source )
+ {
+ readFromParcel( source );
+ }
+
+ /**
+ * Gets the emoticon id.
+ *
+ * @return the emoticon id
+ */
+ public String getEmoticonId()
+ {
+ return emoticonId;
+ }
+
+ /**
+ * Sets the emoticon id.
+ *
+ * @param emoticonId the new emoticon id
+ */
+ public void setEmoticonId( String emoticonId )
+ {
+ this.emoticonId = emoticonId;
+ }
+
+ /**
+ * Gets the emoticon name.
+ *
+ * @return the emoticon name
+ */
+ public String getEmoticonName()
+ {
+ return emoticonName;
+ }
+
+ /**
+ * Sets the emoticon name.
+ *
+ * @param emoticonName the new emoticon name
+ */
+ public void setEmoticonName( String emoticonName )
+ {
+ this.emoticonName = emoticonName;
+ }
+
+ /**
+ * Gets the emoticon static url.
+ *
+ * @return the emoticon static url
+ */
+ public String getEmoticonStatic()
+ {
+ return emoticonStatic;
+ }
+
+ /**
+ * Sets the emoticon static url.
+ *
+ * @param emoticonStatic the new emoticon static url
+ */
+ public void setEmoticonStatic( String emoticonStatic )
+ {
+ this.emoticonStatic = emoticonStatic;
+ }
+
+ /**
+ * Gets the emoticon dynamic url.
+ *
+ * @return the emoticon dynamic url
+ */
+ public String getEmoticonDynamic()
+ {
+ return emoticonDynamic;
+ }
+
+ /**
+ * Sets the emoticon dynamic url.
+ *
+ * @param emoticonDynamic the new emoticon dynamic url
+ */
+ public void setEmoticonDynamic( String emoticonDynamic )
+ {
+ this.emoticonDynamic = emoticonDynamic;
+ }
+
+ /**
+ * Gets the package id.
+ *
+ * @return the package id
+ */
+ public String getPackageId()
+ {
+ return packageId;
+ }
+
+ /**
+ * Sets the package id.
+ *
+ * @param packageId the new package id
+ */
+ public void setPackageId( String packageId )
+ {
+ this.packageId = packageId;
+ }
+
+ /**
+ * Gets the static emoticon bytes.
+ *
+ * @return the static emoticon bytes
+ */
+ public byte[] getEmoticonStaticByte()
+ {
+ return emoticonStaticByte;
+ }
+
+ /**
+ * Sets the static emoticon bytes.
+ *
+ * @param emoticonStaticByte the new static emoticon bytes
+ */
+ public void setEmoticonStaticByte( byte[] emoticonStaticByte )
+ {
+ this.emoticonStaticByte = emoticonStaticByte;
+ }
+
+ /**
+ * Gets the dynamic emoticon bytes.
+ *
+ * @return the dynamic emoticon bytes
+ */
+ public byte[] getEmoticonDynamicByte()
+ {
+ return emoticonDynamicByte;
+ }
+
+ /**
+ * Sets the dynamic emoticon bytes.
+ *
+ * @param emoticonDynamicByte the new dynamic emoticon bytes
+ */
+ public void setEmoticonDynamicByte( byte[] emoticonDynamicByte )
+ {
+ this.emoticonDynamicByte = emoticonDynamicByte;
+ }
+
+ /**
+ * Gets the user phone number.
+ *
+ * @return the user phone number
+ */
+ public String getUserPhone()
+ {
+ return userPhone;
+ }
+
+ /**
+ * Sets the user phone number.
+ *
+ * @param userPhone the new user phone number
+ */
+ public void setUserPhone( String userPhone )
+ {
+ this.userPhone = userPhone;
+ }
+
+ /**
+ * Checks if is only browse.
+ *
+ * @return true, if is only browse
+ */
+ public boolean isOnlyBrowse()
+ {
+ return isOnlyBrowse;
+ }
+
+ /**
+ * Sets the only browse.
+ *
+ * @param isOnlyBrowse the new only browse
+ */
+ public void setOnlyBrowse( boolean isOnlyBrowse )
+ {
+ this.isOnlyBrowse = isOnlyBrowse;
+ }
+
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/emoticon/EmoticonConstant.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/emoticon/EmoticonConstant.java
new file mode 100644
index 0000000..487b91a
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/emoticon/EmoticonConstant.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.entity.emoticon;
+
+/**
+ * The Class EmoticonConstant.
+ */
+public class EmoticonConstant {
+
+ /** The Constant EMO_STATIC_FILE. */
+ public static final int EMO_STATIC_FILE = 1;
+
+ /** The Constant EMO_DYNAMIC_FILE. */
+ public static final int EMO_DYNAMIC_FILE = 2;
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/emoticon/ResultBO.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/emoticon/ResultBO.aidl
new file mode 100644
index 0000000..672b600
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/emoticon/ResultBO.aidl
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.entity.emoticon;
+
+parcelable ResultBO;
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/emoticon/ResultBO.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/emoticon/ResultBO.java
new file mode 100644
index 0000000..e97913d
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/emoticon/ResultBO.java
@@ -0,0 +1,201 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.entity.emoticon;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+/**
+ * <p>
+ * Title: The emotion result entity class
+ * </p>
+ * <p>
+ * Description: The emotion result entity class, identify the result if succ and
+ * result additional object, different conditions have different result
+ * </p>
+ * <p>
+ * Copyright: Copyright (c) 2014
+ * </p>
+ * <p>
+ * Company: pci-suntek
+ * </p>
+ *
+ * @author zrq
+ * @version 1.0
+ *
+ */
+public class ResultBO implements Parcelable
+{
+ /** The result succ flag, true is succ, otherwise it is fail. */
+ private boolean resultFlag;
+
+ /** The result info. */
+ private String resultMsg;
+ /**
+ * The result additional object, different conditions have different result
+ * object.
+ */
+ private Object resultObj;
+
+ /**
+ * The parcel creator
+ */
+ public static final Parcelable.Creator<ResultBO> CREATOR = new Parcelable.Creator<ResultBO>() {
+ @Override
+ public ResultBO createFromParcel( Parcel source )
+ {
+ return new ResultBO( source );
+ }
+
+ @Override
+ public ResultBO[] newArray( int size )
+ {
+ return new ResultBO[ size ];
+ }
+ };
+
+ /**
+ * Instantiates a new result entity.
+ */
+ public ResultBO()
+ {}
+
+ /**
+ * Instantiates a new result entity from parcel.
+ *
+ * @param source the parcel source.
+ */
+ public ResultBO( Parcel source )
+ {
+ readFromParcel( source );
+ }
+
+ /**
+ * The result entity write to parcel stream. Pay attention to write
+ * variables and read the ordering of the variables should be consistent or
+ * not the correct results.
+ *
+ * @param dest
+ * The parcel stream
+ * @param flags
+ * The write to parcel flag
+ */
+ @Override
+ public void writeToParcel( Parcel dest, int flags )
+ {
+ dest.writeBooleanArray( new boolean[] { resultFlag } );
+ dest.writeString( resultMsg );
+ dest.writeValue( resultObj );
+ }
+
+ /**
+ * Create the result entity from parcel stream. Pay attention to read and
+ * write variables variables sequence should be consistent or not the
+ * correct results
+ *
+ * @param source
+ * The parcel stream
+ */
+ public void readFromParcel( Parcel source )
+ {
+ boolean[] val = new boolean[ 1 ];
+ source.readBooleanArray( val );
+ resultFlag = val[ 0 ];
+ resultMsg = source.readString();
+ resultObj = source.readValue( this.getClass().getClassLoader() );
+ }
+
+ /**
+ * The parcel describe contents, defaul is 0.
+ */
+ @Override
+ public int describeContents()
+ {
+ return 0;
+ }
+
+ /**
+ * Checks if is result succ
+ *
+ * @return true, if is result succ
+ */
+ public boolean isResultFlag()
+ {
+ return resultFlag;
+ }
+
+ /**
+ * Sets the result flag.
+ *
+ * @param resultFlag
+ * the new result flag
+ */
+ public void setResultFlag( boolean resultFlag )
+ {
+ this.resultFlag = resultFlag;
+ }
+
+ /**
+ * Gets the result info.
+ *
+ * @return the result info
+ */
+ public String getResultMsg()
+ {
+ return resultMsg;
+ }
+
+ /**
+ * Sets the result info.
+ *
+ * @param resultMsg
+ * the new result info.
+ */
+ public void setResultMsg( String resultMsg )
+ {
+ this.resultMsg = resultMsg;
+ }
+
+ /**
+ * Gets the result object.
+ *
+ * @return the result object
+ */
+ public Object getResultObj()
+ {
+ return resultObj;
+ }
+
+ /**
+ * Sets the result object.
+ *
+ * @param resultObj
+ * the new result object
+ */
+ public void setResultObj( Object resultObj )
+ {
+ this.resultObj = resultObj;
+ }
+
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/emoticon/UserBO.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/emoticon/UserBO.aidl
new file mode 100644
index 0000000..68020c2
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/emoticon/UserBO.aidl
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.entity.emoticon;
+
+parcelable UserBO;
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/emoticon/UserBO.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/emoticon/UserBO.java
new file mode 100644
index 0000000..1694f41
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/emoticon/UserBO.java
@@ -0,0 +1,205 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.entity.emoticon;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+/**
+ * <p>Title: The emotion user entity class</p>
+ * <p>Description: The emotion user entity save some user info</p>
+ * <p>Copyright: Copyright (c) 2014</p>
+ * <p>Company: pci-suntek</p>
+ *
+ * @author zrq
+ * @version 1.0
+ *
+ */
+public class UserBO implements Parcelable
+{
+ /** The user's phone number. */
+ private String userPhone;
+ /** The user's nickname. */
+ private String userNick;
+ /** The user login time. */
+ private String userLoginTime;
+ /** The user current state. */
+ private String userState;
+
+ /**
+ * The parcel describe contents, defaul is 0.
+ *
+ * @return the int
+ */
+ @Override
+ public int describeContents()
+ {
+ return 0;
+ }
+
+ /**
+ * Write the user entity to parcel stream. Pay attention to read and
+ * write variables variables sequence should be consistent or not the
+ * correct results
+ *
+ * @param dest the dest
+ * @param flags the flags
+ */
+ @Override
+ public void writeToParcel( Parcel dest, int flags )
+ {
+ dest.writeString( userPhone );
+ dest.writeString( userNick );
+ dest.writeString( userLoginTime );
+ dest.writeString( userState );
+ }
+
+ /**
+ * Create the user entity from parcel stream. Pay attention to read and
+ * write variables variables sequence should be consistent or not the
+ * correct results
+ *
+ * @param source
+ * The parcel stream
+ */
+ public void readFromParcel( Parcel source )
+ {
+ userPhone = source.readString();
+ userNick = source.readString();
+ userLoginTime = source.readString();
+ userState = source.readString();
+ }
+
+ /** The parcel creator. */
+ public static final Parcelable.Creator<UserBO> CREATOR = new Parcelable.Creator<UserBO>() {
+ @Override
+ public UserBO createFromParcel( Parcel source )
+ {
+ return new UserBO( source );
+ }
+
+ @Override
+ public UserBO[] newArray( int size )
+ {
+ return new UserBO[ size ];
+ }
+ };
+
+ /**
+ * Instantiates a new user entity.
+ */
+ public UserBO()
+ {}
+
+ /**
+ * Instantiates a new user entity from parcel.
+ *
+ * @param source the parcel source
+ */
+ public UserBO( Parcel source )
+ {
+ readFromParcel( source );
+ }
+
+ /**
+ * Gets the user phone number.
+ *
+ * @return the user phone number
+ */
+ public String getUserPhone()
+ {
+ return userPhone;
+ }
+
+ /**
+ * Sets the user phone number.
+ *
+ * @param userPhone the new user phone number
+ */
+ public void setUserPhone( String userPhone )
+ {
+ this.userPhone = userPhone;
+ }
+
+ /**
+ * Gets the user nickname.
+ *
+ * @return the user nickname
+ */
+ public String getUserNick()
+ {
+ return userNick;
+ }
+
+ /**
+ * Sets the user nickname.
+ *
+ * @param userNick the new user nickname
+ */
+ public void setUserNick( String userNick )
+ {
+ this.userNick = userNick;
+ }
+
+ /**
+ * Gets the user login time.
+ *
+ * @return the user login time
+ */
+ public String getUserLoginTime()
+ {
+ return userLoginTime;
+ }
+
+ /**
+ * Sets the user login time.
+ *
+ * @param userLoginTime the new user login time
+ */
+ public void setUserLoginTime( String userLoginTime )
+ {
+ this.userLoginTime = userLoginTime;
+ }
+
+ /**
+ * Gets the user state.
+ *
+ * @return the user state
+ */
+ public String getUserState()
+ {
+ return userState;
+ }
+
+ /**
+ * Sets the user state.
+ *
+ * @param userState the new user state
+ */
+ public void setUserState( String userState )
+ {
+ this.userState = userState;
+ }
+
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcloudfile/AuthNode.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcloudfile/AuthNode.aidl
new file mode 100644
index 0000000..63a56ab
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcloudfile/AuthNode.aidl
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.entity.mcloudfile;
+
+parcelable AuthNode;
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcloudfile/AuthNode.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcloudfile/AuthNode.java
new file mode 100644
index 0000000..0dc078a
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcloudfile/AuthNode.java
@@ -0,0 +1,284 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.entity.mcloudfile;
+
+import java.util.Map;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+public class AuthNode implements Parcelable
+{
+ private byte[] captcha;
+ private boolean isOffline;
+ private AuthNodeUpdateInfo updateInfo;
+ private int timeout;
+ private UserType userType;
+ private PwdType pwdType;
+ private RegType regType;
+ private ResetType resetType;
+ private Map<String, String> fields;
+
+ public AuthNode()
+ {}
+
+ public AuthNode( Parcel source )
+ {
+ readFromParcel( source );
+ }
+
+ /**
+ * The parcel describe contents, defaul is 0.
+ *
+ * @return the int
+ */
+ @Override
+ public int describeContents()
+ {
+ return 0;
+ }
+
+ /**
+ * Write the mcloud result entity to parcel stream. Pay attention to read and
+ * write variables variables sequence should be consistent or not the
+ * correct results
+ *
+ * @param dest
+ * the dest parcel stream
+ * @param flags
+ * the flags
+ */
+ @Override
+ public void writeToParcel( Parcel dest, int flags )
+ {
+ dest.writeByteArray( captcha );
+ dest.writeBooleanArray( new boolean[]{ isOffline } );
+ dest.writeValue( updateInfo );
+ dest.writeInt( timeout );
+ dest.writeInt( userType.ordinal() );
+ dest.writeInt( pwdType.ordinal() );
+ dest.writeInt( regType.ordinal() );
+ dest.writeInt( resetType.ordinal() );
+ dest.writeMap( fields );
+ }
+
+ /**
+ * Create the mcloud result entity from parcel stream. Pay attention to read and
+ * write variables variables sequence should be consistent or not the
+ * correct results
+ *
+ * @param source
+ * The parcel stream
+ */
+ @SuppressWarnings( "unchecked" )
+ public void readFromParcel( Parcel source )
+ {
+ captcha = source.createByteArray();
+ boolean[] val = new boolean[ 1 ];
+ source.readBooleanArray( val );
+ isOffline = val[ 0 ];
+ updateInfo = ( AuthNodeUpdateInfo )source.readValue( this.getClass().getClassLoader() );
+ userType = UserType.valueOf( source.readInt() );
+ pwdType = PwdType.valueOf( source.readInt() );
+ regType = RegType.valueOf( source.readInt() );
+ resetType = ResetType.valueOf( source.readInt() );
+ fields = source.readHashMap( this.getClass().getClassLoader() );
+ }
+
+ /** The parcel creator. */
+ public static final Parcelable.Creator<AuthNode> CREATOR = new Parcelable.Creator<AuthNode>() {
+ @Override
+ public AuthNode createFromParcel( Parcel source )
+ {
+ return new AuthNode( source );
+ }
+
+ @Override
+ public AuthNode[] newArray( int size )
+ {
+ return new AuthNode[ size ];
+ }
+ };
+
+
+ public byte[] getCaptcha()
+ {
+ return captcha;
+ }
+
+ public void setCaptcha( byte[] captcha )
+ {
+ this.captcha = captcha;
+ }
+
+ public boolean isOffline()
+ {
+ return isOffline;
+ }
+
+ public void setOffline( boolean isOffline )
+ {
+ this.isOffline = isOffline;
+ }
+
+ public AuthNodeUpdateInfo getUpdateInfo()
+ {
+ return updateInfo;
+ }
+
+ public void setUpdateInfo( AuthNodeUpdateInfo updateInfo )
+ {
+ this.updateInfo = updateInfo;
+ }
+
+ public int getTimeout()
+ {
+ return timeout;
+ }
+
+ public void setTimeout( int timeout )
+ {
+ this.timeout = timeout;
+ }
+
+ public UserType getUserType()
+ {
+ return userType;
+ }
+
+ public void setUserType( UserType userType )
+ {
+ this.userType = userType;
+ }
+
+ public PwdType getPwdType()
+ {
+ return pwdType;
+ }
+
+ public void setPwdType( PwdType pwdType )
+ {
+ this.pwdType = pwdType;
+ }
+
+ public RegType getRegType()
+ {
+ return regType;
+ }
+
+ public void setRegType( RegType regType )
+ {
+ this.regType = regType;
+ }
+
+ public ResetType getResetType()
+ {
+ return resetType;
+ }
+
+ public void setResetType( ResetType resetType )
+ {
+ this.resetType = resetType;
+ }
+
+ public Map<String, String> getFields()
+ {
+ return fields;
+ }
+
+ public void setFields( Map<String, String> fields )
+ {
+ this.fields = fields;
+ }
+
+ public static enum PwdType {
+ encrypted,
+
+ original,
+
+ dynamic,
+
+ thirdParty;
+
+ public static PwdType valueOf( int ordinal )
+ {
+ if( ordinal < 0 || ordinal >= values().length )
+ {
+ throw new IndexOutOfBoundsException( "Invalid ordinal" );
+ }
+
+ return values()[ ordinal ];
+ }
+ }
+
+ public static enum RegType {
+ cellPhone;
+
+ public static RegType valueOf( int ordinal )
+ {
+ if( ordinal < 0 || ordinal >= values().length )
+ {
+ throw new IndexOutOfBoundsException( "Invalid ordinal" );
+ }
+
+ return values()[ ordinal ];
+ }
+ }
+
+ public static enum ResetType {
+ cellPhone,
+
+ thirdParty;
+
+ public static ResetType valueOf( int ordinal )
+ {
+ if( ordinal < 0 || ordinal >= values().length )
+ {
+ throw new IndexOutOfBoundsException( "Invalid ordinal" );
+ }
+
+ return values()[ ordinal ];
+ }
+ }
+
+ public static enum UserType {
+ account,
+
+ bindMobile,
+
+ bindEmail,
+
+ email;
+
+ public static UserType valueOf( int ordinal )
+ {
+ if( ordinal < 0 || ordinal >= values().length )
+ {
+ throw new IndexOutOfBoundsException( "Invalid ordinal" );
+ }
+
+ return values()[ ordinal ];
+ }
+ }
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcloudfile/AuthNodeUpdateInfo.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcloudfile/AuthNodeUpdateInfo.aidl
new file mode 100644
index 0000000..5c1e618
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcloudfile/AuthNodeUpdateInfo.aidl
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.entity.mcloudfile;
+
+parcelable AuthNodeUpdateInfo;
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcloudfile/AuthNodeUpdateInfo.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcloudfile/AuthNodeUpdateInfo.java
new file mode 100644
index 0000000..27db0e2
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcloudfile/AuthNodeUpdateInfo.java
@@ -0,0 +1,196 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.entity.mcloudfile;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+public class AuthNodeUpdateInfo implements Parcelable
+{
+ private String name;
+ private String version;
+ private String description;
+ private String url;
+ private String forceupdate;
+ private String md5;
+ private String size;
+ private String updateMode;
+
+ public AuthNodeUpdateInfo()
+ {}
+
+ public AuthNodeUpdateInfo( Parcel source )
+ {
+ readFromParcel( source );
+ }
+
+ /**
+ * The parcel describe contents, defaul is 0.
+ *
+ * @return the int
+ */
+ @Override
+ public int describeContents()
+ {
+ return 0;
+ }
+
+ /**
+ * Write the auth node update info entity to parcel stream. Pay attention to read and
+ * write variables variables sequence should be consistent or not the
+ * correct results
+ *
+ * @param dest
+ * the dest parcel stream
+ * @param flags
+ * the flags
+ */
+ @Override
+ public void writeToParcel( Parcel dest, int flags )
+ {
+ dest.writeString( name );
+ dest.writeString( version );
+ dest.writeString( description );
+ dest.writeString( url );
+ dest.writeString( forceupdate );
+ dest.writeString( md5 );
+ dest.writeString( size );
+ dest.writeString( updateMode );
+ }
+
+ /**
+ * Create the auth node update info entity from parcel stream. Pay attention to read and
+ * write variables variables sequence should be consistent or not the
+ * correct results
+ *
+ * @param source
+ * The parcel stream
+ */
+ public void readFromParcel( Parcel source )
+ {
+ name = source.readString();
+ version = source.readString();
+ description = source.readString();
+ url = source.readString();
+ forceupdate = source.readString();
+ md5 = source.readString();
+ size = source.readString();
+ updateMode = source.readString();
+ }
+
+ /** The parcel creator. */
+ public static final Parcelable.Creator<AuthNodeUpdateInfo> CREATOR = new Parcelable.Creator<AuthNodeUpdateInfo>() {
+ @Override
+ public AuthNodeUpdateInfo createFromParcel( Parcel source )
+ {
+ return new AuthNodeUpdateInfo( source );
+ }
+
+ @Override
+ public AuthNodeUpdateInfo[] newArray( int size )
+ {
+ return new AuthNodeUpdateInfo[ size ];
+ }
+ };
+
+ public String getName()
+ {
+ return name;
+ }
+
+ public void setName( String name )
+ {
+ this.name = name;
+ }
+
+ public String getVersion()
+ {
+ return version;
+ }
+
+ public void setVersion( String version )
+ {
+ this.version = version;
+ }
+
+ public String getDescription()
+ {
+ return description;
+ }
+
+ public void setDescription( String description )
+ {
+ this.description = description;
+ }
+
+ public String getUrl()
+ {
+ return url;
+ }
+
+ public void setUrl( String url )
+ {
+ this.url = url;
+ }
+
+ public String getForceupdate()
+ {
+ return forceupdate;
+ }
+
+ public void setForceupdate( String forceupdate )
+ {
+ this.forceupdate = forceupdate;
+ }
+
+ public String getMd5()
+ {
+ return md5;
+ }
+
+ public void setMd5( String md5 )
+ {
+ this.md5 = md5;
+ }
+
+ public String getSize()
+ {
+ return size;
+ }
+
+ public void setSize( String size )
+ {
+ this.size = size;
+ }
+
+ public String getUpdateMode()
+ {
+ return updateMode;
+ }
+
+ public void setUpdateMode( String updateMode )
+ {
+ this.updateMode = updateMode;
+ }
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcloudfile/ConfNode.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcloudfile/ConfNode.aidl
new file mode 100644
index 0000000..db782b2
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcloudfile/ConfNode.aidl
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.entity.mcloudfile;
+
+parcelable ConfNode;
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcloudfile/ConfNode.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcloudfile/ConfNode.java
new file mode 100644
index 0000000..505518a
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcloudfile/ConfNode.java
@@ -0,0 +1,121 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.entity.mcloudfile;
+
+import java.util.Map;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+public class ConfNode implements Parcelable
+{
+ private String version;
+ private Map<String, String> fields;
+
+ public ConfNode()
+ {}
+
+ public ConfNode( Parcel source )
+ {
+ readFromParcel( source );
+ }
+
+ /**
+ * The parcel describe contents, defaul is 0.
+ *
+ * @return the int
+ */
+ @Override
+ public int describeContents()
+ {
+ return 0;
+ }
+
+ /**
+ * Write the configure node entity to parcel stream. Pay attention to read and
+ * write variables variables sequence should be consistent or not the
+ * correct results
+ *
+ * @param dest
+ * the dest parcel stream
+ * @param flags
+ * the flags
+ */
+ @Override
+ public void writeToParcel( Parcel dest, int flags )
+ {
+ dest.writeString( version );
+ dest.writeMap( fields );
+ }
+
+ /**
+ * Create the configure node entity from parcel stream. Pay attention to read and
+ * write variables variables sequence should be consistent or not the
+ * correct results
+ *
+ * @param source
+ * The parcel stream
+ */
+ @SuppressWarnings( "unchecked" )
+ public void readFromParcel( Parcel source )
+ {
+ version = source.readString();
+ fields = source.readHashMap( this.getClass().getClassLoader() );
+ }
+
+ /** The parcel creator. */
+ public static final Parcelable.Creator<ConfNode> CREATOR = new Parcelable.Creator<ConfNode>() {
+ @Override
+ public ConfNode createFromParcel( Parcel source )
+ {
+ return new ConfNode( source );
+ }
+
+ @Override
+ public ConfNode[] newArray( int size )
+ {
+ return new ConfNode[ size ];
+ }
+ };
+
+ public String getVersion()
+ {
+ return version;
+ }
+
+ public void setVersion( String version )
+ {
+ this.version = version;
+ }
+
+ public Map<String, String> getFields()
+ {
+ return fields;
+ }
+
+ public void setFields( Map<String, String> fields )
+ {
+ this.fields = fields;
+ }
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcloudfile/Config.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcloudfile/Config.aidl
new file mode 100644
index 0000000..daed9ab
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcloudfile/Config.aidl
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.entity.mcloudfile;
+
+parcelable Config;
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcloudfile/Config.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcloudfile/Config.java
new file mode 100644
index 0000000..d256fcd
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcloudfile/Config.java
@@ -0,0 +1,468 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.entity.mcloudfile;
+
+/**
+ * The Class Config.
+ */
+public class Config {
+
+ /** The Constant USER_ACCOUNT. */
+ public static final String USER_ACCOUNT = "user_account";
+
+ /** The Constant USER_PASS_SHA. */
+ public static final String USER_PASS_SHA = "user_pass_sha";
+
+ /** The Constant USER_TOKEN. */
+ public static final String USER_TOKEN = "user_token";
+
+ /** The Constant USER_TOKEN_EXPIRE. */
+ public static final String USER_TOKEN_EXPIRE = "user_token_expire";
+
+ /** The Constant USER_ACCESS_TOKEN. */
+ public static final String USER_ACCESS_TOKEN = "userext_accessToken";
+
+ /** The Constant USER_AUTHOR_KEY. */
+ public static final String USER_AUTHOR_KEY = "user_author_key";
+
+ /** The Constant USER_SYSID. */
+ public static final String USER_SYSID = "user_sysid";
+
+ /** The Constant USER_LOGIN_ID. */
+ public static final String USER_LOGIN_ID = "user_loginid";
+
+ /** The Constant USER_PINTYPE. */
+ public static final String USER_PINTYPE = "user_pintype";
+
+ /** The Constant USER_SECURE1. */
+ public static final String USER_SECURE1 = "user_secure1";
+
+ /** The Constant USER_SECURE2. */
+ public static final String USER_SECURE2 = "user_secure2";
+
+ /** The Constant ADDR_AAS. */
+ public static final String ADDR_AAS = "addr_aas";
+
+ /** The Constant ADDR_AAS_HTTPS. */
+ public static final String ADDR_AAS_HTTPS = "addr_aas_https";
+
+ /** The Constant ADDR_RIF. */
+ public static final String ADDR_RIF = "addr_rif";
+
+ /** The Constant ADDR_RIF_HTTPS. */
+ public static final String ADDR_RIF_HTTPS = "addr_rif_https";
+
+ /** The Constant INFO_MARKET_URL. */
+ public static final String INFO_MARKET_URL = "Info_marketurl";
+
+ /** The Constant INFO_FEEDBACK_URL. */
+ public static final String INFO_FEEDBACK_URL = "Info_fburl";
+
+ /** The Constant INFO_CYTXL_URL. */
+ public static final String INFO_CYTXL_URL = "Info_cytxlurl";
+
+ /** The Constant ADDR_IMS. */
+ public static final String ADDR_IMS = "addr_ims";
+
+ /** The Constant ADDR_INNERIMS. */
+ public static final String ADDR_INNERIMS = "addr_innerims";
+
+ /** The Constant ADDR_XMPP. */
+ public static final String ADDR_XMPP = "addr_xmpp";
+
+ /** The Constant ADDR_XMPPADAPTOR. */
+ public static final String ADDR_XMPPADAPTOR = "addr_xmppadaptor";
+
+ /** The Constant ADDR_AP. */
+ public static final String ADDR_AP = "addr_ap";
+
+ /** The Constant ADDR_CABSYNCML. */
+ public static final String ADDR_CABSYNCML = "addr_cabsyncml";
+
+ /** The Constant ADDR_CABGROUP. */
+ public static final String ADDR_CABGROUP = "addr_cabgroup";
+
+ /** The Constant ADDR_CAB_HTTP. */
+ public static final String ADDR_CAB_HTTP = "addr_cab_http";
+
+ /** The Constant ADDR_CAB_HTTPS. */
+ public static final String ADDR_CAB_HTTPS = "addr_cab_https";
+
+ /** The Constant ADDR_TEP. */
+ public static final String ADDR_TEP = "addr_tep";
+
+ /** The Constant ADDR_VOIPSTUN. */
+ public static final String ADDR_VOIPSTUN = "addr_voipstun";
+
+ /** The Constant ADDR_PORTAL. */
+ public static final String ADDR_PORTAL = "addr_portal";
+
+ /** The Constant ADDR_LIVEUPDATE. */
+ public static final String ADDR_LIVEUPDATE = "addr_liveupdate";
+
+ /** The Constant ADDR_SNSCONNECTOR. */
+ public static final String ADDR_SNSCONNECTOR = "addr_snsconnector";
+
+ /** The Constant ADDR_BOSH. */
+ public static final String ADDR_BOSH = "addr_bosh";
+
+ /** The Constant ADDR_CHATSIPURI. */
+ public static final String ADDR_CHATSIPURI = "addr_chatsipuri";
+
+ /** The Constant ADDR_SVNLIST. */
+ public static final String ADDR_SVNLIST = "addr_svnlist";
+
+ /** The Constant CONF_IMSDOMAIN. */
+ public static final String CONF_IMSDOMAIN = "conf_imsdomain";
+
+ /** The Constant CONF_IMSUSER. */
+ public static final String CONF_IMSUSER = "conf_imsuser";
+
+ /** The Constant CONF_IMSPWD. */
+ public static final String CONF_IMSPWD = "conf_imspwd";
+
+ /** The Constant CONF_SVNUSER. */
+ public static final String CONF_SVNUSER = "conf_svnuser";
+
+ /** The Constant CONF_SVNPWD. */
+ public static final String CONF_SVNPWD = "conf_svnpwd";
+
+ /** The Constant CONF_POPUP. */
+ public static final String CONF_POPUP = "conf_popup";
+
+ /** The Constant CONF_SMS_SCHEDULE. */
+ public static final String CONF_SMS_SCHEDULE = "conf_sms_schedule";
+
+ /** The Constant CONF_SMS_MAXSIZE. */
+ public static final String CONF_SMS_MAXSIZE = "conf_sms_maxsize";
+
+ /** The Constant CONF_MMS_MAXSIZE. */
+ public static final String CONF_MMS_MAXSIZE = "conf_mms_maxsize";
+
+ /** The Constant CONF_EMAIL_MAXSIZE. */
+ public static final String CONF_EMAIL_MAXSIZE = "conf_email_maxsize";
+
+ /** The Constant CONF_RVCENABLED. */
+ public static final String CONF_RVCENABLED = "conf_rvcenabled";
+
+ /** The Constant CONF_HBTIME. */
+ public static final String CONF_HBTIME = "conf_hbtime";
+
+ /** The Constant CONF_ORDERSTAT. */
+ public static final String CONF_ORDERSTAT = "conf_orderstat";
+
+ /** The Constant CONF_ENDDATE. */
+ public static final String CONF_ENDDATE = "conf_enddate";
+
+ /** The Constant CONF_PUBKEY. */
+ public static final String CONF_PUBKEY = "conf_pubkey";
+
+ /** The Constant CONF_CTDACCESSCODE. */
+ public static final String CONF_CTDACCESSCODE = "conf_ctdaccesscode";
+
+ /** The Constant CONF_SERVER_VER. */
+ public static final String CONF_SERVER_VER = "conf_server_ver";
+
+ /** The Constant INFO. */
+ public static final String INFO = "Info_";
+
+ /** The Constant USER_NDUID. */
+ public static final String USER_NDUID = "user_nduid";
+
+ /** The Constant USER_EXT_PASSID. */
+ public static final String USER_EXT_PASSID = "Userext_passID";
+
+ /** The Constant USER_EXT. */
+ public static final String USER_EXT = "Userext_";
+
+ /** The Constant USER_HTTPS_AUTH. */
+ public static final String USER_HTTPS_AUTH = "use_https_auth";
+
+ /** The Constant USER_HTTPS_HICLOUD_FILE. */
+ public static final String USER_HTTPS_HICLOUD_FILE = "use_https_hicloud_file";
+
+ /** The Constant USER_HTTPS_HICLOUD_MSG. */
+ public static final String USER_HTTPS_HICLOUD_MSG = "use_https_hicloud_msg";
+
+ /** The Constant USER_HTTPS_HICLOUD_SHARE. */
+ public static final String USER_HTTPS_HICLOUD_SHARE = "use_https_hicloud_share";
+
+ /** The Constant USER_HTTPS_HICLOUD_TRANS. */
+ public static final String USER_HTTPS_HICLOUD_TRANS = "use_https_hicloud_trans";
+
+ /** The Constant USER_HTTPS_HICLOUD_CONF. */
+ public static final String USER_HTTPS_HICLOUD_CONF = "use_https_hicloud_conf";
+
+ /** The Constant USER_HTTPS_HICLOUD_CONTACT. */
+ public static final String USER_HTTPS_HICLOUD_CONTACT = "use_https_hicloud_contact";
+
+ /** The Constant USER_HTTPS_ALL. */
+ public static final String USER_HTTPS_ALL = "use_https_all";
+
+ /** The Constant OSE_TATA_HTTPS_NEED. */
+ public static final String OSE_TATA_HTTPS_NEED = "ose_tata_https_need";
+
+ /** The Constant HICLOUD_USERROOT_ID. */
+ public static final String HICLOUD_USERROOT_ID = "hiCloud_userroot_id";
+
+ /** The Constant HICLOUD_FOLDER_PRESET_ID. */
+ public static final String HICLOUD_FOLDER_PRESET_ID = "hiCloud_Folder_Preset_ID";
+
+ /** The Constant HICLOUD_FLASHUPLOAD. */
+ public static final String HICLOUD_FLASHUPLOAD = "hiCloud_flashupload";
+
+ /** The Constant HICLOUD_FILE_EXTINFO. */
+ public static final String HICLOUD_FILE_EXTINFO = "hiCloud_File_ExtInfo";
+
+ /** The Constant MCS_PROGRESSINTERVAL. */
+ public static final String MCS_PROGRESSINTERVAL = "Mcs_ProgressInterval";
+
+ /** The Constant HICLOUD_GZIP_DOWNLOAD. */
+ public static final String HICLOUD_GZIP_DOWNLOAD = "hiCloud_GZip_Download";
+
+ /** The Constant HICLOUD_GZIP_UPLOAD. */
+ public static final String HICLOUD_GZIP_UPLOAD = "hiCloud_GZip_Upload";
+
+ /** The Constant MCS_GZIP_REQUEST. */
+ public static final String MCS_GZIP_REQUEST = "Mcs_GZip_Request";
+
+ /** The Constant MCS_GZIP_RESPONSE. */
+ public static final String MCS_GZIP_RESPONSE = "Mcs_GZip_Response";
+
+ /** The Constant HICLOUD_FILEOPRLISTDIRSYNCTYPE. */
+ public static final String HICLOUD_FILEOPRLISTDIRSYNCTYPE = "hiCloud_FileOprListDirSyncType";
+
+ /** The Constant HICLOUD_FILEOPRLISTDIRRATE. */
+ public static final String HICLOUD_FILEOPRLISTDIRRATE = "hiCloud_FileOprListDirRate";
+
+ /** The Constant HICLOUD_UPLOAD_EXPIRETIME. */
+ public static final String HICLOUD_UPLOAD_EXPIRETIME = "hiCloud_Upload_ExpireTime";
+
+ /** The Constant HICLOUD_SYNCACHEOPRETION. */
+ public static final String HICLOUD_SYNCACHEOPRETION = "hiCloud_SyncCacheOperation";
+
+ /** The Constant HICLOUD_SYNCCACHETIMEOUT. */
+ public static final String HICLOUD_SYNCCACHETIMEOUT = "hiCloud_SyncCacheTimeout";
+
+ /** The Constant AUTH_TOKEN_TIMEOUT. */
+ public static final String AUTH_TOKEN_TIMEOUT = "Auth_Token_Timeout";
+
+ /** The Constant MCS_CONFLICTSTATUS_REPORT. */
+ public static final String MCS_CONFLICTSTATUS_REPORT = "Mcs_ConflictStatus_Report";
+
+ /** The Constant HICLOUD_MSG_BACKUP_THREADS. */
+ public static final String HICLOUD_MSG_BACKUP_THREADS = "HiCloudMsgBackupThreads";
+
+ /** The Constant HICLOUD_MSG_IGNOREMMS. */
+ public static final String HICLOUD_MSG_IGNOREMMS = "HiCloud_Msg_IgnorMMS";
+
+ /** The Constant HICLOUD_MSG_IGNORDRAF. */
+ public static final String HICLOUD_MSG_IGNORDRAF = "HiCloud_Msg_IgnorDraft";
+
+ /** The Constant SMS_BACKUP_BATCH_COUNT. */
+ public static final String SMS_BACKUP_BATCH_COUNT = "SmsBackupBatchCount";
+
+ /** The Constant HICLOUD_MSG_DELSESSIONMSGS. */
+ public static final String HICLOUD_MSG_DELSESSIONMSGS = "HiCloud_Msg_DelSessionMsgs";
+
+ /** The Constant HICLOUD_MSG_DELSESSIONMAX. */
+ public static final String HICLOUD_MSG_DELSESSIONMAX = "HiCloud_Msg_DelSessionMax";
+
+ /** The Constant STATUS_NETWORK_ID. */
+ public static final String STATUS_NETWORK_ID = "Status_Network_ID";
+
+ /** The Constant STATUS_NETWORK_TYPE. */
+ public static final String STATUS_NETWORK_TYPE = "Status_Network_Type";
+
+ /** The Constant STATUS_NETWORK_STATE. */
+ public static final String STATUS_NETWORK_STATE = "Status_Network_State";
+
+ /** The Constant NETMONITOR_STABLEDELAY_WIFI. */
+ public static final String NETMONITOR_STABLEDELAY_WIFI = "NetMonitor_StableDelay_WIFI";
+
+ /** The Constant NETMONITOR_STABLESIGNAL_WIFI. */
+ public static final String NETMONITOR_STABLESIGNAL_WIFI = "NetMonitor_StableSignal_WIFI";
+
+ /** The Constant NETMONITOR_STABLEDELAY_MOBILE. */
+ public static final String NETMONITOR_STABLEDELAY_MOBILE = "NetMonitor_StableDelay_Mobile";
+
+ /** The Constant NETMONITOR_STABLESIGNAL_MOBILE. */
+ public static final String NETMONITOR_STABLESIGNAL_MOBILE = "NetMonitor_StableSignal_Mobile";
+
+ /** The Constant HICLOUD_TRANSTASK_MAXTOTAL. */
+ public static final String HICLOUD_TRANSTASK_MAXTOTAL = "HiCloud_TransTask_MaxTotal";
+
+ /** The Constant HICLOUD_FILETASK_THREADS. */
+ public static final String HICLOUD_FILETASK_THREADS = "HiCloud_FileTask_Threads";
+
+ /** The Constant HICLOUD_FILETASK_OVERWRITE. */
+ public static final String HICLOUD_FILETASK_OVERWRITE = "HiCloud_FileTask_Overwrite";
+
+ /** The Constant HICLOUD_BAKTASK_OVERWRITE. */
+ public static final String HICLOUD_BAKTASK_OVERWRITE = "HiCloud_BakTask_Overwrite";
+
+ /** The Constant HICLOUD_TRANSTASK_PHOTOQUALITY. */
+ public static final String HICLOUD_TRANSTASK_PHOTOQUALITY = "HiCloud_TransTask_PhotoQuality";
+
+ /** The Constant HICLOUD_TRANSTASK_ORDER_START. */
+ public static final String HICLOUD_TRANSTASK_ORDER_START = "HiCloud_TransTask_Order_Start";
+
+ /** The Constant HICLOUD_TRANSTASK_ORDER_PAUSE. */
+ public static final String HICLOUD_TRANSTASK_ORDER_PAUSE = "HiCloud_TransTask_Order_Pause";
+
+ /** The Constant HICLOUD_TRANSTASK_ORDER_FAIL. */
+ public static final String HICLOUD_TRANSTASK_ORDER_FAIL = "HiCloud_TransTask_Order_Fail";
+
+ /** The Constant HICLOUD_TRANSTASK_DELTMPFILE. */
+ public static final String HICLOUD_TRANSTASK_DELTMPFILE = "HiCloud_TransTask_DelTmpFile";
+
+ /** The Constant MCS_NETWORK_RETRYCOUNT. */
+ public static final String MCS_NETWORK_RETRYCOUNT = "Mcs_Network_RetryCount";
+
+ /** The Constant HICLOUD_X_USERAGENT. */
+ public static final String HICLOUD_X_USERAGENT = "hiCloud_X_UserAgent";
+
+ /** The Constant MCS_REQUEST_SOCKETBUFFER. */
+ public static final String MCS_REQUEST_SOCKETBUFFER = "Mcs_Request_SocketBuffer";
+
+ /** The Constant HICLOUD_TIMELINE_BACKUP_PHOTO. */
+ public static final String HICLOUD_TIMELINE_BACKUP_PHOTO = "HiCloud_TimeLine_Backup_Photo";
+
+ /** The Constant HICLOUD_TIMELINE_BACKUP_APP. */
+ public static final String HICLOUD_TIMELINE_BACKUP_APP = "HiCloud_TimeLine_Backup_App";
+
+ /** The Constant HICLOUD_TIMELINE_BACKUP_VIDEO. */
+ public static final String HICLOUD_TIMELINE_BACKUP_VIDEO = "HiCloud_TimeLine_Backup_Video";
+
+ /** The Constant HICLOUD_TIMELINE_RESTORE_PHOTO. */
+ public static final String HICLOUD_TIMELINE_RESTORE_PHOTO = "HiCloud_TimeLine_Restore_Photo";
+
+ /** The Constant HICLOUD_TIMELINE_RESTORE_APP. */
+ public static final String HICLOUD_TIMELINE_RESTORE_APP = "HiCloud_TimeLine_Restore_App";
+
+ /** The Constant HICLOUD_TIMELINE_RESTORE_VIDEO. */
+ public static final String HICLOUD_TIMELINE_RESTORE_VIDEO = "HiCloud_TimeLine_Restore_Video";
+
+ /** The Constant CAB_HTTPS_NEED. */
+ public static final String CAB_HTTPS_NEED = "cab_https_need";
+
+ /** The Constant HICLOUD_SYNCACHEOPRETION_DEF. */
+ public static final int HICLOUD_SYNCACHEOPRETION_DEF = 1;
+
+ /** The Constant HICLOUD_SYNCACHEOPRETION_LOC. */
+ public static final int HICLOUD_SYNCACHEOPRETION_LOC = 0;
+
+ /** The Constant HICLOUD_SYNCACHEOPRETION_SYNC. */
+ public static final int HICLOUD_SYNCACHEOPRETION_SYNC = 2;
+
+ /** The Constant HICLOUD_FILEOPRLISTDIRSYNCTYPE_DEF. */
+ public static final int HICLOUD_FILEOPRLISTDIRSYNCTYPE_DEF = 0;
+
+ /** The Constant HICLOUD_FILEOPRLISTDIRSYNCTYPE_ROOT. */
+ public static final int HICLOUD_FILEOPRLISTDIRSYNCTYPE_ROOT = 1;
+
+ /** The Constant HICLOUD_FILEOPRLISTDIRRATE_DEF. */
+ public static final int HICLOUD_FILEOPRLISTDIRRATE_DEF = 200;
+
+ /** The Constant HICLOUD_UPLOAD_EXPIRETIME_DEF. */
+ public static final int HICLOUD_UPLOAD_EXPIRETIME_DEF = 7;
+
+ /** The Constant HICLOUD_SYNCCACHETIMEOUT_DEF. */
+ public static final int HICLOUD_SYNCCACHETIMEOUT_DEF = 60;
+
+ /** The Constant HICLOUD_PROGRESSINTERVAL_DEF. */
+ public static final int HICLOUD_PROGRESSINTERVAL_DEF = 1000;
+
+ /** The Constant AUTH_TOKEN_TIMEOUT_DEF. */
+ public static final int AUTH_TOKEN_TIMEOUT_DEF = 600;
+
+ /** The Constant HICLOUD_CONFLICTSTATUS_REPORT_NO. */
+ public static final int HICLOUD_CONFLICTSTATUS_REPORT_NO = 0;
+
+ /** The Constant HICLOUD_CONFLICTSTATUS_REPORT_YES. */
+ public static final int HICLOUD_CONFLICTSTATUS_REPORT_YES = 1;
+
+ /** The Constant HICLOUD_SDK_VERSION. */
+ public static final String HICLOUD_SDK_VERSION = "SDKVersion";
+
+ /** The Constant HICLOUD_SDK_VERSION_FILE. */
+ public static final String HICLOUD_SDK_VERSION_FILE = "SDKVersionFILE";
+
+ /** The Constant HICLOUD_SDK_VERSION_MSG. */
+ public static final String HICLOUD_SDK_VERSION_MSG = "SDKVersionMSG";
+
+ /** The Constant HICLOUD_APP_CHANNEL. */
+ public static final String HICLOUD_APP_CHANNEL = "AppChannel";
+
+ /** The Constant MCS_APPLICATION_VERSION. */
+ public static final String MCS_APPLICATION_VERSION = "applicationVersion";
+
+ /** The Constant MCS_SDK_VERSION_BASE. */
+ public static final String MCS_SDK_VERSION_BASE = "SDKVersionBase";
+
+ /** The Constant MCS_APPLICATION_CLIENTTYPE. */
+ public static final String MCS_APPLICATION_CLIENTTYPE = "applicationClientType";
+
+ /** The Constant AUTH_AUTOFILL_CHECKVERSION. */
+ public static final String AUTH_AUTOFILL_CHECKVERSION = "autoFillCheckVersion";
+
+ /** The Constant AUTH_AUTOFILL_ROUTECODE. */
+ public static final String AUTH_AUTOFILL_ROUTECODE = "autoFillRouteCode";
+
+ /** The Constant USER_DEVICEID. */
+ public static final String USER_DEVICEID = "user_deviceid";
+
+ /** The Constant USER_LOGIN_NAME. */
+ public static final String USER_LOGIN_NAME = "user_loginname";
+
+ /** The Constant USER_LOGIN_TYPE. */
+ public static final String USER_LOGIN_TYPE = "user_logintype";
+
+ /** The Constant USER_LOGIN_PASS. */
+ public static final String USER_LOGIN_PASS = "user_loginpass";
+
+ /** The Constant USER_PASS_TYPE. */
+ public static final String USER_PASS_TYPE = "user_passtype";
+
+ /** The Constant USER_LOGIN_EXTINFO. */
+ public static final String USER_LOGIN_EXTINFO = "user_loginextinfo";
+
+ /** The Constant USER_LOGIN_SOURCE. */
+ public static final String USER_LOGIN_SOURCE = "user_loginxsource";
+
+ /** The Constant COM_CONF_VERSION. */
+ public static final String COM_CONF_VERSION = "ComConf_Version";
+
+ /** The Constant COM_CONF. */
+ public static final String COM_CONF = "ComConf_";
+
+ /** The Constant CONFIG_XML_NAME. */
+ public static final String CONFIG_XML_NAME = "mcsConfig";
+
+ /** The Constant SERVER_CERT_CONTENT. */
+ public static final String SERVER_CERT_CONTENT = "server_cert_content";
+
+ /** The Constant SERVER_CERT_NOT_BEFORE. */
+ public static final String SERVER_CERT_NOT_BEFORE = "server_cert_not_before";
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcloudfile/Error.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcloudfile/Error.java
new file mode 100644
index 0000000..98af8bc
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcloudfile/Error.java
@@ -0,0 +1,97 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.entity.mcloudfile;
+
+
+public enum Error {
+ Timeout,
+
+ SocketError,
+
+ HttpError,
+
+ ServerError,
+
+ NotFound,
+
+ NotAvaliable,
+
+ NotPermite,
+
+ NotSupportted,
+
+ notConfiged,
+
+ NotLogin,
+
+ FsNotSynced,
+
+ FsNotFound,
+
+ FsChanged,
+
+ FsTooBig,
+
+ FsFileExists,
+
+ LocalFileExist,
+
+ LocalFileNotFound,
+
+ TaskExist,
+
+ TaskNotExist,
+
+ IllegalInputParam,
+
+ IllegalOutputParam,
+
+ MaxiumLimitted,
+
+ UnKonw,
+
+ McsError,
+
+ xmlParseError,
+
+ stateError,
+
+ resumeTaskIdNotExsit,
+
+ newTaskExist,
+
+ SyncTokenNotChanged,
+
+ sdkInnerError;
+
+ public static Error valueOf( int ordinal )
+ {
+ if( ordinal < 0 || ordinal >= values().length )
+ {
+ throw new IndexOutOfBoundsException( "Invalid ordinal" );
+ }
+
+ return values()[ ordinal ];
+ }
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcloudfile/Event.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcloudfile/Event.java
new file mode 100644
index 0000000..6db1c7d
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcloudfile/Event.java
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.entity.mcloudfile;
+
+
+public enum Event {
+ started,
+
+ success,
+
+ error,
+
+ canceled,
+
+ progress,
+
+ paused,
+
+ resumed,
+
+ pendding,
+
+ sub_started;
+
+ public static Event valueOf( int ordinal )
+ {
+ if( ordinal < 0 || ordinal >= values().length )
+ {
+ throw new IndexOutOfBoundsException( "Invalid ordinal" );
+ }
+
+ return values()[ ordinal ];
+ }
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcloudfile/FileNode.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcloudfile/FileNode.aidl
new file mode 100644
index 0000000..08291c3
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcloudfile/FileNode.aidl
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.entity.mcloudfile;
+
+parcelable FileNode;
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcloudfile/FileNode.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcloudfile/FileNode.java
new file mode 100644
index 0000000..b80780b
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcloudfile/FileNode.java
@@ -0,0 +1,641 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.entity.mcloudfile;
+
+import java.util.Map;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+public class FileNode implements Parcelable
+{
+ private boolean isFile;
+ private boolean isShared;
+ private boolean isFixed;
+ private boolean isNeedUpdate;
+ private boolean isNeedUpload;
+ private boolean isSuccess;
+ private long uploadSize;
+ private FileType type;
+ private int dirLevel;
+ private long eTag;
+ private String name;
+ private String suffix;
+ private ShareType shareType;
+ private String createTime;
+ private String updateTime;
+ private long size;
+ private String digest;
+ private String remotePath;
+ private String oldName;
+ private String oldRemotePath;
+ private String localPath;
+ private String parentPath;
+ private String thumbnailURL;
+ private String localThumbPath;
+ private String bigThumbURL;
+ private String localBigThumbPath;
+ private long version;
+ private String id;
+ private String parentID;
+ private String fullPathInID;
+ private String shareParentID;
+ private Map<String, String> fields;
+
+ public FileNode()
+ {}
+
+ public FileNode( Parcel source )
+ {
+ readFromParcel( source );
+ }
+
+ /**
+ * The parcel describe contents, defaul is 0.
+ *
+ * @return the int
+ */
+ @Override
+ public int describeContents()
+ {
+ return 0;
+ }
+
+ /**
+ * Write the mcloud result entity to parcel stream. Pay attention to read and
+ * write variables variables sequence should be consistent or not the
+ * correct results
+ *
+ * @param dest
+ * the dest parcel stream
+ * @param flags
+ * the flags
+ */
+ @Override
+ public void writeToParcel( Parcel dest, int flags )
+ {
+ dest.writeString( name );
+ dest.writeString( suffix );
+ dest.writeString( createTime );
+ dest.writeString( updateTime );
+ dest.writeString( digest );
+ dest.writeString( remotePath );
+ dest.writeString( oldName );
+ dest.writeString( oldRemotePath );
+ dest.writeString( localPath );
+ dest.writeString( parentPath );
+ dest.writeString( thumbnailURL );
+ dest.writeString( localThumbPath );
+ dest.writeString( bigThumbURL );
+ dest.writeString( localBigThumbPath );
+ dest.writeString( id );
+ dest.writeString( parentID );
+ dest.writeString( fullPathInID );
+ dest.writeString( shareParentID );
+
+ dest.writeBooleanArray( new boolean[]{ isFile } );
+ dest.writeBooleanArray( new boolean[]{ isShared } );
+ dest.writeBooleanArray( new boolean[]{ isFixed } );
+ dest.writeBooleanArray( new boolean[]{ isNeedUpdate } );
+ dest.writeBooleanArray( new boolean[]{ isNeedUpload } );
+ dest.writeBooleanArray( new boolean[]{ isSuccess } );
+
+ dest.writeLong( uploadSize );
+ dest.writeInt( dirLevel );
+ dest.writeLong( eTag );
+ dest.writeLong( size );
+ dest.writeLong( version );
+
+ dest.writeInt( shareType.ordinal() );
+ dest.writeInt( type.ordinal() );
+
+ dest.writeMap( fields );
+ }
+
+ /**
+ * Create the mcloud result entity from parcel stream. Pay attention to read and
+ * write variables variables sequence should be consistent or not the
+ * correct results
+ *
+ * @param source
+ * The parcel stream
+ */
+ @SuppressWarnings( "unchecked" )
+ public void readFromParcel( Parcel source )
+ {
+ name = source.readString();
+ suffix = source.readString();
+ createTime = source.readString();
+ updateTime = source.readString();
+ digest = source.readString();
+ remotePath = source.readString();
+ oldName = source.readString();
+ oldRemotePath = source.readString();
+ localPath = source.readString();
+ parentPath = source.readString();
+ thumbnailURL = source.readString();
+ localThumbPath = source.readString();
+ bigThumbURL = source.readString();
+ localBigThumbPath = source.readString();
+ id = source.readString();
+ parentID = source.readString();
+ fullPathInID = source.readString();
+ shareParentID = source.readString();
+
+ isFile = source.createBooleanArray()[ 0 ];
+ isShared = source.createBooleanArray()[ 0 ];
+ isFixed = source.createBooleanArray()[ 0 ];
+ isNeedUpdate = source.createBooleanArray()[ 0 ];
+ isNeedUpload = source.createBooleanArray()[ 0 ];
+ isSuccess = source.createBooleanArray()[ 0 ];
+
+ uploadSize = source.readLong();
+ dirLevel = source.readInt();
+ eTag = source.readLong();
+ size = source.readLong();
+ version = source.readLong();
+
+ shareType = ShareType.valueOf( source.readInt() );
+ type = FileType.valueOf( source.readInt() );
+
+ fields = source.readHashMap( this.getClass().getClassLoader() );
+ }
+
+ /** The parcel creator. */
+ public static final Parcelable.Creator<FileNode> CREATOR = new Parcelable.Creator<FileNode>() {
+ @Override
+ public FileNode createFromParcel( Parcel source )
+ {
+ return new FileNode( source );
+ }
+
+ @Override
+ public FileNode[] newArray( int size )
+ {
+ return new FileNode[ size ];
+ }
+ };
+
+ public boolean isFile()
+ {
+ return isFile;
+ }
+
+ public void setFile( boolean isFile )
+ {
+ this.isFile = isFile;
+ }
+
+ public boolean isShared()
+ {
+ return isShared;
+ }
+
+ public void setShared( boolean isShared )
+ {
+ this.isShared = isShared;
+ }
+
+ public boolean isFixed()
+ {
+ return isFixed;
+ }
+
+ public void setFixed( boolean isFixed )
+ {
+ this.isFixed = isFixed;
+ }
+
+ public boolean isNeedUpdate()
+ {
+ return isNeedUpdate;
+ }
+
+ public void setNeedUpdate( boolean isNeedUpdate )
+ {
+ this.isNeedUpdate = isNeedUpdate;
+ }
+
+ public boolean isNeedUpload()
+ {
+ return isNeedUpload;
+ }
+
+ public void setNeedUpload( boolean isNeedUpload )
+ {
+ this.isNeedUpload = isNeedUpload;
+ }
+
+ public boolean isSuccess()
+ {
+ return isSuccess;
+ }
+
+ public void setSuccess( boolean isSuccess )
+ {
+ this.isSuccess = isSuccess;
+ }
+
+ public long getUploadSize()
+ {
+ return uploadSize;
+ }
+
+ public void setUploadSize( long uploadSize )
+ {
+ this.uploadSize = uploadSize;
+ }
+
+ public FileType getType()
+ {
+ return type;
+ }
+
+ public void setType( FileType type )
+ {
+ this.type = type;
+ }
+
+ public int getDirLevel()
+ {
+ return dirLevel;
+ }
+
+ public void setDirLevel( int dirLevel )
+ {
+ this.dirLevel = dirLevel;
+ }
+
+ public long geteTag()
+ {
+ return eTag;
+ }
+
+ public void seteTag( long eTag )
+ {
+ this.eTag = eTag;
+ }
+
+ public String getName()
+ {
+ return name;
+ }
+
+ public void setName( String name )
+ {
+ this.name = name;
+ }
+
+ public String getSuffix()
+ {
+ return suffix;
+ }
+
+ public void setSuffix( String suffix )
+ {
+ this.suffix = suffix;
+ }
+
+ public ShareType getShareType()
+ {
+ return shareType;
+ }
+
+ public void setShareType( ShareType shareType )
+ {
+ this.shareType = shareType;
+ }
+
+ public String getCreateTime()
+ {
+ return createTime;
+ }
+
+ public void setCreateTime( String createTime )
+ {
+ this.createTime = createTime;
+ }
+
+ public String getUpdateTime()
+ {
+ return updateTime;
+ }
+
+ public void setUpdateTime( String updateTime )
+ {
+ this.updateTime = updateTime;
+ }
+
+ public long getSize()
+ {
+ return size;
+ }
+
+ public void setSize( long size )
+ {
+ this.size = size;
+ }
+
+ public String getDigest()
+ {
+ return digest;
+ }
+
+ public void setDigest( String digest )
+ {
+ this.digest = digest;
+ }
+
+ public String getRemotePath()
+ {
+ return remotePath;
+ }
+
+ public void setRemotePath( String remotePath )
+ {
+ this.remotePath = remotePath;
+ }
+
+ public String getOldName()
+ {
+ return oldName;
+ }
+
+ public void setOldName( String oldName )
+ {
+ this.oldName = oldName;
+ }
+
+ public String getOldRemotePath()
+ {
+ return oldRemotePath;
+ }
+
+ public void setOldRemotePath( String oldRemotePath )
+ {
+ this.oldRemotePath = oldRemotePath;
+ }
+
+ public String getLocalPath()
+ {
+ return localPath;
+ }
+
+ public void setLocalPath( String localPath )
+ {
+ this.localPath = localPath;
+ }
+
+ public String getParentPath()
+ {
+ return parentPath;
+ }
+
+ public void setParentPath( String parentPath )
+ {
+ this.parentPath = parentPath;
+ }
+
+ public String getThumbnailURL()
+ {
+ return thumbnailURL;
+ }
+
+ public void setThumbnailURL( String thumbnailURL )
+ {
+ this.thumbnailURL = thumbnailURL;
+ }
+
+ public String getLocalThumbPath()
+ {
+ return localThumbPath;
+ }
+
+ public void setLocalThumbPath( String localThumbPath )
+ {
+ this.localThumbPath = localThumbPath;
+ }
+
+ public String getBigThumbURL()
+ {
+ return bigThumbURL;
+ }
+
+ public void setBigThumbURL( String bigThumbURL )
+ {
+ this.bigThumbURL = bigThumbURL;
+ }
+
+ public String getLocalBigThumbPath()
+ {
+ return localBigThumbPath;
+ }
+
+ public void setLocalBigThumbPath( String localBigThumbPath )
+ {
+ this.localBigThumbPath = localBigThumbPath;
+ }
+
+ public long getVersion()
+ {
+ return version;
+ }
+
+ public void setVersion( long version )
+ {
+ this.version = version;
+ }
+
+ public String getId()
+ {
+ return id;
+ }
+
+ public void setId( String id )
+ {
+ this.id = id;
+ }
+
+ public String getParentID()
+ {
+ return parentID;
+ }
+
+ public void setParentID( String parentID )
+ {
+ this.parentID = parentID;
+ }
+
+ public String getFullPathInID()
+ {
+ return fullPathInID;
+ }
+
+ public void setFullPathInID( String fullPathInID )
+ {
+ this.fullPathInID = fullPathInID;
+ }
+
+ public String getShareParentID()
+ {
+ return shareParentID;
+ }
+
+ public void setShareParentID( String shareParentID )
+ {
+ this.shareParentID = shareParentID;
+ }
+
+ public Map<String, String> getFields()
+ {
+ return fields;
+ }
+
+ public void setFields( Map<String, String> fields )
+ {
+ this.fields = fields;
+ }
+
+ public static enum FileType {
+ photo,
+
+ audio,
+
+ video,
+
+ document,
+
+ application,
+
+ all,
+
+ searchByName,
+
+ searchByExt;
+
+ public static FileType valueOf( int ordinal )
+ {
+ if( ordinal < 0 || ordinal >= values().length )
+ {
+ throw new IndexOutOfBoundsException( "Invalid ordinal" );
+ }
+
+ return values()[ ordinal ];
+ }
+ }
+
+ public static enum ShareType {
+ outlink,
+
+ p2pshare,
+
+ both;
+
+ public static ShareType valueOf( int ordinal )
+ {
+ if( ordinal < 0 || ordinal >= values().length )
+ {
+ throw new IndexOutOfBoundsException( "Invalid ordinal" );
+ }
+
+ return values()[ ordinal ];
+ }
+ }
+
+ public static enum Order
+ {
+ name,
+
+ name_revers,
+
+ createdate,
+
+ createdate_revers,
+
+ updatedate,
+
+ updatedate_revers;
+
+ public static Order valueOf( int ordinal )
+ {
+ if( ordinal < 0 || ordinal >= values().length )
+ {
+ throw new IndexOutOfBoundsException( "Invalid ordinal" );
+ }
+
+ return values()[ ordinal ];
+ }
+ }
+
+ public static enum SyncType
+ {
+ noSync,
+
+ autoSync,
+
+ forceSync;
+
+ public static SyncType valueOf( int ordinal )
+ {
+ if( ordinal < 0 || ordinal >= values().length )
+ {
+ throw new IndexOutOfBoundsException( "Invalid ordinal" );
+ }
+
+ return values()[ ordinal ];
+ }
+ }
+
+ /**
+ * The Enum ThumbType.
+ */
+ public static enum ThumbType
+ {
+
+ /** The big thumb. */
+ bigThumb,
+
+ /** The middle thumb. */
+ middleThumb,
+
+ /** The small thumb. */
+ smallThumb;
+
+ /**
+ * Value of.
+ *
+ * @param ordinal the ordinal
+ * @return the thumb type
+ */
+ public static ThumbType valueOf( int ordinal )
+ {
+ if( ordinal < 0 || ordinal >= values().length )
+ {
+ throw new IndexOutOfBoundsException( "Invalid ordinal" );
+ }
+
+ return values()[ ordinal ];
+ }
+ }
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcloudfile/MsgNode.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcloudfile/MsgNode.aidl
new file mode 100644
index 0000000..4e0015f
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcloudfile/MsgNode.aidl
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.entity.mcloudfile;
+
+parcelable MsgNode;
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcloudfile/MsgNode.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcloudfile/MsgNode.java
new file mode 100644
index 0000000..ba5edc1
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcloudfile/MsgNode.java
@@ -0,0 +1,386 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.entity.mcloudfile;
+
+import java.util.Map;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+public class MsgNode implements Parcelable
+{
+ private String content;
+ private String sender;
+ private String receiver;
+ private String time;
+ private String id;
+ private MsgType msgType;
+ private BoxType boxType;
+ private MsgResult result;
+ private boolean isSend;
+ private boolean isRead;
+ private int size;
+ private int number;
+ private int locked;
+ private byte[] attachment;
+ private Map<String, String> fields;
+
+ public MsgNode()
+ {}
+
+ public MsgNode( Parcel source )
+ {
+ readFromParcel( source );
+ }
+
+ /**
+ * The parcel describe contents, defaul is 0.
+ *
+ * @return the int
+ */
+ @Override
+ public int describeContents()
+ {
+ return 0;
+ }
+
+ /**
+ * Write the configure node entity to parcel stream. Pay attention to read and
+ * write variables variables sequence should be consistent or not the
+ * correct results
+ *
+ * @param dest
+ * the dest parcel stream
+ * @param flags
+ * the flags
+ */
+ @Override
+ public void writeToParcel( Parcel dest, int flags )
+ {
+ dest.writeString( content );
+ dest.writeString( sender );
+ dest.writeString( receiver );
+ dest.writeString( time );
+ dest.writeString( id );
+
+ dest.writeInt( size );
+ dest.writeInt( number );
+ dest.writeInt( locked );
+
+ dest.writeInt( msgType.ordinal() );
+ dest.writeInt( boxType.ordinal() );
+ dest.writeInt( result.ordinal() );
+
+ dest.writeBooleanArray( new boolean[]{ isSend } );
+ dest.writeBooleanArray( new boolean[]{ isRead } );
+
+ dest.writeByteArray( attachment );
+
+ dest.writeMap( fields );
+ }
+
+ /**
+ * Create the configure node entity from parcel stream. Pay attention to read and
+ * write variables variables sequence should be consistent or not the
+ * correct results
+ *
+ * @param source
+ * The parcel stream
+ */
+ @SuppressWarnings( "unchecked" )
+ public void readFromParcel( Parcel source )
+ {
+ content = source.readString();
+ sender = source.readString();
+ receiver = source.readString();
+ time = source.readString();
+ id = source.readString();
+
+ size = source.readInt();
+ number = source.readInt();
+ locked = source.readInt();
+
+ msgType = MsgType.valueOf( source.readInt() );
+ boxType = BoxType.valueOf( source.readInt() );
+ result = MsgResult.valueOf( source.readInt() );
+
+ isSend = source.createBooleanArray()[ 0 ];
+ isRead = source.createBooleanArray()[ 0 ];
+
+ attachment = source.createByteArray();
+
+ fields = source.readHashMap( this.getClass().getClassLoader() );
+ }
+
+ /** The parcel creator. */
+ public static final Parcelable.Creator<MsgNode> CREATOR = new Parcelable.Creator<MsgNode>() {
+ @Override
+ public MsgNode createFromParcel( Parcel source )
+ {
+ return new MsgNode( source );
+ }
+
+ @Override
+ public MsgNode[] newArray( int size )
+ {
+ return new MsgNode[ size ];
+ }
+ };
+
+ public String getContent()
+ {
+ return content;
+ }
+
+ public void setContent( String content )
+ {
+ this.content = content;
+ }
+
+ public String getSender()
+ {
+ return sender;
+ }
+
+ public void setSender( String sender )
+ {
+ this.sender = sender;
+ }
+
+ public String getReceiver()
+ {
+ return receiver;
+ }
+
+ public void setReceiver( String receiver )
+ {
+ this.receiver = receiver;
+ }
+
+ public String getTime()
+ {
+ return time;
+ }
+
+ public void setTime( String time )
+ {
+ this.time = time;
+ }
+
+ public String getId()
+ {
+ return id;
+ }
+
+ public void setId( String id )
+ {
+ this.id = id;
+ }
+
+ public MsgType getMsgType()
+ {
+ return msgType;
+ }
+
+ public void setMsgType( MsgType msgType )
+ {
+ this.msgType = msgType;
+ }
+
+ public BoxType getBoxType()
+ {
+ return boxType;
+ }
+
+ public void setBoxType( BoxType boxType )
+ {
+ this.boxType = boxType;
+ }
+
+ public MsgResult getResult()
+ {
+ return result;
+ }
+
+ public void setResult( MsgResult result )
+ {
+ this.result = result;
+ }
+
+ public boolean isSend()
+ {
+ return isSend;
+ }
+
+ public void setSend( boolean isSend )
+ {
+ this.isSend = isSend;
+ }
+
+ public boolean isRead()
+ {
+ return isRead;
+ }
+
+ public void setRead( boolean isRead )
+ {
+ this.isRead = isRead;
+ }
+
+ public int getSize()
+ {
+ return size;
+ }
+
+ public void setSize( int size )
+ {
+ this.size = size;
+ }
+
+ public int getNumber()
+ {
+ return number;
+ }
+
+ public void setNumber( int number )
+ {
+ this.number = number;
+ }
+
+ public int getLocked()
+ {
+ return locked;
+ }
+
+ public void setLocked( int locked )
+ {
+ this.locked = locked;
+ }
+
+ public byte[] getAttachment()
+ {
+ return attachment;
+ }
+
+ public void setAttachment( byte[] attachment )
+ {
+ this.attachment = attachment;
+ }
+
+ public Map<String, String> getFields()
+ {
+ return fields;
+ }
+
+ public void setFields( Map<String, String> fields )
+ {
+ this.fields = fields;
+ }
+
+ public static enum BoxType
+ {
+ inbox,
+
+ outbox,
+
+ draft;
+
+ public static BoxType valueOf( int ordinal )
+ {
+ if( ordinal < 0 || ordinal >= values().length )
+ {
+ throw new IndexOutOfBoundsException( "Invalid ordinal" );
+ }
+
+ return values()[ ordinal ];
+ }
+ }
+
+ public static enum MsgType
+ {
+ sms,
+
+ mms;
+
+ public static MsgType valueOf( int ordinal )
+ {
+ if( ordinal < 0 || ordinal >= values().length )
+ {
+ throw new IndexOutOfBoundsException( "Invalid ordinal" );
+ }
+
+ return values()[ ordinal ];
+ }
+ }
+
+ public static enum Order
+ {
+ date,
+
+ date_Reverse,
+
+ sender,
+
+ sender_Reverse,
+
+ receiver,
+
+ receiver_Reverse,
+
+ thread,
+
+ thread_Reverse;
+
+ public static Order valueOf( int ordinal )
+ {
+ if( ordinal < 0 || ordinal >= values().length )
+ {
+ throw new IndexOutOfBoundsException( "Invalid ordinal" );
+ }
+
+ return values()[ ordinal ];
+ }
+ }
+
+ public static enum MsgResult
+ {
+ success,
+
+ duplication,
+
+ fail,
+
+ ignor;
+
+ public static MsgResult valueOf( int ordinal )
+ {
+ if( ordinal < 0 || ordinal >= values().length )
+ {
+ throw new IndexOutOfBoundsException( "Invalid ordinal" );
+ }
+
+ return values()[ ordinal ];
+ }
+ }
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcloudfile/Param.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcloudfile/Param.aidl
new file mode 100644
index 0000000..f1d3fce
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcloudfile/Param.aidl
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.entity.mcloudfile;
+
+parcelable Param;
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcloudfile/Param.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcloudfile/Param.java
new file mode 100644
index 0000000..04e1611
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcloudfile/Param.java
@@ -0,0 +1,131 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.entity.mcloudfile;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+public class Param implements Parcelable
+{
+ private int[] paramInt;
+ private long[] paramLong;
+ private String[] paramString;
+
+ public Param()
+ {}
+
+ public Param( Parcel source )
+ {
+ readFromParcel( source );
+ }
+
+ /**
+ * The parcel describe contents, defaul is 0.
+ *
+ * @return the int
+ */
+ @Override
+ public int describeContents()
+ {
+ return 0;
+ }
+
+ /**
+ * Write the param entity to parcel stream. Pay attention to read
+ * and write variables variables sequence should be consistent or not the
+ * correct results
+ *
+ * @param dest
+ * the dest parcel stream
+ * @param flags
+ * the flags
+ */
+ @Override
+ public void writeToParcel( Parcel dest, int flags )
+ {
+ dest.writeIntArray( paramInt );
+ dest.writeLongArray( paramLong );
+ dest.writeStringArray( paramString );
+ }
+
+ /**
+ * Create the param entity from parcel stream. Pay attention to read
+ * and write variables variables sequence should be consistent or not the
+ * correct results
+ *
+ * @param source
+ * The parcel stream
+ */
+ public void readFromParcel( Parcel source )
+ {
+ paramInt = source.createIntArray();
+ paramLong = source.createLongArray();
+ paramString = source.createStringArray();
+ }
+
+ /** The parcel creator. */
+ public static final Parcelable.Creator<Param> CREATOR = new Parcelable.Creator<Param>() {
+ @Override
+ public Param createFromParcel( Parcel source )
+ {
+ return new Param( source );
+ }
+
+ @Override
+ public Param[] newArray( int size )
+ {
+ return new Param[ size ];
+ }
+ };
+
+ public int[] getParamInt()
+ {
+ return paramInt;
+ }
+
+ public void setParamInt( int[] paramInt )
+ {
+ this.paramInt = paramInt;
+ }
+
+ public long[] getParamLong()
+ {
+ return paramLong;
+ }
+
+ public void setParamLong( long[] paramLong )
+ {
+ this.paramLong = paramLong;
+ }
+
+ public String[] getParamString()
+ {
+ return paramString;
+ }
+
+ public void setParamString( String[] paramString )
+ {
+ this.paramString = paramString;
+ }
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcloudfile/Result.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcloudfile/Result.aidl
new file mode 100644
index 0000000..9af04af
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcloudfile/Result.aidl
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.entity.mcloudfile;
+
+parcelable Result;
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcloudfile/Result.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcloudfile/Result.java
new file mode 100644
index 0000000..355fe1b
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcloudfile/Result.java
@@ -0,0 +1,158 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.entity.mcloudfile;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+public class Result implements Parcelable
+{
+ private Error mcloudError;
+ private String mcloudDesc;
+ private String socketCode;
+ private String httpCode;
+ private String serverCode;
+
+ public Result()
+ {
+ }
+
+ public Result( Parcel source )
+ {
+ readFromParcel( source );
+ }
+
+ /**
+ * The parcel describe contents, defaul is 0.
+ *
+ * @return the int
+ */
+ @Override
+ public int describeContents()
+ {
+ return 0;
+ }
+
+ /**
+ * Write the mcloud result entity to parcel stream. Pay attention to read and
+ * write variables variables sequence should be consistent or not the
+ * correct results
+ *
+ * @param dest
+ * the dest parcel stream
+ * @param flags
+ * the flags
+ */
+ @Override
+ public void writeToParcel( Parcel dest, int flags )
+ {
+ dest.writeInt( mcloudError.ordinal() );
+ dest.writeString( mcloudDesc );
+ dest.writeString( socketCode );
+ dest.writeString( httpCode );
+ dest.writeString( serverCode );
+ }
+
+ /**
+ * Create the mcloud result entity from parcel stream. Pay attention to read and
+ * write variables variables sequence should be consistent or not the
+ * correct results
+ *
+ * @param source
+ * The parcel stream
+ */
+ public void readFromParcel( Parcel source )
+ {
+ mcloudError = Error.valueOf( source.readInt() );
+ mcloudDesc = source.readString();
+ socketCode = source.readString();
+ httpCode = source.readString();
+ serverCode = source.readString();
+ }
+
+ /** The parcel creator. */
+ public static final Parcelable.Creator<Result> CREATOR = new Parcelable.Creator<Result>() {
+ @Override
+ public Result createFromParcel( Parcel source )
+ {
+ return new Result( source );
+ }
+
+ @Override
+ public Result[] newArray( int size )
+ {
+ return new Result[ size ];
+ }
+ };
+
+ public Error getMcloudError()
+ {
+ return mcloudError;
+ }
+
+ public void setMcloudError( Error mcloudError )
+ {
+ this.mcloudError = mcloudError;
+ }
+
+ public String getMcloudDesc()
+ {
+ return mcloudDesc;
+ }
+
+ public void setMcloudDesc( String mcloudDesc )
+ {
+ this.mcloudDesc = mcloudDesc;
+ }
+
+ public String getSocketCode()
+ {
+ return socketCode;
+ }
+
+ public void setSocketCode( String socketCode )
+ {
+ this.socketCode = socketCode;
+ }
+
+ public String getHttpCode()
+ {
+ return httpCode;
+ }
+
+ public void setHttpCode( String httpCode )
+ {
+ this.httpCode = httpCode;
+ }
+
+ public String getServerCode()
+ {
+ return serverCode;
+ }
+
+ public void setServerCode( String serverCode )
+ {
+ this.serverCode = serverCode;
+ }
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcloudfile/SdkType.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcloudfile/SdkType.java
new file mode 100644
index 0000000..e60c853
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcloudfile/SdkType.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.entity.mcloudfile;
+
+public enum SdkType {
+ Static,
+
+ Service,
+
+ Plugin,
+
+ None;
+
+ public static SdkType valueOf( int ordinal )
+ {
+ if( ordinal < 0 || ordinal >= values().length )
+ {
+ throw new IndexOutOfBoundsException( "Invalid ordinal" );
+ }
+
+ return values()[ ordinal ];
+ }
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcloudfile/ShareNode.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcloudfile/ShareNode.aidl
new file mode 100644
index 0000000..0605166
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcloudfile/ShareNode.aidl
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.entity.mcloudfile;
+
+parcelable ShareNode;
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcloudfile/ShareNode.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcloudfile/ShareNode.java
new file mode 100644
index 0000000..a2d2348
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcloudfile/ShareNode.java
@@ -0,0 +1,320 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.entity.mcloudfile;
+
+import java.util.Arrays;
+import java.util.Map;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+public class ShareNode implements Parcelable
+{
+ private String url;
+ private String thumbUrl;
+ private String createTime;
+ private String updateTime;
+ private ShareType type;
+ private String desc;
+ private int downloads;
+ private FileNode[] file;
+ private ShareNode[] subShares;
+ private String id;
+ private boolean isSuccess;
+ private Order order;
+ private Map<String, String> fields;
+
+ public ShareNode()
+ {}
+
+ public ShareNode( Parcel source )
+ {
+ readFromParcel( source );
+ }
+
+ /**
+ * The parcel describe contents, defaul is 0.
+ *
+ * @return the int
+ */
+ @Override
+ public int describeContents()
+ {
+ return 0;
+ }
+
+ /**
+ * Write the configure node entity to parcel stream. Pay attention to read and
+ * write variables variables sequence should be consistent or not the
+ * correct results
+ *
+ * @param dest
+ * the dest parcel stream
+ * @param flags
+ * the flags
+ */
+ @Override
+ public void writeToParcel( Parcel dest, int flags )
+ {
+ dest.writeString( url );
+ dest.writeString( thumbUrl );
+ dest.writeString( createTime );
+ dest.writeString( updateTime );
+ dest.writeInt(type.ordinal());
+ dest.writeString( desc );
+ dest.writeInt(downloads);
+ dest.writeParcelableArray(file, flags);
+ dest.writeParcelableArray(subShares, flags);
+ dest.writeString( id );
+ dest.writeInt(isSuccess ? 1 : 0);
+ dest.writeInt(order.ordinal());
+ dest.writeMap( fields );
+ }
+
+ /**
+ * Create the share node entity from parcel stream. Pay attention to read and
+ * write variables variables sequence should be consistent or not the
+ * correct results
+ *
+ * @param source
+ * The parcel stream
+ */
+ @SuppressWarnings( "unchecked" )
+ public void readFromParcel( Parcel source )
+ {
+ url = source.readString();
+ thumbUrl = source.readString();
+ createTime = source.readString();
+ updateTime = source.readString();
+ type = ShareType.valueOf( source.readInt() );
+ desc = source.readString();
+ downloads = source.readInt();
+// file = (FileNode[])source.readParcelableArray( this.getClass().getClassLoader() );
+// subShares = (ShareNode[])source.readParcelableArray( this.getClass().getClassLoader() );
+ Parcelable[] fileParcelableArray = source.readParcelableArray( this.getClass().getClassLoader() );
+ file = new FileNode[]{};
+ if (fileParcelableArray != null) {
+ file = Arrays.copyOf(fileParcelableArray, fileParcelableArray.length, FileNode[].class);
+ }
+
+ Parcelable[] subSharesParcelableArray = source.readParcelableArray( this.getClass().getClassLoader() );
+ subShares = new ShareNode[]{};
+ if (subSharesParcelableArray != null) {
+ subShares = Arrays.copyOf(subSharesParcelableArray, subSharesParcelableArray.length, ShareNode[].class);
+ }
+ id = source.readString();
+ isSuccess = source.readInt() == 1 ? true : false;
+ order = Order.valueOf(source.readInt());
+ fields = source.readHashMap( this.getClass().getClassLoader() );
+ }
+
+ /** The parcel creator. */
+ public static final Parcelable.Creator<ShareNode> CREATOR = new Parcelable.Creator<ShareNode>() {
+ @Override
+ public ShareNode createFromParcel( Parcel source )
+ {
+ return new ShareNode( source );
+ }
+
+ @Override
+ public ShareNode[] newArray( int size )
+ {
+ return new ShareNode[ size ];
+ }
+ };
+
+ public String getUrl()
+ {
+ return url;
+ }
+
+ public void setUrl( String url )
+ {
+ this.url = url;
+ }
+
+ public String getThumbUrl()
+ {
+ return thumbUrl;
+ }
+
+ public void setThumbUrl( String thumbUrl )
+ {
+ this.thumbUrl = thumbUrl;
+ }
+
+ public String getCreateTime()
+ {
+ return createTime;
+ }
+
+ public void setCreateTime( String createTime )
+ {
+ this.createTime = createTime;
+ }
+
+ public String getUpdateTime()
+ {
+ return updateTime;
+ }
+
+ public void setUpdateTime( String updateTime )
+ {
+ this.updateTime = updateTime;
+ }
+
+ public ShareType getType()
+ {
+ return type;
+ }
+
+ public void setType( ShareType type )
+ {
+ this.type = type;
+ }
+
+ public String getDesc()
+ {
+ return desc;
+ }
+
+ public void setDesc( String desc )
+ {
+ this.desc = desc;
+ }
+
+ public int getDownloads()
+ {
+ return downloads;
+ }
+
+ public void setDownloads( int downloads )
+ {
+ this.downloads = downloads;
+ }
+
+ public FileNode[] getFile()
+ {
+ return file;
+ }
+
+ public void setFile( FileNode[] file )
+ {
+ this.file = file;
+ }
+
+ public ShareNode[] getSubShares()
+ {
+ return subShares;
+ }
+
+ public void setSubShares( ShareNode[] subShares )
+ {
+ this.subShares = subShares;
+ }
+
+ public String getId()
+ {
+ return id;
+ }
+
+ public void setId( String id )
+ {
+ this.id = id;
+ }
+
+ public boolean isSuccess()
+ {
+ return isSuccess;
+ }
+
+ public void setSuccess( boolean isSuccess )
+ {
+ this.isSuccess = isSuccess;
+ }
+
+ public Order getOrder()
+ {
+ return order;
+ }
+
+ public void setOrder( Order order )
+ {
+ this.order = order;
+ }
+
+ public Map<String, String> getFields()
+ {
+ return fields;
+ }
+
+ public void setFields( Map<String, String> fields )
+ {
+ this.fields = fields;
+ }
+
+ public static enum Order
+ {
+ createTime,
+
+ createTime_Reverse,
+
+ UpdateTime,
+
+ UpdateTime_Reverse,
+
+ Downloads,
+
+ Downloads_Reverse;
+
+ public static Order valueOf( int ordinal )
+ {
+ if( ordinal < 0 || ordinal >= values().length )
+ {
+ throw new IndexOutOfBoundsException( "Invalid ordinal" );
+ }
+
+ return values()[ ordinal ];
+ }
+ }
+
+ public static enum ShareType
+ {
+ sharedFile,
+
+ sharedFolder,
+
+ sharedGroup;
+
+ public static ShareType valueOf( int ordinal )
+ {
+ if( ordinal < 0 || ordinal >= values().length )
+ {
+ throw new IndexOutOfBoundsException( "Invalid ordinal" );
+ }
+
+ return values()[ ordinal ];
+ }
+ }
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcloudfile/Status.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcloudfile/Status.java
new file mode 100644
index 0000000..0638387
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcloudfile/Status.java
@@ -0,0 +1,51 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.entity.mcloudfile;
+
+
+public enum Status {
+ waitting,
+
+ running,
+
+ pendding,
+
+ succeed,
+
+ paused,
+
+ canceled,
+
+ failed;
+
+ public static Status valueOf( int ordinal )
+ {
+ if( ordinal < 0 || ordinal >= values().length )
+ {
+ throw new IndexOutOfBoundsException( "Invalid ordinal" );
+ }
+
+ return values()[ ordinal ];
+ }
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcloudfile/TransNode.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcloudfile/TransNode.aidl
new file mode 100644
index 0000000..1872506
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcloudfile/TransNode.aidl
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.entity.mcloudfile;
+
+parcelable TransNode;
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcloudfile/TransNode.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcloudfile/TransNode.java
new file mode 100644
index 0000000..1e8d282
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcloudfile/TransNode.java
@@ -0,0 +1,374 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.entity.mcloudfile;
+
+import java.util.Map;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+public class TransNode implements Parcelable
+{
+ private String id;
+ private long completeSize;
+ private String url;
+ private String localPath;
+ private TransType type;
+ private FileNode file;
+ private Status status;
+ private boolean isSuccess;
+ private String uploadID;
+ private String batchID;
+ private int speed;
+ private int percent;
+ private FileNode.FileType mode;
+ private String param;
+ private long order;
+ private Result result;
+ private Map<String, String> fields;
+
+ public TransNode()
+ {}
+
+ public TransNode( Parcel source )
+ {
+ readFromParcel( source );
+ }
+
+ /**
+ * The parcel describe contents, defaul is 0.
+ *
+ * @return the int
+ */
+ @Override
+ public int describeContents()
+ {
+ return 0;
+ }
+
+ /**
+ * Write the mcloud result entity to parcel stream. Pay attention to read and
+ * write variables variables sequence should be consistent or not the
+ * correct results
+ *
+ * @param dest
+ * the dest parcel stream
+ * @param flags
+ * the flags
+ */
+ @Override
+ public void writeToParcel( Parcel dest, int flags )
+ {
+ dest.writeString( id );
+ dest.writeString( url );
+ dest.writeString( localPath );
+ dest.writeString( param );
+ dest.writeString( uploadID );
+ dest.writeString( batchID );
+
+ dest.writeLong( completeSize );
+ dest.writeLong( order );
+ dest.writeInt( speed );
+ dest.writeInt( percent );
+
+ dest.writeBooleanArray( new boolean[]{ isSuccess } );
+
+ dest.writeInt( type.ordinal() );
+ dest.writeInt( mode.ordinal() );
+ dest.writeInt( status.ordinal() );
+
+ dest.writeValue( file );
+ dest.writeValue( result );
+
+ dest.writeMap( fields );
+ }
+
+ /**
+ * Create the mcloud result entity from parcel stream. Pay attention to read and
+ * write variables variables sequence should be consistent or not the
+ * correct results
+ *
+ * @param source
+ * The parcel stream
+ */
+ @SuppressWarnings( "unchecked" )
+ public void readFromParcel( Parcel source )
+ {
+ id = source.readString();
+ url = source.readString();
+ localPath = source.readString();
+ param = source.readString();
+ uploadID = source.readString();
+ batchID = source.readString();
+
+ completeSize = source.readLong();
+ order = source.readLong();
+ speed = source.readInt();
+ percent = source.readInt();
+
+ isSuccess = source.createBooleanArray()[ 0 ];
+
+ type = TransType.valueOf( source.readInt() );
+ mode = FileNode.FileType.valueOf( source.readInt() );
+ status = Status.valueOf( source.readInt() );
+
+ file = ( FileNode )source.readValue( this.getClass().getClassLoader() );
+ result = ( Result )source.readValue( this.getClass().getClassLoader() );
+
+ fields = source.readHashMap( this.getClass().getClassLoader() );
+ }
+
+ /** The parcel creator. */
+ public static final Parcelable.Creator<TransNode> CREATOR = new Parcelable.Creator<TransNode>() {
+ @Override
+ public TransNode createFromParcel( Parcel source )
+ {
+ return new TransNode( source );
+ }
+
+ @Override
+ public TransNode[] newArray( int size )
+ {
+ return new TransNode[ size ];
+ }
+ };
+
+ public String getId()
+ {
+ return id;
+ }
+
+ public void setId( String id )
+ {
+ this.id = id;
+ }
+
+ public long getCompleteSize()
+ {
+ return completeSize;
+ }
+
+ public void setCompleteSize( long completeSize )
+ {
+ this.completeSize = completeSize;
+ }
+
+ public String getUrl()
+ {
+ return url;
+ }
+
+ public void setUrl( String url )
+ {
+ this.url = url;
+ }
+
+ public String getLocalPath()
+ {
+ return localPath;
+ }
+
+ public void setLocalPath( String localPath )
+ {
+ this.localPath = localPath;
+ }
+
+ public TransType getType()
+ {
+ return type;
+ }
+
+ public void setType( TransType type )
+ {
+ this.type = type;
+ }
+
+ public FileNode getFile()
+ {
+ return file;
+ }
+
+ public void setFile( FileNode file )
+ {
+ this.file = file;
+ }
+
+ public Status getStatus()
+ {
+ return status;
+ }
+
+ public void setStatus( Status status )
+ {
+ this.status = status;
+ }
+
+ public boolean isSuccess()
+ {
+ return isSuccess;
+ }
+
+ public void setSuccess( boolean isSuccess )
+ {
+ this.isSuccess = isSuccess;
+ }
+
+ public String getUploadID()
+ {
+ return uploadID;
+ }
+
+ public void setUploadID( String uploadID )
+ {
+ this.uploadID = uploadID;
+ }
+
+ public String getBatchID()
+ {
+ return batchID;
+ }
+
+ public void setBatchID( String batchID )
+ {
+ this.batchID = batchID;
+ }
+
+ public int getSpeed()
+ {
+ return speed;
+ }
+
+ public void setSpeed( int speed )
+ {
+ this.speed = speed;
+ }
+
+ public int getPercent()
+ {
+ return percent;
+ }
+
+ public void setPercent( int percent )
+ {
+ this.percent = percent;
+ }
+
+ public FileNode.FileType getMode()
+ {
+ return mode;
+ }
+
+ public void setMode( FileNode.FileType mode )
+ {
+ this.mode = mode;
+ }
+
+ public String getParam()
+ {
+ return param;
+ }
+
+ public void setParam( String param )
+ {
+ this.param = param;
+ }
+
+ public long getOrder()
+ {
+ return order;
+ }
+
+ public void setOrder( long order )
+ {
+ this.order = order;
+ }
+
+ public Result getResult()
+ {
+ return result;
+ }
+
+ public void setResult( Result result )
+ {
+ this.result = result;
+ }
+
+ public Map<String, String> getFields()
+ {
+ return fields;
+ }
+
+ public void setFields( Map<String, String> fields )
+ {
+ this.fields = fields;
+ }
+
+ public static enum TransOper
+ {
+ NEW,
+
+ OVER_WRITE,
+
+ RESUME,
+
+ GET_INFO;
+
+ public static TransOper valueOf( int ordinal )
+ {
+ if( ordinal < 0 || ordinal >= values().length )
+ {
+ throw new IndexOutOfBoundsException( "Invalid ordinal" );
+ }
+
+ return values()[ ordinal ];
+ }
+ }
+
+ public static enum TransType
+ {
+ UPLOAD,
+
+ DOWNLOAD,
+
+ DOWNLOADTHUMBNAIL,
+
+ DOWNLOADURL,
+
+ BACKUP,
+
+ RESTORE,
+
+ SHOOT;
+
+ public static TransType valueOf( int ordinal )
+ {
+ if( ordinal < 0 || ordinal >= values().length )
+ {
+ throw new IndexOutOfBoundsException( "Invalid ordinal" );
+ }
+
+ return values()[ ordinal ];
+ }
+ }
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcontact/Auth.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcontact/Auth.aidl
new file mode 100644
index 0000000..0b76ec5
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcontact/Auth.aidl
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.entity.mcontact;
+
+parcelable Auth;
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcontact/Auth.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcontact/Auth.java
new file mode 100644
index 0000000..291c763
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcontact/Auth.java
@@ -0,0 +1,285 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.entity.mcontact;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+public class Auth implements Parcelable{
+
+ private String username;
+ private String session;
+ private String userId;
+ private String sessionkey;
+ private String message;
+ private String imei;
+ private String deviceId;
+ private String token;
+ private String version;
+ private String mContact_session;
+ private boolean enableSync;
+ private boolean isAutoSync;
+ private String syncSn;
+ private String aoiToken;
+ private String contactUserId;
+ private boolean isLocalIntent;
+ private String channelId;
+ private boolean isThirdPart = false;
+ private int error_code;
+ private String error_message;
+ private String syncFrequency;
+ private int result_code;
+
+ public Auth(){}
+
+ public Auth(Parcel source){
+ readFromParcel( source );
+ }
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+ @Override
+ public void writeToParcel(Parcel paramParcel, int paramInt) {
+ paramParcel.writeString(this.username);
+ paramParcel.writeString(this.session);
+ paramParcel.writeString(this.userId);
+ paramParcel.writeString(this.sessionkey);
+ paramParcel.writeString(this.message);
+ paramParcel.writeString(this.imei);
+ paramParcel.writeString(this.deviceId);
+ paramParcel.writeString(this.token);
+ paramParcel.writeString(this.version);
+ paramParcel.writeString(this.mContact_session);
+ paramParcel.writeInt(this.enableSync == true ? 1 : 0);
+ paramParcel.writeInt(this.isAutoSync == true ? 1 : 0);
+ paramParcel.writeString(this.syncSn);
+ paramParcel.writeString(this.aoiToken);
+ paramParcel.writeString(this.contactUserId);
+ paramParcel.writeInt(this.isLocalIntent == true ? 1 : 0);
+ paramParcel.writeString(this.channelId);
+ paramParcel.writeInt(this.isThirdPart == true ? 1 : 0);
+ paramParcel.writeInt(this.error_code);
+ paramParcel.writeString(this.error_message);
+ paramParcel.writeString(this.syncFrequency);
+ paramParcel.writeInt(this.result_code);
+ }
+
+ public void readFromParcel( Parcel paramParcel ){
+ String str1 = paramParcel.readString();
+ setUsername(str1);
+ String str2 = paramParcel.readString();
+ setSession(str2);
+ String str3 = paramParcel.readString();
+ setUserId(str3);
+ String str4 = paramParcel.readString();
+ setSessionkey(str4);
+ String str5 = paramParcel.readString();
+ setMessage(str5);
+ String str6 = paramParcel.readString();
+ setImei(str6);
+ String str7 = paramParcel.readString();
+ setDeviceId(str7);
+ String str8 = paramParcel.readString();
+ setToken(str8);
+ String str9 = paramParcel.readString();
+ setVersion(str9);
+ String str10 = paramParcel.readString();
+ setmContact_session(str10);
+ boolean bool1 = paramParcel.readInt() > 0;
+ setEnableSync(bool1);
+ boolean bool2 = paramParcel.readInt() > 0;
+ setAutoSync(bool2);
+ String str11 = paramParcel.readString();
+ setSyncSn(str11);
+ String str12 = paramParcel.readString();
+ setAoiToken(str12);
+ String str13 = paramParcel.readString();
+ setContactUserId(str13);
+ boolean bool3 = paramParcel.readInt() > 0;
+ setLocalIntent(bool3);
+ String str14 = paramParcel.readString();
+ setChannelId(str14);
+ boolean bool4 = paramParcel.readInt() > 0;
+ setThirdPart(bool4);
+ int i = paramParcel.readInt();
+ setError_code(i);
+ String str15 = paramParcel.readString();
+ setError_message(str15);
+ String str16 = paramParcel.readString();
+ setSyncFrequency(str16);
+ setResult_code(paramParcel.readInt());
+
+ }
+
+ /** The parcel creator. */
+ public static final Parcelable.Creator<Auth> CREATOR = new Parcelable.Creator<Auth>() {
+ @Override
+ public Auth createFromParcel( Parcel source )
+ {
+ return new Auth( source );
+ }
+
+ @Override
+ public Auth[] newArray( int size )
+ {
+ return new Auth[ size ];
+ }
+ };
+
+ public String getUsername() {
+ return username;
+ }
+ public void setUsername(String username) {
+ this.username = username;
+ }
+ public String getSession() {
+ return session;
+ }
+ public void setSession(String session) {
+ this.session = session;
+ }
+ public String getUserId() {
+ return userId;
+ }
+ public void setUserId(String userId) {
+ this.userId = userId;
+ }
+ public String getSessionkey() {
+ return sessionkey;
+ }
+ public void setSessionkey(String sessionkey) {
+ this.sessionkey = sessionkey;
+ }
+ public String getMessage() {
+ return message;
+ }
+ public void setMessage(String message) {
+ this.message = message;
+ }
+ public String getImei() {
+ return imei;
+ }
+ public void setImei(String imei) {
+ this.imei = imei;
+ }
+ public String getDeviceId() {
+ return deviceId;
+ }
+ public void setDeviceId(String deviceId) {
+ this.deviceId = deviceId;
+ }
+ public String getToken() {
+ return token;
+ }
+ public void setToken(String token) {
+ this.token = token;
+ }
+ public String getVersion() {
+ return version;
+ }
+ public void setVersion(String version) {
+ this.version = version;
+ }
+ public String getmContact_session() {
+ return mContact_session;
+ }
+ public void setmContact_session(String mContact_session) {
+ this.mContact_session = mContact_session;
+ }
+ public boolean isEnableSync() {
+ return enableSync;
+ }
+ public void setEnableSync(boolean enableSync) {
+ this.enableSync = enableSync;
+ }
+ public boolean isAutoSync() {
+ return isAutoSync;
+ }
+ public void setAutoSync(boolean isAutoSync) {
+ this.isAutoSync = isAutoSync;
+ }
+ public String getSyncSn() {
+ return syncSn;
+ }
+ public void setSyncSn(String syncSn) {
+ this.syncSn = syncSn;
+ }
+ public String getAoiToken() {
+ return aoiToken;
+ }
+ public void setAoiToken(String aoiToken) {
+ this.aoiToken = aoiToken;
+ }
+ public String getContactUserId() {
+ return contactUserId;
+ }
+ public void setContactUserId(String contactUserId) {
+ this.contactUserId = contactUserId;
+ }
+ public boolean isLocalIntent() {
+ return isLocalIntent;
+ }
+ public void setLocalIntent(boolean isLocalIntent) {
+ this.isLocalIntent = isLocalIntent;
+ }
+ public String getChannelId() {
+ return channelId;
+ }
+ public void setChannelId(String channelId) {
+ this.channelId = channelId;
+ }
+ public boolean isThirdPart() {
+ return isThirdPart;
+ }
+ public void setThirdPart(boolean isThirdPart) {
+ this.isThirdPart = isThirdPart;
+ }
+ public int getError_code() {
+ return error_code;
+ }
+ public void setError_code(int error_code) {
+ this.error_code = error_code;
+ }
+ public String getError_message() {
+ return error_message;
+ }
+ public void setError_message(String error_message) {
+ this.error_message = error_message;
+ }
+ public String getSyncFrequency() {
+ return syncFrequency;
+ }
+ public void setSyncFrequency(String syncFrequency) {
+ this.syncFrequency = syncFrequency;
+ }
+ public int getResult_code() {
+ return result_code;
+ }
+ public void setResult_code(int result_code) {
+ this.result_code = result_code;
+ }
+
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcontact/ContactAction.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcontact/ContactAction.java
new file mode 100644
index 0000000..d63d131
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcontact/ContactAction.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.entity.mcontact;
+
+
+public enum ContactAction {
+ CONTACT_ACTION_READ,
+ CONTACT_ACTION_ADD,
+ CONTACT_ACTION_DELETE,
+ CONTACT_ACTION_UPDATE,
+ CONTACT_ACTION_UNKNOWN;
+
+ /**
+ * Value of.
+ *
+ * @param ordinal the ordinal
+ * @return the event
+ */
+ public static ContactAction valueOf( int ordinal )
+ {
+ if( ordinal < 0 || ordinal >= values().length )
+ {
+ throw new IndexOutOfBoundsException( "Invalid ordinal" );
+ }
+
+ return values()[ ordinal ];
+ }
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcontact/IntervalAction.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcontact/IntervalAction.java
new file mode 100644
index 0000000..1116e1d
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcontact/IntervalAction.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.entity.mcontact;
+
+public enum IntervalAction {
+ INTERVAL_SYNC_ONE_DAY,
+ INTERVAL_SYNC_ONE_WEEK,
+ INTERVAL_SYNC_ONE_MONTH,
+ INTERVAL_SYNC_SELF_DEFINE;
+
+ /**
+ * Value of.
+ *
+ * @param ordinal the ordinal
+ * @return the event
+ */
+ public static IntervalAction valueOf( int ordinal )
+ {
+ if( ordinal < 0 || ordinal >= values().length )
+ {
+ throw new IndexOutOfBoundsException( "Invalid ordinal" );
+ }
+
+ return values()[ ordinal ];
+ }
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcontact/SyncAction.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcontact/SyncAction.java
new file mode 100644
index 0000000..23e5bae
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/mcontact/SyncAction.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.entity.mcontact;
+
+public enum SyncAction {
+ CONTACT_DOWNLOAD,
+ CONTACT_DOWNLOAD_APPEND,
+ CONTACT_UPLOAD,
+ CONTACT_UPLOAD_APPEND;
+
+ /**
+ * Value of.
+ *
+ * @param ordinal the ordinal
+ * @return the event
+ */
+ public static SyncAction valueOf( int ordinal )
+ {
+ if( ordinal < 0 || ordinal >= values().length )
+ {
+ throw new IndexOutOfBoundsException( "Invalid ordinal" );
+ }
+
+ return values()[ ordinal ];
+ }
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/profile/Avatar.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/profile/Avatar.aidl
new file mode 100644
index 0000000..28f2c68
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/profile/Avatar.aidl
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.entity.profile;
+
+parcelable Avatar;
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/profile/Avatar.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/profile/Avatar.java
new file mode 100644
index 0000000..814cdf3
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/profile/Avatar.java
@@ -0,0 +1,201 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.entity.profile;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+/**
+ * <p>Title: The profile avatar entity class</p>
+ * <p>Description: the profile avatar include image encoding type and image base64 string</p>
+ * <p>Copyright: Copyright (c) 2014</p>
+ * <p>Company: pci-suntek</p>
+ *
+ * @author zrq
+ * @version 1.0
+ *
+ */
+public class Avatar extends BaseModel implements Parcelable,Serializable
+{
+ private static final long serialVersionUID = -47856440160432L;
+
+ /** The avatar image type. */
+ private IMAGE_TYPE avatarImgType = IMAGE_TYPE.PNG;
+
+ /** The image encoding. */
+ private String imgEncoding = "BASE64";
+
+ /** The image base64 str. */
+ private String imgBase64Str;
+
+ /**
+ * Instantiates a new avatar.
+ */
+ public Avatar()
+ {}
+
+ /**
+ * Instantiates a new avatar.
+ *
+ * @param source the source
+ */
+ public Avatar( Parcel source )
+ {
+ readFromParcel( source );
+ }
+
+ /**
+ * The parcel describe contents, defaul is 0.
+ *
+ * @return the int
+ */
+ @Override
+ public int describeContents()
+ {
+ return 0;
+ }
+
+ /**
+ * Write the avatar entity to parcel stream. Pay attention to read and
+ * write variables variables sequence should be consistent or not the
+ * correct results
+ *
+ * @param dest the dest
+ * @param flags the flags
+ */
+ @Override
+ public void writeToParcel( Parcel dest, int flags )
+ {
+ super.writeToParcel( dest, flags );
+ dest.writeInt( avatarImgType.ordinal() );
+ dest.writeString( imgEncoding );
+ dest.writeString( imgBase64Str );
+ }
+
+ /**
+ * Create the avatar entity from parcel stream. Pay attention to read and
+ * write variables variables sequence should be consistent or not the
+ * correct results
+ *
+ * @param source
+ * The parcel stream
+ */
+ public void readFromParcel( Parcel source )
+ {
+ super.readFromParcel( source );
+ avatarImgType = IMAGE_TYPE.valueOf( source.readInt() );
+ imgEncoding = source.readString();
+ imgBase64Str = source.readString();
+ }
+
+ /** The parcel creator. */
+ public static final Parcelable.Creator<Avatar> CREATOR = new Parcelable.Creator<Avatar>() {
+ @Override
+ public Avatar createFromParcel( Parcel source )
+ {
+ return new Avatar( source );
+ }
+
+ @Override
+ public Avatar[] newArray( int size )
+ {
+ return new Avatar[ size ];
+ }
+ };
+
+ /**
+ * Gets the avatar image type.
+ *
+ * @return the avatar image type
+ */
+ public IMAGE_TYPE getAvatarImgType()
+ {
+ return avatarImgType;
+ }
+
+ /**
+ * Sets the avatar image type.
+ *
+ * @param avatarImgType the new avatar image type
+ */
+ public void setAvatarImgType( IMAGE_TYPE avatarImgType )
+ {
+ this.avatarImgType = avatarImgType;
+ }
+
+ /**
+ * Gets the image base64 string.
+ *
+ * @return the image base64 string
+ */
+ public String getImgBase64Str()
+ {
+ return imgBase64Str;
+ }
+
+ /**
+ * Sets the image base64 string.
+ *
+ * @param imgBase64Str the new image base64 string
+ */
+ public void setImgBase64Str( String imgBase64Str )
+ {
+ this.imgBase64Str = imgBase64Str;
+ }
+
+ /**
+ * The Enum IMAGE_TYPE.
+ */
+ public static enum IMAGE_TYPE {
+ PNG, JPG, GIF;
+
+ public static IMAGE_TYPE valueOf( int ordinal )
+ {
+ if( ordinal < 0 || ordinal >= values().length )
+ {
+ throw new IndexOutOfBoundsException( "Invalid ordinal" );
+ }
+
+ return values()[ ordinal ];
+ }
+ }
+
+
+ @Override
+ public String toString() {
+ List<String> list = new ArrayList<String>();
+ list.add("avatarImgType="+ this.avatarImgType);
+ list.add("account="+getAccount());
+ list.add("etag=" + getEtag());
+ list.add("imgEncoding="+ this.imgEncoding);
+ list.add("imgBase64Str="+ this.imgBase64Str);
+
+ return list.toString();
+ }
+
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/profile/BaseModel.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/profile/BaseModel.aidl
new file mode 100644
index 0000000..57f9644
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/profile/BaseModel.aidl
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.entity.profile;
+
+parcelable BaseModel;
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/profile/BaseModel.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/profile/BaseModel.java
new file mode 100644
index 0000000..888583a
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/profile/BaseModel.java
@@ -0,0 +1,150 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.entity.profile;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+/**
+ * <p>Title: The profile base model entity class</p>
+ * <p>Description: the profile base model include the account and the etag</p>
+ * <p>Copyright: Copyright (c) 2014</p>
+ * <p>Company: pci-suntek</p>
+ *
+ * @author zrq
+ * @version 1.0
+ *
+ */
+public class BaseModel implements Parcelable,Serializable
+{
+
+ private static final long serialVersionUID = -1599075631882399753L;
+
+ /** The account. */
+ private String account;
+
+ /** The etag. */
+ private String etag;
+ public BaseModel(){
+
+ }
+ /**
+ * Instantiates a new BaseModel.
+ *
+ * @param source the source
+ */
+ public BaseModel( Parcel source )
+ {
+ readFromParcel( source );
+ }
+ @Override
+ public void writeToParcel(Parcel dest, int arg1) {
+ dest.writeString( account );
+ dest.writeString( etag );
+ }
+
+ /**
+ * Read from parcel.
+ *
+ * @param source the source parcel
+ */
+ public void readFromParcel( Parcel source )
+ {
+ account = source.readString();
+ etag = source.readString();
+ }
+
+ /**
+ * Gets the account.
+ *
+ * @return the account
+ */
+ public String getAccount()
+ {
+ return account;
+ }
+
+ /**
+ * Sets the account.
+ *
+ * @param account the new account
+ */
+ public void setAccount( String account )
+ {
+ this.account = account;
+ }
+
+ /**
+ * Gets the etag.
+ *
+ * @return the etag
+ */
+ public String getEtag()
+ {
+ return etag;
+ }
+
+ /**
+ * Sets the etag.
+ *
+ * @param etag the new etag
+ */
+ public void setEtag( String etag )
+ {
+ this.etag = etag;
+ }
+
+ @Override
+ public String toString() {
+ List<String> list = new ArrayList<String>();
+ list.add("account="+this.account);
+ list.add("etag=" + this.etag);
+ return list.toString();
+ }
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ /** The parcel creator. */
+ public static final Parcelable.Creator<BaseModel> CREATOR = new Parcelable.Creator<BaseModel>() {
+ @Override
+ public BaseModel createFromParcel( Parcel source )
+ {
+ return new BaseModel( source );
+ }
+
+ @Override
+ public BaseModel[] newArray( int size )
+ {
+ return new BaseModel[ size ];
+ }
+ };
+
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/profile/OtherTels.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/profile/OtherTels.aidl
new file mode 100644
index 0000000..05c645a
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/profile/OtherTels.aidl
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.entity.profile;
+
+parcelable OtherTels;
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/profile/OtherTels.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/profile/OtherTels.java
new file mode 100644
index 0000000..e41bdc4
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/profile/OtherTels.java
@@ -0,0 +1,161 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.entity.profile;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+public class OtherTels implements Parcelable
+{
+ //private String homeTel;
+
+ //private String mobilePhone;
+
+ //private String fixedTel;
+
+ private HashMap<String, String> otherTels ;
+
+ public OtherTels()
+ {otherTels = new HashMap<String, String>();}
+
+ public OtherTels( Parcel source )
+ {
+ readFromParcel( source );
+ }
+
+ /**
+ * The parcel describe contents, defaul is 0.
+ *
+ * @return the int
+ */
+ @Override
+ public int describeContents()
+ {
+ return 0;
+ }
+
+ /**
+ * Write the avatar entity to parcel stream. Pay attention to read and write
+ * variables variables sequence should be consistent or not the correct
+ * results
+ *
+ * @param dest
+ * the dest
+ * @param flags
+ * the flags
+ */
+ @Override
+ public void writeToParcel( Parcel dest, int flags )
+ {
+ //dest.writeString( homeTel );
+ //dest.writeString( mobilePhone );
+ //dest.writeString( fixedTel );
+ dest.writeMap( otherTels );
+ }
+
+ /**
+ * Create the avatar entity from parcel stream. Pay attention to read and
+ * write variables variables sequence should be consistent or not the
+ * correct results
+ *
+ * @param source
+ * The parcel stream
+ */
+ @SuppressWarnings( "unchecked" )
+ public void readFromParcel( Parcel source )
+ {
+ //homeTel = source.readString();
+ //mobilePhone = source.readString();
+ //fixedTel = source.readString();
+ source.readMap(otherTels, this.getClass().getClassLoader());
+ }
+
+ /** The parcel creator. */
+ public static final Parcelable.Creator<OtherTels> CREATOR = new Parcelable.Creator<OtherTels>() {
+ @Override
+ public OtherTels createFromParcel( Parcel source )
+ {
+ return new OtherTels( source );
+ }
+
+ @Override
+ public OtherTels[] newArray( int size )
+ {
+ return new OtherTels[ size ];
+ }
+ };
+/*
+ public String getHomeTel()
+ {
+ return homeTel;
+ }
+
+ public void setHomeTel( String homeTel )
+ {
+ this.homeTel = homeTel;
+ }
+
+ public String getMobilePhone()
+ {
+ return mobilePhone;
+ }
+
+ public void setMobilePhone( String mobilePhone )
+ {
+ this.mobilePhone = mobilePhone;
+ }
+
+ public String getFixedTel()
+ {
+ return fixedTel;
+ }
+
+ public void setFixedTel( String fixedTel )
+ {
+ this.fixedTel = fixedTel;
+ }
+*/
+ public HashMap<String, String> getOtherTels()
+ {
+ return otherTels;
+ }
+
+ public void setOtherTels( HashMap<String, String> otherTels )
+ {
+ this.otherTels = otherTels;
+ }
+ @Override
+ public String toString() {
+ List<String> list = new ArrayList<String>();
+ //list.add("homeTel="+ this.homeTel);
+ //list.add("mobilePhone="+ this.mobilePhone);
+ //list.add("fixedTel="+ this.fixedTel);
+ list.add("otherTels="+otherTels);
+ return list.toString();
+ }
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/profile/Profile.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/profile/Profile.aidl
new file mode 100644
index 0000000..bfe7e6f
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/profile/Profile.aidl
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.entity.profile;
+
+parcelable Profile;
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/profile/Profile.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/profile/Profile.java
new file mode 100644
index 0000000..6dd5900
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/profile/Profile.java
@@ -0,0 +1,467 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.entity.profile;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+import android.util.Log;
+
+/**
+ * <p>Title: The profile entity class</p>
+ * <p>Description: the profile include the home address, the email …… and so on</p>
+ * <p>Copyright: Copyright (c) 2014</p>
+ * <p>Company: pci-suntek</p>.
+ *
+ * @author zrq
+ * @version 1.0
+ */
+public class Profile extends BaseModel implements Parcelable,Serializable
+{
+
+ /** The Constant serialVersionUID. */
+ private static final long serialVersionUID = -8351378268771321120L;
+
+ /** The home address. */
+ private String homeAddress;
+
+ /** The email. */
+ private String email;
+
+ /** The birthday. */
+ private String birthday;
+
+ /** The company name. */
+ private String companyName;
+
+ /** The company duty. */
+ private String companyDuty;
+
+ /** The company tel. */
+ private String companyTel;
+
+ /** The company address. */
+ private String companyAddress;
+
+ /** The company fax. */
+ private String companyFax;
+
+ /** The first name. */
+ private String firstName;
+
+ /** The last name. */
+ private String lastName;
+
+ /** The other tels. */
+ private ArrayList<TelephoneModel> otherTels;
+
+ /**
+ * Instantiates a new profile.
+ */
+ public Profile()
+ {}
+
+ /**
+ * Instantiates a new profile.
+ *
+ * @param source the source
+ */
+ public Profile( Parcel source )
+ {
+ readFromParcel( source );
+ }
+
+ /**
+ * The parcel describe contents, defaul is 0.
+ *
+ * @return the int
+ */
+ @Override
+ public int describeContents()
+ {
+ return 0;
+ }
+
+ /**
+ * Write the profile entity to parcel stream. Pay attention to read and
+ * write variables variables sequence should be consistent or not the
+ * correct results
+ *
+ * @param dest the dest
+ * @param flags the flags
+ */
+ @Override
+ public void writeToParcel( Parcel dest, int flags )
+ {
+ super.writeToParcel( dest,flags );
+ dest.writeString( homeAddress );
+ dest.writeString( email );
+ dest.writeString( birthday );
+ dest.writeString( companyName );
+ dest.writeString( companyDuty );
+ dest.writeString( companyTel );
+ dest.writeString( companyAddress );
+ dest.writeString( companyFax );
+ dest.writeString( this.firstName );
+ dest.writeString( this.lastName );
+ dest.writeList(otherTels);
+ }
+
+ /**
+ * Create the profile entity from parcel stream. Pay attention to read and
+ * write variables variables sequence should be consistent or not the
+ * correct results
+ *
+ * @param source
+ * The parcel stream
+ */
+ public void readFromParcel( Parcel source )
+ {
+ super.readFromParcel( source );
+ homeAddress = source.readString();
+ email = source.readString();
+ birthday = source.readString();
+ companyName = source.readString();
+ companyDuty = source.readString();
+ companyTel = source.readString();
+ companyAddress = source.readString();
+ companyFax = source.readString();
+ firstName = source.readString();
+ lastName = source.readString();
+
+ otherTels = new ArrayList<TelephoneModel>();
+ source.readList(otherTels, this.getClass().getClassLoader());
+ }
+
+ /** The parcel creator. */
+ public static final Parcelable.Creator<Profile> CREATOR = new Parcelable.Creator<Profile>() {
+ @Override
+ public Profile createFromParcel( Parcel source )
+ {
+ return new Profile( source );
+ }
+
+ @Override
+ public Profile[] newArray( int size )
+ {
+ return new Profile[ size ];
+ }
+ };
+
+ /**
+ * Gets the home address.
+ *
+ * @return the home address
+ */
+ public String getHomeAddress()
+ {
+ return homeAddress;
+ }
+
+ /**
+ * Sets the home address.
+ *
+ * @param homeAddress the new home address
+ */
+ public void setHomeAddress( String homeAddress )
+ {
+ this.homeAddress = homeAddress;
+ }
+
+ /**
+ * Gets the email.
+ *
+ * @return the email
+ */
+ public String getEmail()
+ {
+ return email;
+ }
+
+ /**
+ * Sets the email.
+ *
+ * @param email the new email
+ */
+ public void setEmail( String email )
+ {
+ this.email = email;
+ }
+
+ /**
+ * Gets the birthday.
+ *
+ * @return the birthday
+ */
+ public String getBirthday()
+ {
+ return birthday;
+ }
+
+ /**
+ * Sets the birthday.
+ *
+ * @param birthday the new birthday
+ */
+ public void setBirthday( String birthday )
+ {
+ this.birthday = birthday;
+ }
+
+ /**
+ * Gets the company name.
+ *
+ * @return the company name
+ */
+ public String getCompanyName()
+ {
+ return companyName;
+ }
+
+ /**
+ * Sets the company name.
+ *
+ * @param companyName the new company name
+ */
+ public void setCompanyName( String companyName )
+ {
+ this.companyName = companyName;
+ }
+
+ /**
+ * Gets the company duty.
+ *
+ * @return the company duty
+ */
+ public String getCompanyDuty()
+ {
+ return companyDuty;
+ }
+
+ /**
+ * Sets the company duty.
+ *
+ * @param companyDuty the new company duty
+ */
+ public void setCompanyDuty( String companyDuty )
+ {
+ this.companyDuty = companyDuty;
+ }
+
+ /**
+ * Gets the company tel.
+ *
+ * @return the company tel
+ */
+ public String getCompanyTel()
+ {
+ return companyTel;
+ }
+
+ /**
+ * Sets the company tel.
+ *
+ * @param companyTel the new company tel
+ */
+ public void setCompanyTel( String companyTel )
+ {
+ this.companyTel = companyTel;
+ }
+
+ /**
+ * Gets the company address.
+ *
+ * @return the company address
+ */
+ public String getCompanyAddress()
+ {
+ return companyAddress;
+ }
+
+ /**
+ * Sets the company address.
+ *
+ * @param companyAddress the new company address
+ */
+ public void setCompanyAddress( String companyAddress )
+ {
+ this.companyAddress = companyAddress;
+ }
+
+ /**
+ * Gets the company fax.
+ *
+ * @return the company fax
+ */
+ public String getCompanyFax()
+ {
+ return companyFax;
+ }
+
+ /**
+ * Sets the company fax.
+ *
+ * @param companyFax the new company fax
+ */
+ public void setCompanyFax( String companyFax )
+ {
+ this.companyFax = companyFax;
+ }
+
+
+
+ /**
+ * Gets the first name.
+ *
+ * @return the first name
+ */
+ public String getFirstName() {
+ return firstName;
+ }
+
+ /**
+ * Sets the first name.
+ *
+ * @param firstName the new first name
+ */
+ public void setFirstName(String firstName) {
+ this.firstName = firstName;
+ }
+
+ /**
+ * Gets the last name.
+ *
+ * @return the last name
+ */
+ public String getLastName() {
+ return lastName;
+ }
+
+ /**
+ * Combine the first name and the last name.
+ *
+ * @return displayName
+ */
+ public String getDisplayName() {
+ String first = firstName; // given name.
+ String last = lastName; // family name.
+
+ // 按照中文名/英文名决定排序
+ boolean isLettersOnly = true;
+
+ isLettersOnly = isLettersOnly && isNullOrLettersOnly(first);
+ isLettersOnly = isLettersOnly && isNullOrLettersOnly(last);
+
+ // Avoid "null" to show in the UI.
+ if (first == null) {
+ first = "";
+ }
+ if (last == null) {
+ last = "";
+ }
+
+ if (isLettersOnly) {
+ return first + " " + last;
+ } else {
+ return last + first;
+ }
+ }
+
+ private boolean isNullOrLettersOnly(String text) {
+ if (text == null) {
+ return true;
+ }
+
+ return isLettersOnly(text.trim());
+ }
+
+ /**
+ * Returns whether the given CharSequence contains only letters.
+ */
+ public static boolean isLettersOnly(CharSequence str) {
+ final int len = str.length();
+ for (int i = 0; i < len; i++) {
+ char c = str.charAt(i);
+ if ((c < 'a' || c > 'z') && (c < 'A' || c > 'Z')) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ /**
+ * Sets the last name.
+ *
+ * @param lastName the new last name
+ */
+ public void setLastName(String lastName) {
+ this.lastName = lastName;
+ }
+
+ /**
+ * Gets the other tels.
+ *
+ * @return the other tels
+ */
+ public ArrayList<TelephoneModel> getOtherTels() {
+ if(otherTels == null){
+ return new ArrayList<TelephoneModel>();
+ }
+ return otherTels;
+ }
+
+ /**
+ * Sets the other tels.
+ *
+ * @param otherTels the new other tels
+ */
+ public void setOtherTels(ArrayList<TelephoneModel> otherTels) {
+ this.otherTels = otherTels;
+ }
+
+ /*
+ * @see com.suntek.mway.rcs.client.api.plugin.entity.profile.BaseModel#toString()
+ */
+ @Override
+ public String toString() {
+ List<String> list = new ArrayList<String>();
+ list.add("homeAddress="+ this.homeAddress);
+ list.add("email="+ this.email);
+ list.add("birthday="+ this.birthday);
+ list.add("companyName="+ this.companyName);
+ list.add("companyDuty="+ this.companyDuty);
+ list.add("companyTel="+ this.companyTel);
+ list.add("companyAddress="+ this.companyAddress);
+ list.add("companyFax="+ this.companyFax);
+ list.add("firstName="+ this.firstName);
+ list.add("lastName="+ this.lastName);
+ list.add("otherTels="+ (this.otherTels == null ? null : this.otherTels.toString()));
+ list.add("account="+getAccount());
+ list.add("etag=" + getEtag());
+ return list.toString();
+ }
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/profile/ProfileName.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/profile/ProfileName.aidl
new file mode 100644
index 0000000..0c6114f
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/profile/ProfileName.aidl
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.entity.profile;
+
+parcelable ProfileName;
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/profile/ProfileName.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/profile/ProfileName.java
new file mode 100644
index 0000000..1bc7bd9
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/profile/ProfileName.java
@@ -0,0 +1,217 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.entity.profile;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+public class ProfileName implements Parcelable
+{
+ private String displayName = null;
+
+ private String nickName = null;
+
+ private String familyName = null;
+
+ private String firstName = null;
+
+ private String givenName = null;
+
+ private String middleName = null;
+
+ private String nameSuffix = null;
+
+ private String namePrefix = null;
+
+ public ProfileName()
+ {}
+
+ public ProfileName( Parcel source )
+ {
+ readFromParcel( source );
+ }
+
+ /**
+ * The parcel describe contents, defaul is 0.
+ *
+ * @return the int
+ */
+ @Override
+ public int describeContents()
+ {
+ return 0;
+ }
+
+ /**
+ * Write the avatar entity to parcel stream. Pay attention to read and
+ * write variables variables sequence should be consistent or not the
+ * correct results
+ *
+ * @param dest the dest
+ * @param flags the flags
+ */
+ @Override
+ public void writeToParcel( Parcel dest, int flags )
+ {
+ dest.writeString( displayName );
+ dest.writeString( nickName );
+ dest.writeString( familyName );
+ dest.writeString( firstName );
+ dest.writeString( givenName );
+ dest.writeString( middleName );
+ dest.writeString( nameSuffix );
+ dest.writeString( namePrefix );
+ }
+
+ /**
+ * Create the avatar entity from parcel stream. Pay attention to read and
+ * write variables variables sequence should be consistent or not the
+ * correct results
+ *
+ * @param source
+ * The parcel stream
+ */
+ public void readFromParcel( Parcel source )
+ {
+ displayName = source.readString();
+ nickName = source.readString();
+ familyName = source.readString();
+ firstName = source.readString();
+ givenName = source.readString();
+ middleName = source.readString();
+ nameSuffix = source.readString();
+ namePrefix = source.readString();
+ }
+
+ /** The parcel creator. */
+ public static final Parcelable.Creator<ProfileName> CREATOR = new Parcelable.Creator<ProfileName>() {
+ @Override
+ public ProfileName createFromParcel( Parcel source )
+ {
+ return new ProfileName( source );
+ }
+
+ @Override
+ public ProfileName[] newArray( int size )
+ {
+ return new ProfileName[ size ];
+ }
+ };
+
+ public String getDisplayName()
+ {
+ return displayName;
+ }
+
+ public void setDisplayName( String displayName )
+ {
+ this.displayName = displayName;
+ }
+
+ public String getNickName()
+ {
+ return nickName;
+ }
+
+ public void setNickName( String nickName )
+ {
+ this.nickName = nickName;
+ }
+
+ public String getFamilyName()
+ {
+ return familyName;
+ }
+
+ public void setFamilyName( String familyName )
+ {
+ this.familyName = familyName;
+ }
+
+ public String getFirstName()
+ {
+ return firstName;
+ }
+
+ public void setFirstName( String firstName )
+ {
+ this.firstName = firstName;
+ }
+
+ public String getGivenName()
+ {
+ return givenName;
+ }
+
+ public void setGivenName( String givenName )
+ {
+ this.givenName = givenName;
+ }
+
+ public String getMiddleName()
+ {
+ return middleName;
+ }
+
+ public void setMiddleName( String middleName )
+ {
+ this.middleName = middleName;
+ }
+
+ public String getNameSuffix()
+ {
+ return nameSuffix;
+ }
+
+ public void setNameSuffix( String nameSuffix )
+ {
+ this.nameSuffix = nameSuffix;
+ }
+
+ public String getNamePrefix()
+ {
+ return namePrefix;
+ }
+
+ public void setNamePrefix( String namePrefix )
+ {
+ this.namePrefix = namePrefix;
+ }
+ @Override
+ public String toString() {
+ List<String> list = new ArrayList<String>();
+ list.add("displayName="+ this.displayName);
+ list.add("nickName="+ this.nickName);
+ list.add("familyName="+ this.familyName);
+ list.add("firstName="+ this.firstName);
+ list.add("givenName="+ this.givenName);
+ list.add("middleName="+ this.middleName);
+ list.add("nameSuffix="+ this.nameSuffix);
+ list.add("namePrefix="+ this.namePrefix);
+ return list.toString();
+ }
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/profile/QRCardBusinessFlag.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/profile/QRCardBusinessFlag.aidl
new file mode 100644
index 0000000..2ad1001
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/profile/QRCardBusinessFlag.aidl
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.entity.profile;
+
+parcelable QRCardBusinessFlag;
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/profile/QRCardBusinessFlag.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/profile/QRCardBusinessFlag.java
new file mode 100644
index 0000000..30f0e40
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/profile/QRCardBusinessFlag.java
@@ -0,0 +1,120 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.entity.profile;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+public class QRCardBusinessFlag extends BaseModel implements Parcelable
+{
+ private boolean businessFlag;
+
+ public QRCardBusinessFlag()
+ {}
+
+ public QRCardBusinessFlag( Parcel source )
+ {
+ readFromParcel( source );
+ }
+
+ /**
+ * The parcel describe contents, defaul is 0.
+ *
+ * @return the int
+ */
+ @Override
+ public int describeContents()
+ {
+ return 0;
+ }
+
+ /**
+ * Write the qr card business flag entity to parcel stream. Pay attention to read and
+ * write variables variables sequence should be consistent or not the
+ * correct results
+ *
+ * @param dest
+ * the dest
+ * @param flags
+ * the flags
+ */
+ @Override
+ public void writeToParcel( Parcel dest, int flags )
+ {
+ super.writeToParcel( dest,flags );
+ dest.writeBooleanArray( new boolean[]{ businessFlag } );
+ }
+
+ /**
+ * Create the qr card business flag entity from parcel stream. Pay attention to read and
+ * write variables variables sequence should be consistent or not the
+ * correct results
+ *
+ * @param source
+ * The parcel stream
+ */
+ public void readFromParcel( Parcel source )
+ {
+ super.readFromParcel( source );
+ boolean[] val = new boolean[ 1 ];
+ source.readBooleanArray( val );
+ businessFlag = val[ 0 ];
+ }
+
+ /** The parcel creator. */
+ public static final Parcelable.Creator<QRCardBusinessFlag> CREATOR = new Parcelable.Creator<QRCardBusinessFlag>() {
+ @Override
+ public QRCardBusinessFlag createFromParcel( Parcel source )
+ {
+ return new QRCardBusinessFlag( source );
+ }
+
+ @Override
+ public QRCardBusinessFlag[] newArray( int size )
+ {
+ return new QRCardBusinessFlag[ size ];
+ }
+ };
+
+ public boolean isBusinessFlag()
+ {
+ return businessFlag;
+ }
+
+ public void setBusinessFlag( boolean businessFlag )
+ {
+ this.businessFlag = businessFlag;
+ }
+ @Override
+ public String toString() {
+ List<String> list = new ArrayList<String>();
+ list.add("businessFlag="+ this.businessFlag);
+ list.add("account="+getAccount());
+ list.add("etag=" + getEtag());
+ return list.toString();
+ }
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/profile/QRCardImg.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/profile/QRCardImg.aidl
new file mode 100644
index 0000000..98e8f13
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/profile/QRCardImg.aidl
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.entity.profile;
+
+parcelable QRCardImg;
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/profile/QRCardImg.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/profile/QRCardImg.java
new file mode 100644
index 0000000..b038ecc
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/profile/QRCardImg.java
@@ -0,0 +1,197 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.entity.profile;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+public class QRCardImg extends BaseModel implements Parcelable,Serializable
+{
+ private static final long serialVersionUID = 4674425471217216710L;
+
+ private boolean businessFlag;
+
+ private IMAGE_TYPE imgType = IMAGE_TYPE.PNG;
+
+ private String imgEncoding = "BASE64";
+
+ private String description;
+
+ private String imgBase64Str;
+
+ public QRCardImg()
+ {}
+
+ public QRCardImg( Parcel source )
+ {
+ readFromParcel( source );
+ }
+
+ /**
+ * The parcel describe contents, defaul is 0.
+ *
+ * @return the int
+ */
+ @Override
+ public int describeContents()
+ {
+ return 0;
+ }
+
+ /**
+ * Write the qr card image entity to parcel stream. Pay attention to read
+ * and write variables variables sequence should be consistent or not the
+ * correct results
+ *
+ * @param dest
+ * the dest
+ * @param flags
+ * the flags
+ */
+ @Override
+ public void writeToParcel( Parcel dest, int flags )
+ {
+ super.writeToParcel( dest,flags );
+ dest.writeBooleanArray( new boolean[] { businessFlag } );
+ dest.writeInt( imgType.ordinal() );
+ dest.writeString( imgEncoding );
+ dest.writeString( description );
+ dest.writeString( imgBase64Str );
+ }
+
+ /**
+ * Create the qr card image entity from parcel stream. Pay attention to read
+ * and write variables variables sequence should be consistent or not the
+ * correct results
+ *
+ * @param source
+ * The parcel stream
+ */
+ public void readFromParcel( Parcel source )
+ {
+ super.readFromParcel( source );
+ boolean[] val = new boolean[ 1 ];
+ source.readBooleanArray( val );
+ businessFlag = val[ 0 ];
+ imgType = IMAGE_TYPE.valueOf( source.readInt() );
+ imgEncoding = source.readString();
+ description = source.readString();
+ imgBase64Str = source.readString();
+ }
+
+ /** The parcel creator. */
+ public static final Parcelable.Creator<QRCardImg> CREATOR = new Parcelable.Creator<QRCardImg>() {
+ @Override
+ public QRCardImg createFromParcel( Parcel source )
+ {
+ return new QRCardImg( source );
+ }
+
+ @Override
+ public QRCardImg[] newArray( int size )
+ {
+ return new QRCardImg[ size ];
+ }
+ };
+
+ public boolean isBusinessFlag()
+ {
+ return businessFlag;
+ }
+
+ public void setBusinessFlag( boolean businessFlag )
+ {
+ this.businessFlag = businessFlag;
+ }
+
+ public IMAGE_TYPE getImgType()
+ {
+ return imgType;
+ }
+
+ public void setImgType( IMAGE_TYPE imgType )
+ {
+ this.imgType = imgType;
+ }
+
+ public String getImgEncoding()
+ {
+ return imgEncoding;
+ }
+
+ public void setImgEncoding( String imgEncoding )
+ {
+ this.imgEncoding = imgEncoding;
+ }
+
+ public String getDescription()
+ {
+ return description;
+ }
+
+ public void setDescription( String description )
+ {
+ this.description = description;
+ }
+
+ public String getImgBase64Str()
+ {
+ return imgBase64Str;
+ }
+
+ public void setImgBase64Str( String imgBase64Str )
+ {
+ this.imgBase64Str = imgBase64Str;
+ }
+
+ public static enum IMAGE_TYPE {
+ PNG, JPG, GIF;
+
+ public static IMAGE_TYPE valueOf( int ordinal )
+ {
+ if( ordinal < 0 || ordinal >= values().length )
+ {
+ throw new IndexOutOfBoundsException( "Invalid ordinal" );
+ }
+
+ return values()[ ordinal ];
+ }
+ }
+ @Override
+ public String toString() {
+ List<String> list = new ArrayList<String>();
+ list.add("businessFlag="+ this.businessFlag);
+ list.add("imgEncoding="+ this.imgEncoding);
+ list.add("imgBase64Str="+ this.imgBase64Str);
+ list.add("imgType="+ this.imgType);
+ list.add("description="+ this.description);
+ list.add("account=" + getAccount());
+ list.add("etag=" + getEtag());
+ return list.toString();
+ }
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/profile/QRCardInfo.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/profile/QRCardInfo.aidl
new file mode 100644
index 0000000..cf0a486
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/profile/QRCardInfo.aidl
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.entity.profile;
+
+parcelable QRCardInfo;
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/profile/QRCardInfo.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/profile/QRCardInfo.java
new file mode 100644
index 0000000..1c1e37d
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/profile/QRCardInfo.java
@@ -0,0 +1,219 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.entity.profile;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+public class QRCardInfo extends BaseModel implements Parcelable,Serializable
+{
+ private static final long serialVersionUID = 5140344570754052168L;
+ private String name;
+ private String tel;
+ //private String imgUrl;
+ private String companyTel;
+ private String companyFax;
+ private String companyName;
+ private String companyDuty;
+ private String companyEmail;
+
+ public QRCardInfo()
+ {}
+
+ public QRCardInfo( Parcel source )
+ {
+ readFromParcel( source );
+ }
+
+ /**
+ * The parcel describe contents, defaul is 0.
+ *
+ * @return the int
+ */
+ @Override
+ public int describeContents()
+ {
+ return 0;
+ }
+
+ /**
+ * Write the qr card entity to parcel stream. Pay attention to read and
+ * write variables variables sequence should be consistent or not the
+ * correct results
+ *
+ * @param dest
+ * the dest
+ * @param flags
+ * the flags
+ */
+ @Override
+ public void writeToParcel( Parcel dest, int flags )
+ {
+ super.writeToParcel( dest,flags );
+ dest.writeString( name );
+ dest.writeString( tel );
+ //dest.writeString( imgUrl );
+ dest.writeString( companyTel );
+ dest.writeString( companyFax );
+ dest.writeString( companyName );
+ dest.writeString( companyDuty );
+ dest.writeString( companyEmail );
+ }
+
+ /**
+ * Create the qr card entity from parcel stream. Pay attention to read and
+ * write variables variables sequence should be consistent or not the
+ * correct results
+ *
+ * @param source
+ * The parcel stream
+ */
+ public void readFromParcel( Parcel source )
+ {
+ super.readFromParcel( source );
+ name = source.readString();
+ tel = source.readString();
+ //imgUrl = source.readString();
+ companyTel = source.readString();
+ companyFax = source.readString();
+ companyName = source.readString();
+ companyDuty = source.readString();
+ companyEmail = source.readString();
+ }
+
+ /** The parcel creator. */
+ public static final Parcelable.Creator<QRCardInfo> CREATOR = new Parcelable.Creator<QRCardInfo>() {
+ @Override
+ public QRCardInfo createFromParcel( Parcel source )
+ {
+ return new QRCardInfo( source );
+ }
+
+ @Override
+ public QRCardInfo[] newArray( int size )
+ {
+ return new QRCardInfo[ size ];
+ }
+ };
+
+ public String getName()
+ {
+ return name;
+ }
+
+ public void setName( String name )
+ {
+ this.name = name;
+ }
+
+ public String getTel()
+ {
+ return tel;
+ }
+
+ public void setTel( String tel )
+ {
+ this.tel = tel;
+ }
+
+ /*
+ public String getImgUrl()
+ {
+ return imgUrl;
+ }
+
+ public void setImgUrl( String imgUrl )
+ {
+ this.imgUrl = imgUrl;
+ }
+ */
+ public String getCompanyTel()
+ {
+ return companyTel;
+ }
+
+ public void setCompanyTel( String companyTel )
+ {
+ this.companyTel = companyTel;
+ }
+
+ public String getCompanyFax()
+ {
+ return companyFax;
+ }
+
+ public void setCompanyFax( String companyFax )
+ {
+ this.companyFax = companyFax;
+ }
+
+ public String getCompanyName()
+ {
+ return companyName;
+ }
+
+ public void setCompanyName( String companyName )
+ {
+ this.companyName = companyName;
+ }
+
+ public String getCompanyDuty()
+ {
+ return companyDuty;
+ }
+
+ public void setCompanyDuty( String companyDuty )
+ {
+ this.companyDuty = companyDuty;
+ }
+
+ public String getCompanyEmail()
+ {
+ return companyEmail;
+ }
+
+ public void setCompanyEmail( String companyEmail )
+ {
+ this.companyEmail = companyEmail;
+ }
+ @Override
+ public String toString() {
+ List<String> list = new ArrayList<String>();
+ list.add("name="+ this.name);
+ list.add("tel="+ this.tel);
+ //list.add("imgUrl="+ this.imgUrl);
+ list.add("companyTel="+ this.companyTel);
+ list.add("companyFax="+ this.companyFax);
+ list.add("companyName="+ this.companyName);
+ list.add("companyDuty="+ this.companyDuty);
+ list.add("companyEmail="+ this.companyEmail);
+ list.add("account=" + getAccount());
+ list.add("etag=" + getEtag());
+ return list.toString();
+ }
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/profile/TelephoneModel.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/profile/TelephoneModel.aidl
new file mode 100644
index 0000000..2e04a37
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/profile/TelephoneModel.aidl
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.entity.profile;
+
+parcelable TelephoneModel;
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/profile/TelephoneModel.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/profile/TelephoneModel.java
new file mode 100644
index 0000000..89d6f2a
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/profile/TelephoneModel.java
@@ -0,0 +1,99 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.entity.profile;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+public class TelephoneModel implements Parcelable,Serializable{
+
+ private static final long serialVersionUID = 2509804884372655920L;
+ public static int TYPE_HOME = 1;
+ public static int TYPE_MOBILE = 2;
+ public static int TYPE_FIXED = 3;
+ public static int TYPE_WORK = 4;
+ public static int TYPE_OTHER = 5;
+
+ private int type;
+ private String telephone;
+
+ public TelephoneModel()
+ {}
+
+ public TelephoneModel( Parcel source )
+ {
+ this.type = source.readInt();
+ this.telephone = source.readString();
+ }
+
+ public int getType() {
+ return type;
+ }
+ public void setType(int type) {
+ this.type = type;
+ }
+ public String getTelephone() {
+ return telephone;
+ }
+ public void setTelephone(String telephone) {
+ this.telephone = telephone;
+ }
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+ @Override
+ public void writeToParcel(Parcel dest, int arg1) {
+ dest.writeInt(this.type);
+ dest.writeString(this.telephone);
+ }
+
+ public static final Parcelable.Creator<TelephoneModel> CREATOR = new Parcelable.Creator<TelephoneModel>() {
+ @Override
+ public TelephoneModel createFromParcel( Parcel source )
+ {
+ return new TelephoneModel( source );
+ }
+
+ @Override
+ public TelephoneModel[] newArray( int size )
+ {
+ return new TelephoneModel[ size ];
+ }
+ };
+
+ @Override
+ public String toString() {
+ List<String> list = new ArrayList<String>();
+ list.add("type=" + type);
+ list.add("telephone=" + telephone);
+ return list.toString();
+ }
+
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/pubacct/MediaArticle.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/pubacct/MediaArticle.aidl
new file mode 100644
index 0000000..d513aad
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/pubacct/MediaArticle.aidl
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.entity.pubacct;
+
+parcelable MediaArticle;
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/pubacct/MediaArticle.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/pubacct/MediaArticle.java
new file mode 100644
index 0000000..c186e4f
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/pubacct/MediaArticle.java
@@ -0,0 +1,492 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.entity.pubacct;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+/**
+ * <p>
+ * Title: The media article entity
+ * </p>
+ * <p>
+ * Description: The media article entity
+ * </p>
+ * <p>
+ * Copyright: Copyright (c) 2014
+ * </p>
+ * <p>
+ * Company: pci-suntek
+ * </p>
+ *
+ * @author zrq
+ * @version 1.0
+ *
+ */
+public class MediaArticle implements Parcelable
+{
+
+ /** The title. */
+ private String title;
+
+ /** The author. */
+ private String author;
+
+ /** The thumb picture link. */
+ private String thumbLink;
+
+ /** The original picture link. */
+ private String originalLink;
+
+ /** The source link. */
+ private String sourceLink;
+
+ /** The main text. */
+ private String mainText;
+
+ /** The media uuid. */
+ private String mediaUuid;
+
+ /** The middle link. */
+// private String middleLink;
+
+ /** The media type. */
+// private String mediaType;
+
+ /** The digest. */
+ private String digest;
+
+ /** The view type. */
+// private String viewType;
+
+ /** The major article. */
+ private int majorArticle;
+
+ /** The child articles. */
+// private List<MediaArticle> childArticles;
+
+ /**
+ * Instantiates a new media article.
+ */
+ public MediaArticle()
+ {}
+
+ /**
+ * Instantiates a new media article.
+ *
+ * @param source
+ * the source
+ */
+ public MediaArticle( Parcel source )
+ {
+ readFromParcel( source );
+ }
+
+ /**
+ * The parcel describe contents, defaul is 0.
+ *
+ * @return the int
+ */
+ @Override
+ public int describeContents()
+ {
+ return 0;
+ }
+
+ /**
+ * Write the media article entity to parcel stream. Pay attention to read
+ * and write variables variables sequence should be consistent or not the
+ * correct results
+ *
+ * @param dest
+ * the dest parcel stream
+ * @param flags
+ * the flags
+ */
+ @Override
+ public void writeToParcel( Parcel dest, int flags )
+ {
+ dest.writeString( title );
+ dest.writeString( author );
+ dest.writeString( thumbLink );
+ dest.writeString( originalLink );
+ dest.writeString( sourceLink );
+ dest.writeString( mainText );
+ dest.writeString( mediaUuid );
+// dest.writeString( middleLink );
+// dest.writeString( mediaType );
+ dest.writeString( digest );
+// dest.writeString( viewType );
+ dest.writeInt(majorArticle);
+// dest.writeList( childArticles );
+ }
+
+ /**
+ * Create the media article entity from parcel stream. Pay attention to read
+ * and write variables variables sequence should be consistent or not the
+ * correct results
+ *
+ * @param source
+ * The parcel stream
+ */
+ public void readFromParcel( Parcel source )
+ {
+ title = source.readString();
+ author = source.readString();
+ thumbLink = source.readString();
+ originalLink = source.readString();
+ sourceLink = source.readString();
+ mainText = source.readString();
+ mediaUuid = source.readString();
+// middleLink = source.readString();
+// mediaType = source.readString();
+ digest = source.readString();
+// viewType = source.readString();
+ majorArticle = source.readInt();
+// childArticles = new LinkedList<MediaArticle>();
+// source.readList( childArticles, this.getClass().getClassLoader() );
+ }
+
+ /** The parcel creator. */
+ public static final Parcelable.Creator<MediaArticle> CREATOR = new Parcelable.Creator<MediaArticle>() {
+ @Override
+ public MediaArticle createFromParcel( Parcel source )
+ {
+ return new MediaArticle( source );
+ }
+
+ @Override
+ public MediaArticle[] newArray( int size )
+ {
+ return new MediaArticle[ size ];
+ }
+ };
+
+ /**
+ * Gets the title.
+ *
+ * @return the title
+ */
+ public String getTitle()
+ {
+ return title;
+ }
+
+ /**
+ * Sets the title.
+ *
+ * @param title
+ * the new title
+ */
+ public void setTitle( String title )
+ {
+ this.title = title;
+ }
+
+ /**
+ * Gets the author.
+ *
+ * @return the author
+ */
+ public String getAuthor()
+ {
+ return author;
+ }
+
+ /**
+ * Sets the author.
+ *
+ * @param author
+ * the new author
+ */
+ public void setAuthor( String author )
+ {
+ this.author = author;
+ }
+
+ /**
+ * Gets the thumb picture link.
+ *
+ * @return the thumb picture link
+ */
+ public String getThumbLink()
+ {
+ return thumbLink;
+ }
+
+ /**
+ * Sets the thumb picture link.
+ *
+ * @param thumbLink
+ * the new thumb picture link
+ */
+ public void setThumbLink( String thumbLink )
+ {
+ this.thumbLink = thumbLink;
+ }
+
+ /**
+ * Gets the original picture link.
+ *
+ * @return the original picture link
+ */
+ public String getOriginalLink()
+ {
+ return originalLink;
+ }
+
+ /**
+ * Sets the original picture link.
+ *
+ * @param originalLink
+ * the new original picture link
+ */
+ public void setOriginalLink( String originalLink )
+ {
+ this.originalLink = originalLink;
+ }
+
+ /**
+ * Gets the source link.
+ *
+ * @return the source link
+ */
+ public String getSourceLink()
+ {
+ return sourceLink;
+ }
+
+ /**
+ * Sets the source link.
+ *
+ * @param sourceLink
+ * the new source link
+ */
+ public void setSourceLink( String sourceLink )
+ {
+ this.sourceLink = sourceLink;
+ }
+
+ /**
+ * Gets the main text.
+ *
+ * @return the main text
+ */
+ public String getMainText()
+ {
+ return mainText;
+ }
+
+ /**
+ * Sets the main text.
+ *
+ * @param mainText
+ * the new main text
+ */
+ public void setMainText( String mainText )
+ {
+ this.mainText = mainText;
+ }
+
+ /**
+ * Gets the media uuid.
+ *
+ * @return the media uuid
+ */
+ public String getMediaUuid()
+ {
+ return mediaUuid;
+ }
+
+ /**
+ * Sets the media uuid.
+ *
+ * @param mediaUuid
+ * the new media uuid
+ */
+ public void setMediaUuid( String mediaUuid )
+ {
+ this.mediaUuid = mediaUuid;
+ }
+
+ /**
+ * Gets the middle link.
+ *
+ * @return the middle link
+ */
+// public String getMiddleLink()
+// {
+// return middleLink;
+// }
+
+ /**
+ * Sets the middle link.
+ *
+ * @param middleLink
+ * the new middle link
+ */
+// public void setMiddleLink( String middleLink )
+// {
+// this.middleLink = middleLink;
+// }
+
+ /**
+ * Gets the media type.
+ *
+ * @return the media type
+ */
+// public String getMediaType()
+// {
+// return mediaType;
+// }
+
+ /**
+ * Sets the media type.
+ *
+ * @param mediaType
+ * the new media type
+ */
+// public void setMediaType( String mediaType )
+// {
+// this.mediaType = mediaType;
+// }
+
+ /**
+ * Gets the digest.
+ *
+ * @return the digest
+ */
+ public String getDigest()
+ {
+ return digest;
+ }
+
+ /**
+ * Sets the digest.
+ *
+ * @param digest
+ * the new digest
+ */
+ public void setDigest( String digest )
+ {
+ this.digest = digest;
+ }
+
+ /**
+ * Gets the view type.
+ *
+ * @return the view type
+ */
+// public String getViewType()
+// {
+// return viewType;
+// }
+
+ /**
+ * Sets the view type.
+ *
+ * @param viewType
+ * the new view type
+ */
+// public void setViewType( String viewType )
+// {
+// this.viewType = viewType;
+// }
+
+ /**
+ * Gets the major article.
+ *
+ * @return the major article
+ */
+ public int getMajorArticle()
+ {
+ return majorArticle;
+ }
+
+ /**
+ * Sets the major article.
+ *
+ * @param majorArticle
+ * the new major article
+ */
+ public void setMajorArticle( int majorArticle )
+ {
+ this.majorArticle = majorArticle;
+ }
+
+ /**
+ * Gets the child articles.
+ *
+ * @return the child articles
+ */
+// public List<MediaArticle> getChildArticles()
+// {
+// return childArticles;
+// }
+
+ /**
+ * Sets the child articles.
+ *
+ * @param childArticles
+ * the new child articles
+ */
+// public void setChildArticles( List<MediaArticle> childArticles )
+// {
+// this.childArticles = childArticles;
+// }
+
+ @Override
+ public String toString() {
+ StringBuffer sbuffer = new StringBuffer();
+ if(null != this.title){
+ sbuffer.append(",title=").append(this.title);
+ }
+ if(null != this.thumbLink){
+ sbuffer.append(",thumbLink=").append(this.thumbLink);
+ }
+ if(null != this.originalLink){
+ sbuffer.append(",originalLink=").append(this.originalLink);
+ }
+ if(null != this.sourceLink){
+ sbuffer.append(",sourceLink=").append(this.sourceLink);
+ }
+ if(null != this.mainText){
+ sbuffer.append(",mainText=").append(this.mainText);
+ }
+ if(null != this.mediaUuid){
+ sbuffer.append(",mediaUuid=").append(this.mediaUuid);
+ }
+ if(null != this.digest){
+ sbuffer.append(",digest=").append(this.digest);
+ }
+ sbuffer.append(",majorArticle=").append(this.majorArticle);
+
+ if(sbuffer.length() > 1){
+ return sbuffer.substring(1).toString();
+ }else{
+ return "";
+ }
+
+ }
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/pubacct/MediaBasic.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/pubacct/MediaBasic.aidl
new file mode 100644
index 0000000..61ba226
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/pubacct/MediaBasic.aidl
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.entity.pubacct;
+
+parcelable MediaBasic;
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/pubacct/MediaBasic.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/pubacct/MediaBasic.java
new file mode 100644
index 0000000..a534c24
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/pubacct/MediaBasic.java
@@ -0,0 +1,390 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.entity.pubacct;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+/**
+ * <p>
+ * Title: The media basic entity
+ * </p>
+ * <p>
+ * Description: The media basic entity
+ * </p>
+ * <p>
+ * Copyright: Copyright (c) 2014
+ * </p>
+ * <p>
+ * Company: pci-suntek
+ * </p>
+ *
+ * @author zrq
+ * @version 1.0
+ *
+ */
+public class MediaBasic implements Parcelable
+{
+ /** The thumb picture link. */
+ private String thumbLink;
+
+ /** The original picture link. */
+ private String originalLink;
+
+ /** The title. */
+ private String title;
+
+ /** The file size. */
+ private String fileSize;
+
+ /** The duration. */
+ private String duration;
+
+ /** The file type. */
+ private String fileType;
+
+ /** The create time. */
+ private String createTime;
+
+ /** The media uuid. */
+ private String mediaUuid;
+
+ /** The pa uuid. */
+ private String paUuid;
+
+ /**
+ * Instantiates a new media basic.
+ */
+ public MediaBasic()
+ {}
+
+ /**
+ * Instantiates a new media basic.
+ *
+ * @param source
+ * the source
+ */
+ public MediaBasic( Parcel source )
+ {
+ readFromParcel( source );
+ }
+
+ /**
+ * The parcel describe contents, defaul is 0.
+ *
+ * @return the int
+ */
+ @Override
+ public int describeContents()
+ {
+ return 0;
+ }
+
+ /**
+ * Write the media basic entity to parcel stream. Pay attention to read and
+ * write variables variables sequence should be consistent or not the
+ * correct results
+ *
+ * @param dest
+ * the dest parcel stream
+ * @param flags
+ * the flags
+ */
+ @Override
+ public void writeToParcel( Parcel dest, int flags )
+ {
+ dest.writeString( thumbLink );
+ dest.writeString( originalLink );
+ dest.writeString( title );
+ dest.writeString( fileSize );
+ dest.writeString( duration );
+ dest.writeString( fileType );
+ dest.writeString( createTime );
+ dest.writeString( mediaUuid );
+ dest.writeString( paUuid );
+ }
+
+ /**
+ * Create the media basic entity from parcel stream. Pay attention to read
+ * and write variables variables sequence should be consistent or not the
+ * correct results
+ *
+ * @param source
+ * The parcel stream
+ */
+ public void readFromParcel( Parcel source )
+ {
+ thumbLink = source.readString();
+ originalLink = source.readString();
+ title = source.readString();
+ fileSize = source.readString();
+ duration = source.readString();
+ fileType = source.readString();
+ createTime = source.readString();
+ mediaUuid = source.readString();
+ paUuid = source.readString();
+ }
+
+ /** The parcel creator. */
+ public static final Parcelable.Creator<MediaBasic> CREATOR = new Parcelable.Creator<MediaBasic>() {
+ @Override
+ public MediaBasic createFromParcel( Parcel source )
+ {
+ return new MediaBasic( source );
+ }
+
+ @Override
+ public MediaBasic[] newArray( int size )
+ {
+ return new MediaBasic[ size ];
+ }
+ };
+
+ /**
+ * Gets the thumb picture link.
+ *
+ * @return the thumb picture link
+ */
+ public String getThumbLink()
+ {
+ return thumbLink;
+ }
+
+ /**
+ * Sets the thumb picture link.
+ *
+ * @param thumbLink
+ * the new thumb picture link
+ */
+ public void setThumbLink( String thumbLink )
+ {
+ this.thumbLink = thumbLink;
+ }
+
+ /**
+ * Gets the original link.
+ *
+ * @return the original link
+ */
+ public String getOriginalLink()
+ {
+ return originalLink;
+ }
+
+ /**
+ * Sets the original link.
+ *
+ * @param originalLink
+ * the new original link
+ */
+ public void setOriginalLink( String originalLink )
+ {
+ this.originalLink = originalLink;
+ }
+
+ /**
+ * Gets the title.
+ *
+ * @return the title
+ */
+ public String getTitle()
+ {
+ return title;
+ }
+
+ /**
+ * Sets the title.
+ *
+ * @param title
+ * the new title
+ */
+ public void setTitle( String title )
+ {
+ this.title = title;
+ }
+
+ /**
+ * Gets the file size.
+ *
+ * @return the file size
+ */
+ public String getFileSize()
+ {
+ return fileSize;
+ }
+
+ /**
+ * Sets the file size.
+ *
+ * @param fileSize
+ * the new file size
+ */
+ public void setFileSize( String fileSize )
+ {
+ this.fileSize = fileSize;
+ }
+
+ /**
+ * Gets the duration.
+ *
+ * @return the duration
+ */
+ public String getDuration()
+ {
+ return duration;
+ }
+
+ /**
+ * Sets the duration.
+ *
+ * @param duration
+ * the new duration
+ */
+ public void setDuration( String duration )
+ {
+ this.duration = duration;
+ }
+
+ /**
+ * Gets the file type.
+ *
+ * @return the file type
+ */
+ public String getFileType()
+ {
+ return fileType;
+ }
+
+ /**
+ * Sets the file type.
+ *
+ * @param fileType
+ * the new file type
+ */
+ public void setFileType( String fileType )
+ {
+ this.fileType = fileType;
+ }
+
+ /**
+ * Gets the creates the time.
+ *
+ * @return the creates the time
+ */
+ public String getCreateTime()
+ {
+ return createTime;
+ }
+
+ /**
+ * Sets the creates the time.
+ *
+ * @param createTime
+ * the new creates the time
+ */
+ public void setCreateTime( String createTime )
+ {
+ this.createTime = createTime;
+ }
+
+ /**
+ * Gets the media uuid.
+ *
+ * @return the media uuid
+ */
+ public String getMediaUuid()
+ {
+ return mediaUuid;
+ }
+
+ /**
+ * Sets the media uuid.
+ *
+ * @param mediaUuid
+ * the new media uuid
+ */
+ public void setMediaUuid( String mediaUuid )
+ {
+ this.mediaUuid = mediaUuid;
+ }
+
+ /**
+ * Gets the pa uuid.
+ *
+ * @return the pa uuid
+ */
+ public String getPaUuid()
+ {
+ return paUuid;
+ }
+
+ /**
+ * Sets the pa uuid.
+ *
+ * @param paUuid
+ * the new pa uuid
+ */
+ public void setPaUuid( String paUuid )
+ {
+ this.paUuid = paUuid;
+ }
+
+ @Override
+ public String toString() {
+ StringBuffer sbuffer = new StringBuffer();
+ if(null != this.thumbLink){
+ sbuffer.append(",thumbLink=").append(this.thumbLink);
+ }
+ if(null != this.originalLink){
+ sbuffer.append(",originalLink=").append(this.originalLink);
+ }
+ if(null != this.title){
+ sbuffer.append(",title=").append(this.title);
+ }
+ if(null != this.fileSize){
+ sbuffer.append(",fileSize=").append(this.fileSize);
+ }
+ if(null != this.duration){
+ sbuffer.append(",duration=").append(this.duration);
+ }
+ if(null != this.fileType){
+ sbuffer.append(",fileType=").append(this.fileType);
+ }
+ if(null != this.createTime){
+ sbuffer.append(",createTime=").append(this.createTime);
+ }
+ if(null != this.mediaUuid){
+ sbuffer.append(",mediaUuid=").append(this.mediaUuid);
+ }
+ if(null != this.paUuid){
+ sbuffer.append(",paUuid=").append(this.paUuid);
+ }
+
+ if(sbuffer.length() > 1){
+ return sbuffer.substring(1).toString();
+ }else{
+ return "";
+ }
+ }
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/pubacct/MenuInfo.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/pubacct/MenuInfo.aidl
new file mode 100644
index 0000000..04248dd
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/pubacct/MenuInfo.aidl
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.entity.pubacct;
+
+parcelable MenuInfo;
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/pubacct/MenuInfo.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/pubacct/MenuInfo.java
new file mode 100644
index 0000000..4b237ca
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/pubacct/MenuInfo.java
@@ -0,0 +1,261 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.entity.pubacct;
+
+import java.util.LinkedList;
+import java.util.List;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+/**
+ * <p>Title: The menu info entity</p>
+ * <p>Description: The menu info entity</p>
+ * <p>Copyright: Copyright (c) 2014</p>
+ * <p>Company: pci-suntek</p>.
+ *
+ * @author zrq
+ * @version 1.0
+ */
+public class MenuInfo implements Parcelable
+{
+
+ /** The command id. */
+ private String commandId;
+
+ /** The title. */
+ private String title;
+
+ /** The type. */
+ private int type;
+
+ /** The priority. */
+ private int priority;
+
+ /** The sub menu list. */
+ private List<MenuInfo> subMenuList;
+
+ /**
+ * Instantiates a new menu info.
+ */
+ public MenuInfo( )
+ {}
+
+ /**
+ * Instantiates a new menu info.
+ *
+ * @param source the source
+ */
+ public MenuInfo( Parcel source )
+ {
+ readFromParcel( source );
+ }
+
+ /**
+ * The parcel describe contents, defaul is 0.
+ *
+ * @return the int
+ */
+ @Override
+ public int describeContents()
+ {
+ return 0;
+ }
+
+ /**
+ * Write the menu entity to parcel stream. Pay attention to read and
+ * write variables variables sequence should be consistent or not the
+ * correct results
+ *
+ * @param dest
+ * the dest parcel stream
+ * @param flags
+ * the flags
+ */
+ @Override
+ public void writeToParcel( Parcel dest, int flags )
+ {
+ dest.writeString( commandId );
+ dest.writeString( title );
+ dest.writeInt( type );
+ dest.writeInt( priority );
+ dest.writeList( subMenuList );
+ }
+
+ /**
+ * Create the menu entity from parcel stream. Pay attention to read
+ * and write variables variables sequence should be consistent or not the
+ * correct results
+ *
+ * @param source
+ * The parcel stream
+ */
+ public void readFromParcel( Parcel source )
+ {
+ commandId = source.readString();
+ title = source.readString();
+ type = source.readInt();
+ priority = source.readInt();
+ subMenuList = new LinkedList<MenuInfo>();
+ source.readList( subMenuList, this.getClass().getClassLoader() );
+ }
+
+ /** The parcel creator. */
+ public static final Parcelable.Creator<MenuInfo> CREATOR = new Parcelable.Creator<MenuInfo>() {
+ @Override
+ public MenuInfo createFromParcel( Parcel source )
+ {
+ return new MenuInfo( source );
+ }
+
+ @Override
+ public MenuInfo[] newArray( int size )
+ {
+ return new MenuInfo[ size ];
+ }
+ };
+
+ /**
+ * Gets the command id.
+ *
+ * @return the command id
+ */
+ public String getCommandId()
+ {
+ return commandId;
+ }
+
+ /**
+ * Sets the command id.
+ *
+ * @param commandId the new command id
+ */
+ public void setCommandId( String commandId )
+ {
+ this.commandId = commandId;
+ }
+
+ /**
+ * Gets the title.
+ *
+ * @return the title
+ */
+ public String getTitle()
+ {
+ return title;
+ }
+
+ /**
+ * Sets the title.
+ *
+ * @param title the new title
+ */
+ public void setTitle( String title )
+ {
+ this.title = title;
+ }
+
+ /**
+ * Gets the type.
+ *
+ * @return the type
+ */
+ public int getType()
+ {
+ return type;
+ }
+
+ /**
+ * Sets the type.
+ *
+ * @param type the new type
+ */
+ public void setType( int type )
+ {
+ this.type = type;
+ }
+
+ /**
+ * Gets the priority.
+ *
+ * @return the priority
+ */
+ public int getPriority()
+ {
+ return priority;
+ }
+
+ /**
+ * Sets the priority.
+ *
+ * @param priority the new priority
+ */
+ public void setPriority( int priority )
+ {
+ this.priority = priority;
+ }
+
+ /**
+ * Gets the sub menu list.
+ *
+ * @return the sub menu list
+ */
+ public List<MenuInfo> getSubMenuList()
+ {
+ return subMenuList;
+ }
+
+ /**
+ * Sets the sub menu list.
+ *
+ * @param subMenuList the new sub menu list
+ */
+ public void setSubMenuList( List<MenuInfo> subMenuList )
+ {
+ this.subMenuList = subMenuList;
+ }
+
+ /* (non-Javadoc)
+ * @see java.lang.Object#toString()
+ */
+ @Override
+ public String toString() {
+ StringBuffer sbuffer = new StringBuffer();
+ sbuffer.append("commandId=").append(this.commandId)
+ .append(",title=").append(this.title)
+ .append(",type=").append(this.type)
+ .append(",priority=").append(this.priority)
+ ;
+ if(null != this.subMenuList && this.subMenuList.size() > 0){
+ sbuffer.append(",subMenuList=").append("[");
+ for(MenuInfo menu : this.subMenuList){
+ sbuffer.append(menu.toString());
+ }
+ sbuffer.append("]");
+ }
+
+ return sbuffer.toString();
+ }
+
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/pubacct/MsgContent.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/pubacct/MsgContent.aidl
new file mode 100644
index 0000000..e21af9b
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/pubacct/MsgContent.aidl
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.entity.pubacct;
+
+parcelable MsgContent;
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/pubacct/MsgContent.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/pubacct/MsgContent.java
new file mode 100644
index 0000000..d325940
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/pubacct/MsgContent.java
@@ -0,0 +1,372 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.entity.pubacct;
+
+import java.util.LinkedList;
+import java.util.List;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+/**
+ * <p>
+ * Title: The message content entity
+ * </p>
+ * <p>
+ * Description: The message content entity
+ * </p>
+ * <p>
+ * Copyright: Copyright (c) 2014
+ * </p>
+ * <p>
+ * Company: pci-suntek
+ * </p>
+ *
+ * @author zrq
+ * @version 1.0
+ *
+ */
+public class MsgContent implements Parcelable
+{
+ /** The media type. */
+ private String mediaType;
+
+ /** The create time. */
+ private String createTime;
+
+ /** The message uuid. */
+ private String msgUuid;
+
+ /** The sms digest. */
+ private String smsDigest;
+
+ /** The text. */
+ private String text;
+
+ /** The public account uuid. */
+ private String paUuid;
+
+ /** The basic. */
+ private MediaBasic basic;
+
+ /** The article list. */
+ private List<MediaArticle> articleList;
+
+ /**
+ * Instantiates a new message content.
+ */
+ public MsgContent()
+ {}
+
+ /**
+ * Instantiates a new message content.
+ *
+ * @param source
+ * the source parcel stream
+ */
+ public MsgContent( Parcel source )
+ {
+ readFromParcel( source );
+ }
+
+ /**
+ * The parcel describe contents, defaul is 0.
+ *
+ * @return the int
+ */
+ @Override
+ public int describeContents()
+ {
+ return 0;
+ }
+
+ /**
+ * Write the message content entity to parcel stream. Pay attention to read and
+ * write variables variables sequence should be consistent or not the
+ * correct results
+ *
+ * @param dest
+ * the dest parcel stream
+ * @param flags
+ * the flags
+ */
+ @Override
+ public void writeToParcel( Parcel dest, int flags )
+ {
+ dest.writeString( mediaType );
+ dest.writeString( createTime );
+ dest.writeString( msgUuid );
+ dest.writeString( smsDigest );
+ dest.writeString( text );
+ dest.writeString( paUuid );
+ dest.writeValue( basic );
+ dest.writeList( articleList );
+ }
+
+ /**
+ * Create the message content entity from parcel stream. Pay attention to read
+ * and write variables variables sequence should be consistent or not the
+ * correct results
+ *
+ * @param source
+ * The parcel stream
+ */
+ public void readFromParcel( Parcel source )
+ {
+ mediaType = source.readString();
+ createTime = source.readString();
+ msgUuid = source.readString();
+ smsDigest = source.readString();
+ text = source.readString();
+ paUuid = source.readString();
+ basic = ( MediaBasic )source.readValue( this.getClass().getClassLoader() );
+ articleList = new LinkedList<MediaArticle>();
+ source.readList( articleList, this.getClass().getClassLoader() );
+ }
+
+ /** The parcel creator. */
+ public static final Parcelable.Creator<MsgContent> CREATOR = new Parcelable.Creator<MsgContent>() {
+ @Override
+ public MsgContent createFromParcel( Parcel source )
+ {
+ return new MsgContent( source );
+ }
+
+ @Override
+ public MsgContent[] newArray( int size )
+ {
+ return new MsgContent[ size ];
+ }
+ };
+
+ /**
+ * Gets the media type.
+ *
+ * @return the media type
+ */
+ public String getMediaType()
+ {
+ return mediaType;
+ }
+
+ /**
+ * Sets the media type.
+ *
+ * @param mediaType
+ * the new media type
+ */
+ public void setMediaType( String mediaType )
+ {
+ this.mediaType = mediaType;
+ }
+
+ /**
+ * Gets the creates time.
+ *
+ * @return the creates time
+ */
+ public String getCreateTime()
+ {
+ return createTime;
+ }
+
+ /**
+ * Sets the creates time.
+ *
+ * @param createTime
+ * the new creates time
+ */
+ public void setCreateTime( String createTime )
+ {
+ this.createTime = createTime;
+ }
+
+ /**
+ * Gets the msg_ uuid.
+ *
+ * @return the message uuid
+ */
+ public String getMsgUuid()
+ {
+ return msgUuid;
+ }
+
+ /**
+ * Sets the message uuid.
+ *
+ * @param msg_Uuid
+ * the new message uuid
+ */
+ public void setMsgUuid( String msgUuid )
+ {
+ this.msgUuid = msgUuid;
+ }
+
+ /**
+ * Gets the sms digest.
+ *
+ * @return the sms digest
+ */
+ public String getSmsDigest()
+ {
+ return smsDigest;
+ }
+
+ /**
+ * Sets the sms digest.
+ *
+ * @param smsDigest
+ * the new sms digest
+ */
+ public void setSmsDigest( String smsDigest )
+ {
+ this.smsDigest = smsDigest;
+ }
+
+ /**
+ * Gets the text.
+ *
+ * @return the text
+ */
+ public String getText()
+ {
+ return text;
+ }
+
+ /**
+ * Sets the text.
+ *
+ * @param text
+ * the new text
+ */
+ public void setText( String text )
+ {
+ this.text = text;
+ }
+
+ /**
+ * Gets the public account uuid.
+ *
+ * @return the public account uuid
+ */
+ public String getPaUuid()
+ {
+ return paUuid;
+ }
+
+ /**
+ * Sets the public account uuid.
+ *
+ * @param paUuid
+ * the new public account uuid
+ */
+ public void setPaUuid( String paUuid )
+ {
+ this.paUuid = paUuid;
+ }
+
+ /**
+ * Gets the basic.
+ *
+ * @return the basic
+ */
+ public MediaBasic getBasic()
+ {
+ return basic;
+ }
+
+ /**
+ * Sets the basic.
+ *
+ * @param basic
+ * the new basic
+ */
+ public void setBasic( MediaBasic basic )
+ {
+ this.basic = basic;
+ }
+
+ /**
+ * Gets the article list.
+ *
+ * @return the article list
+ */
+ public List<MediaArticle> getArticleList()
+ {
+ return articleList;
+ }
+
+ /**
+ * Sets the article list.
+ *
+ * @param articleList
+ * the new article list
+ */
+ public void setArticleList( List<MediaArticle> articleList )
+ {
+ this.articleList = articleList;
+ }
+
+ @Override
+ public String toString() {
+ StringBuffer sbuffer = new StringBuffer();
+ if(null != this.mediaType){
+ sbuffer.append(",mediaType=").append(this.mediaType);
+ }
+ if(null != this.createTime){
+ sbuffer.append(",createTime=").append(this.createTime);
+ }
+ if(null != this.msgUuid){
+ sbuffer.append(",msgUuid=").append(this.msgUuid);
+ }
+ if(null != this.smsDigest){
+ sbuffer.append(",smsDigest=").append(this.smsDigest);
+ }
+ if(null != this.text){
+ sbuffer.append(",text=").append(this.text);
+ }
+ if(null != this.paUuid){
+ sbuffer.append(",paUuid=").append(this.paUuid);
+ }
+ if(null != this.basic){
+ sbuffer.append(",basic=").append("{")
+ .append(this.basic.toString())
+ .append("}");
+ }
+
+ if(null != this.articleList && this.articleList.size() > 0){
+ sbuffer.append(",articleList=").append("[");
+ for(MediaArticle article : this.articleList){
+ sbuffer.append(article.toString());
+ }
+ sbuffer.append("]");
+ }
+
+ if(sbuffer.length() > 1){
+ return sbuffer.substring(1).toString();
+ }else{
+ return "";
+ }
+ }
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/pubacct/PublicAccountCallbackType.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/pubacct/PublicAccountCallbackType.aidl
new file mode 100644
index 0000000..60f03cb
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/pubacct/PublicAccountCallbackType.aidl
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.entity.pubacct;
+
+parcelable PublicAccountCallbackType;
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/pubacct/PublicAccountCallbackType.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/pubacct/PublicAccountCallbackType.java
new file mode 100644
index 0000000..2c19d62
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/pubacct/PublicAccountCallbackType.java
@@ -0,0 +1,96 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.entity.pubacct;
+
+
+/**
+ * The Class PublicAccountCallbackType.
+ */
+public class PublicAccountCallbackType{
+
+ /** The Constant TAG_GET_PUBLIC_LIST_RETURN_CODE. */
+ public static final int TAG_GET_PUBLIC_LIST_RETURN_CODE = 1001;
+
+ /** The Constant TAG_GET_PUBLIC_LIST_RETURN_ENTITY. */
+ public static final int TAG_GET_PUBLIC_LIST_RETURN_ENTITY = 1002;
+
+ /** The Constant TAG_GET_PUBLIC_DETAIL_RETURN_CODE. */
+ public static final int TAG_GET_PUBLIC_DETAIL_RETURN_CODE = 1003;
+
+ /** The Constant TAG_GET_PUBLIC_DETAIL_RETURN_ENTITY. */
+ public static final int TAG_GET_PUBLIC_DETAIL_RETURN_ENTITY = 1004;
+
+ /** The Constant TAG_GET_SUBSCRIBE_PUBLIC_LIST_RETURN_CODE. */
+ public static final int TAG_GET_SUBSCRIBE_PUBLIC_LIST_RETURN_CODE = 1005;
+
+ /** The Constant TAG_GET_SUBSCRIBE_PUBLIC_LIST_RETURN_ENTITY. */
+ public static final int TAG_GET_SUBSCRIBE_PUBLIC_LIST_RETURN_ENTITY = 1006;
+
+ /** The Constant TAG_ADD_SUBSCRIBE_RETURN_CODE. */
+ public static final int TAG_ADD_SUBSCRIBE_RETURN_CODE = 1007;
+
+ /** The Constant TAG_ADD_SUBSCRIBE_RETURN_ENTITY. */
+ public static final int TAG_ADD_SUBSCRIBE_RETURN_ENTITY = 1008;
+
+ /** The Constant TAG_CANCEL_SUBSCRIBE_RETURN_CODE. */
+ public static final int TAG_CANCEL_SUBSCRIBE_RETURN_CODE = 1009;
+
+ /** The Constant TAG_CANCEL_SUBSCRIBE_RETURN_ENTITY. */
+ public static final int TAG_CANCEL_SUBSCRIBE_RETURN_ENTITY = 1010;
+
+ /** The Constant TAG_GET_PRE_MESSAGE_RETURN_CODE. */
+ public static final int TAG_GET_PRE_MESSAGE_RETURN_CODE = 1011;
+
+ /** The Constant TAG_GET_PRE_MESSAGE_RETURN_ENTITY. */
+ public static final int TAG_GET_PRE_MESSAGE_RETURN_ENTITY = 1012;
+
+ /** The Constant TAG_COMPLAIN_PUBLIC_RETURN_CODE. */
+ public static final int TAG_COMPLAIN_PUBLIC_RETURN_CODE = 1013;
+
+ /** The Constant TAG_COMPLAIN_PUBLIC_RETURN_ENTITY. */
+ public static final int TAG_COMPLAIN_PUBLIC_RETURN_ENTITY = 1014;
+
+ /** The Constant TAG_GET_PUBLIC_MENU_INFO_RETURN_CODE. */
+ public static final int TAG_GET_PUBLIC_MENU_INFO_RETURN_CODE = 1015;
+
+ /** The Constant TAG_GET_PUBLIC_MENU_INFO_RETURN_ENTITY. */
+ public static final int TAG_GET_PUBLIC_MENU_INFO_RETURN_ENTITY = 1016;
+
+ /** The Constant TAG_GET_PUBLIC_MENU_STRING. */
+ public static final int TAG_GET_PUBLIC_MENU_STRING = 1017;
+
+ /** The Constant TAG_GET_PUBLIC_RECOMMEND_RETURN_CODE. */
+ public static final int TAG_GET_PUBLIC_RECOMMEND_RETURN_CODE = 1018;
+
+ /** The Constant TAG_GET_PUBLIC_RECOMMEND_RETURN_ENTITY. */
+ public static final int TAG_GET_PUBLIC_RECOMMEND_RETURN_ENTITY = 1019;
+
+ /** The Constant TAG_SET_ACCEPT_ACCOUNT_STATUS_RETURN_CODE. */
+ public static final int TAG_SET_ACCEPT_ACCOUNT_STATUS_RETURN_CODE = 1020;
+
+ /** The Constant TAG_SET_ACCEPT_ACCOUNT_STATUS_RETURN_ENTITY. */
+ public static final int TAG_SET_ACCEPT_ACCOUNT_STATUS_RETURN_ENTITY = 1021;
+
+
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/pubacct/PublicAccountConstant.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/pubacct/PublicAccountConstant.java
new file mode 100644
index 0000000..76dcb45
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/pubacct/PublicAccountConstant.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.entity.pubacct;
+
+public class PublicAccountConstant {
+
+ /** order type: 0 is desc order by the follow time */
+ public static final int ORDER_TYPE_FOLLOWTIME_DESC = 0;
+
+ /** order type: 0 is asc order by the public account */
+ public static final int ORDER_TYPE_ACCOUNT_NAME_ASC = 1;
+
+
+ /** The Constant ACCEPT_STATUS_ACCEPT. */
+ public static final int ACCEPT_STATUS_ACCEPT = 1;
+
+ /** The Constant ACCEPT_STATUS_NOT. */
+ public static final int ACCEPT_STATUS_NOT = 0;
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/pubacct/PublicAccountReqEntity.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/pubacct/PublicAccountReqEntity.aidl
new file mode 100644
index 0000000..8d6f181
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/pubacct/PublicAccountReqEntity.aidl
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.entity.pubacct;
+
+parcelable PublicAccountReqEntity;
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/pubacct/PublicAccountReqEntity.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/pubacct/PublicAccountReqEntity.java
new file mode 100644
index 0000000..321c92d
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/pubacct/PublicAccountReqEntity.java
@@ -0,0 +1,223 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.entity.pubacct;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+/**
+ * <p>
+ * Title: The public account request entity
+ * </p>
+ * <p>
+ * Description: The public account request entity
+ * </p>
+ * <p>
+ * Copyright: Copyright (c) 2014
+ * </p>
+ * <p>
+ * Company: pci-suntek
+ * </p>
+ * .
+ *
+ * @author zrq
+ * @version 1.0
+ */
+public class PublicAccountReqEntity implements Parcelable
+{
+ /** the public account uuid. */
+ private String paUuid;
+ /** the public account name. */
+ private String name;
+ /**
+ * the public account recommend level. the value range is 1-5, default value
+ * is 1.
+ */
+ private int recommendLevel;
+ /** the public account logo url. */
+ private String logo;
+
+ /**
+ * Instantiates a new public account request entity.
+ */
+ public PublicAccountReqEntity()
+ {}
+
+ /**
+ * Instantiates a new public account request entity.
+ *
+ * @param source
+ * the parcel source
+ */
+ public PublicAccountReqEntity( Parcel source )
+ {
+ readFromParcel( source );
+ }
+
+ /**
+ * The parcel describe contents, defaul is 0.
+ *
+ * @return the int
+ */
+ @Override
+ public int describeContents()
+ {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ /**
+ * write the public account request entity to parcel stream. Pay attention
+ * to read and write variables variables sequence should be consistent or
+ * not the correct results
+ *
+ * @param dest
+ * the dest
+ * @param flags
+ * the flags
+ */
+ @Override
+ public void writeToParcel( Parcel dest, int flags )
+ {
+ dest.writeString( paUuid );
+ dest.writeString( name );
+ dest.writeInt( recommendLevel );
+ dest.writeString( logo );
+ }
+
+ /**
+ * Create the public account request entity from parcel stream. Pay
+ * attention to read and write variables variables sequence should be
+ * consistent or not the correct results
+ *
+ * @param source
+ * The parcel stream
+ */
+ public void readFromParcel( Parcel source )
+ {
+ paUuid = source.readString();
+ name = source.readString();
+ recommendLevel = source.readInt();
+ logo = source.readString();
+ }
+
+ /** The parcel creator. */
+ public static final Parcelable.Creator<PublicAccountReqEntity> CREATOR = new Parcelable.Creator<PublicAccountReqEntity>() {
+ @Override
+ public PublicAccountReqEntity createFromParcel( Parcel source )
+ {
+ return new PublicAccountReqEntity( source );
+ }
+
+ @Override
+ public PublicAccountReqEntity[] newArray( int size )
+ {
+ return new PublicAccountReqEntity[ size ];
+ }
+ };
+
+ /**
+ * Gets the public account uuid.
+ *
+ * @return the public account uuid
+ */
+ public String getPaUuid()
+ {
+ return paUuid;
+ }
+
+ /**
+ * Sets the public account uuid.
+ *
+ * @param paUuid
+ * the new public account uuid
+ */
+ public void setPaUuid( String paUuid )
+ {
+ this.paUuid = paUuid;
+ }
+
+ /**
+ * Gets the public account name.
+ *
+ * @return the public account name
+ */
+ public String getName()
+ {
+ return name;
+ }
+
+ /**
+ * Sets the public account name.
+ *
+ * @param name
+ * the new public account name
+ */
+ public void setName( String name )
+ {
+ this.name = name;
+ }
+
+ /**
+ * Gets the recommend level.
+ *
+ * @return the recommend level
+ */
+ public int getRecommendLevel()
+ {
+ return recommendLevel;
+ }
+
+ /**
+ * Sets the recommend level.
+ *
+ * @param recommendLevel
+ * the new recommend level
+ */
+ public void setRecommendLevel( int recommendLevel )
+ {
+ this.recommendLevel = recommendLevel;
+ }
+
+ /**
+ * Gets the logo url.
+ *
+ * @return the logo url
+ */
+ public String getLogo()
+ {
+ return logo;
+ }
+
+ /**
+ * Sets the logo url.
+ *
+ * @param logo
+ * the new logo url
+ */
+ public void setLogo( String logo )
+ {
+ this.logo = logo;
+ }
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/pubacct/PublicAccounts.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/pubacct/PublicAccounts.aidl
new file mode 100644
index 0000000..7e05818
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/pubacct/PublicAccounts.aidl
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.entity.pubacct;
+
+parcelable PublicAccounts;
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/pubacct/PublicAccounts.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/pubacct/PublicAccounts.java
new file mode 100644
index 0000000..b1d8ed0
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/pubacct/PublicAccounts.java
@@ -0,0 +1,285 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.entity.pubacct;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+/**
+ * <p>
+ * Title: The public account entity
+ * </p>
+ * <p>
+ * Description: The public account entity
+ * </p>
+ * <p>
+ * Copyright: Copyright (c) 2014
+ * </p>
+ * <p>
+ * Company: pci-suntek
+ * </p>
+ *
+ * @author zrq
+ * @version 1.0
+ *
+ */
+public class PublicAccounts implements Parcelable
+{
+ /** The logo url. */
+ private String logo;
+
+ /** The name. */
+ private String name;
+
+ /** The public account uuid. */
+ private String paUuid;
+
+ /** The recommend level. */
+ private int recommendLevel;
+
+ /** The sip uri. */
+ private String sipUri;
+
+ /** The subscribestatus. */
+ private int subscribestatus;
+
+ /**
+ * Instantiates a new public accounts.
+ */
+ public PublicAccounts()
+ {}
+
+ /**
+ * Instantiates a new public accounts.
+ *
+ * @param source
+ * the source
+ */
+ public PublicAccounts( Parcel source )
+ {
+ readFromParcel( source );
+ }
+
+ /**
+ * The parcel describe contents, defaul is 0.
+ *
+ * @return the int
+ */
+ @Override
+ public int describeContents()
+ {
+ return 0;
+ }
+
+ /**
+ * write the public account entity to parcel stream. Pay attention to read
+ * and write variables variables sequence should be consistent or not the
+ * correct results
+ *
+ * @param dest
+ * the dest
+ * @param flags
+ * the flags
+ */
+ @Override
+ public void writeToParcel( Parcel dest, int flags )
+ {
+ dest.writeString( paUuid );
+ dest.writeString( name );
+ dest.writeInt( recommendLevel );
+ dest.writeString( logo );
+ dest.writeString( sipUri );
+ dest.writeInt(subscribestatus);
+ }
+
+ /**
+ * Create the public account entity from parcel stream. Pay attention to
+ * read and write variables variables sequence should be consistent or not
+ * the correct results
+ *
+ * @param source
+ * The parcel stream
+ */
+ public void readFromParcel( Parcel source )
+ {
+ paUuid = source.readString();
+ name = source.readString();
+ recommendLevel = source.readInt();
+ logo = source.readString();
+ sipUri = source.readString();
+ subscribestatus = source.readInt();
+ }
+
+ /** The parcel creator. */
+ public static final Parcelable.Creator<PublicAccounts> CREATOR = new Parcelable.Creator<PublicAccounts>() {
+ @Override
+ public PublicAccounts createFromParcel( Parcel source )
+ {
+ return new PublicAccounts( source );
+ }
+
+ @Override
+ public PublicAccounts[] newArray( int size )
+ {
+ return new PublicAccounts[ size ];
+ }
+ };
+
+ /**
+ * Gets the logo url.
+ *
+ * @return the logo url
+ */
+ public String getLogo()
+ {
+ return logo;
+ }
+
+ /**
+ * Sets the logo url.
+ *
+ * @param logo
+ * the new logo url
+ */
+ public void setLogo( String logo )
+ {
+ this.logo = logo;
+ }
+
+ /**
+ * Gets the name.
+ *
+ * @return the name
+ */
+ public String getName()
+ {
+ return name;
+ }
+
+ /**
+ * Sets the name.
+ *
+ * @param name
+ * the new name
+ */
+ public void setName( String name )
+ {
+ this.name = name;
+ }
+
+ /**
+ * Gets the public account uuid.
+ *
+ * @return the public account uuid
+ */
+ public String getPaUuid()
+ {
+ return paUuid;
+ }
+
+ /**
+ * Sets the public account uuid.
+ *
+ * @param paUuid
+ * the new public account uuid
+ */
+ public void setPaUuid( String paUuid )
+ {
+ this.paUuid = paUuid;
+ }
+
+ /**
+ * Gets the recommend level.
+ *
+ * @return the recommend level
+ */
+ public int getRecommendLevel()
+ {
+ return recommendLevel;
+ }
+
+ /**
+ * Sets the recommend level.
+ *
+ * @param recommendLevel
+ * the new recommend level
+ */
+ public void setRecommendLevel( int recommendLevel )
+ {
+ this.recommendLevel = recommendLevel;
+ }
+
+ /**
+ * Gets the sip uri.
+ *
+ * @return the sip uri
+ */
+ public String getSipUri()
+ {
+ return sipUri;
+ }
+
+ /**
+ * Sets the sip uri.
+ *
+ * @param sipUri
+ * the new sip uri
+ */
+ public void setSipUri( String sipUri )
+ {
+ this.sipUri = sipUri;
+ }
+
+
+ /**
+ * Gets the subscribestatus.
+ *
+ * @return the subscribestatus
+ */
+ public int getSubscribestatus() {
+ return subscribestatus;
+ }
+
+ /**
+ * Sets the subscribestatus.
+ *
+ * @param subscribestatus the new subscribestatus
+ */
+ public void setSubscribestatus(int subscribestatus) {
+ this.subscribestatus = subscribestatus;
+ }
+
+ @Override
+ public String toString() {
+ StringBuffer sbuffer = new StringBuffer();
+ sbuffer.append("paUuid=").append(this.paUuid)
+ .append(",name=").append(this.name)
+ .append(",logo=").append(this.logo)
+ .append(",recommendLevel=").append(this.recommendLevel)
+ .append(",sipUri=").append(this.sipUri)
+ ;
+
+ return sbuffer.toString();
+ }
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/pubacct/PublicAccountsDetail.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/pubacct/PublicAccountsDetail.aidl
new file mode 100644
index 0000000..ba3c85f
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/pubacct/PublicAccountsDetail.aidl
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.entity.pubacct;
+
+parcelable PublicAccountsDetail;
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/pubacct/PublicAccountsDetail.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/pubacct/PublicAccountsDetail.java
new file mode 100644
index 0000000..75a92a3
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/pubacct/PublicAccountsDetail.java
@@ -0,0 +1,652 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.entity.pubacct;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+// TODO: Auto-generated Javadoc
+/**
+ * <p>
+ * Title: The public account detail entity
+ * </p>
+ * <p>
+ * Description: The public account detail entity
+ * </p>
+ * <p>
+ * Copyright: Copyright (c) 2014
+ * </p>
+ * <p>
+ * Company: pci-suntek
+ * </p>.
+ *
+ * @author zrq
+ * @version 1.0
+ */
+public class PublicAccountsDetail implements Parcelable
+{
+ /** The public account uuid. */
+ private String paUuid;
+
+ /** The name. */
+ private String name;
+
+ /** The company. */
+ private String company;
+
+ /** The introduce. */
+ private String intro;
+
+ /** The type. */
+ private String type;
+
+ /** The recommend level. */
+ private int recommendLevel;
+
+ /** The update time. */
+ private String updateTime;
+
+ /** The menu type. */
+ private int menuType;
+
+ /** The menu timestamp. */
+ private String menuTimestamp;
+
+ /** The subscribe status. */
+ private int subscribeStatus;
+
+ /** The accept status. */
+ private int acceptstatus;
+
+ /** The active status. */
+ private int activeStatus;
+
+ /** The tel. */
+ private String tel;
+
+ /** The email. */
+ private String email;
+
+ /** The zip. */
+ private String zip;
+
+ /** The addr. */
+ private String addr;
+
+ /** The field. */
+ private String field;
+
+ /** The qr code. */
+ private String qrCode;
+
+ /** The logo url. */
+ private String logoUrl;
+
+ /** The sip uri. */
+// private String sipUri;
+
+ /**
+ * Instantiates a new public accounts detail.
+ */
+ public PublicAccountsDetail()
+ {}
+
+ /**
+ * Instantiates a new public accounts detail.
+ *
+ * @param source
+ * the source
+ */
+ public PublicAccountsDetail( Parcel source )
+ {
+ readFromParcel( source );
+ }
+
+ /**
+ * The parcel describe contents, defaul is 0.
+ *
+ * @return the int
+ */
+ @Override
+ public int describeContents()
+ {
+ return 0;
+ }
+
+ /**
+ * write the public account detail entity to parcel stream. Pay attention to
+ * read and write variables variables sequence should be consistent or not
+ * the correct results
+ *
+ * @param dest
+ * the dest
+ * @param flags
+ * the flags
+ */
+ @Override
+ public void writeToParcel( Parcel dest, int flags )
+ {
+ dest.writeString( paUuid );
+ dest.writeString( name );
+ dest.writeString( company );
+ dest.writeString( intro );
+ dest.writeString( type );
+ dest.writeInt( recommendLevel );
+ dest.writeString( updateTime );
+ dest.writeInt( menuType );
+ dest.writeString( menuTimestamp );
+ dest.writeInt( subscribeStatus );
+ dest.writeInt( acceptstatus );
+ dest.writeInt( activeStatus );
+ dest.writeString( tel );
+ dest.writeString( email );
+ dest.writeString( zip );
+ dest.writeString( addr );
+ dest.writeString( field );
+ dest.writeString( qrCode );
+ dest.writeString( logoUrl );
+// dest.writeString( sipUri );
+ }
+
+ /**
+ * Create the public account detail entity from parcel stream. Pay attention
+ * to read and write variables variables sequence should be consistent or
+ * not the correct results
+ *
+ * @param source
+ * The parcel stream
+ */
+ public void readFromParcel( Parcel source )
+ {
+ paUuid = source.readString();
+ name = source.readString();
+ company = source.readString();
+ intro = source.readString();
+ type = source.readString();
+ recommendLevel = source.readInt();
+ updateTime = source.readString();
+ menuType = source.readInt();
+ menuTimestamp = source.readString();
+ subscribeStatus = source.readInt();
+ acceptstatus = source.readInt();
+ activeStatus = source.readInt();
+ tel = source.readString();
+ email = source.readString();
+ zip = source.readString();
+ addr = source.readString();
+ field = source.readString();
+ qrCode = source.readString();
+ logoUrl = source.readString();
+// sipUri = source.readString();
+ }
+
+ /** The parcel creator. */
+ public static final Parcelable.Creator<PublicAccountsDetail> CREATOR = new Parcelable.Creator<PublicAccountsDetail>() {
+ @Override
+ public PublicAccountsDetail createFromParcel( Parcel source )
+ {
+ return new PublicAccountsDetail( source );
+ }
+
+ @Override
+ public PublicAccountsDetail[] newArray( int size )
+ {
+ return new PublicAccountsDetail[ size ];
+ }
+ };
+
+ /**
+ * Gets the public account uuid.
+ *
+ * @return the public account uuid
+ */
+ public String getPaUuid()
+ {
+ return paUuid;
+ }
+
+ /**
+ * Sets the public account uuid.
+ *
+ * @param paUuid
+ * the new public account uuid
+ */
+ public void setPaUuid( String paUuid )
+ {
+ this.paUuid = paUuid;
+ }
+
+ /**
+ * Gets the name.
+ *
+ * @return the name
+ */
+ public String getName()
+ {
+ return name;
+ }
+
+ /**
+ * Sets the name.
+ *
+ * @param name
+ * the new name
+ */
+ public void setName( String name )
+ {
+ this.name = name;
+ }
+
+ /**
+ * Gets the company.
+ *
+ * @return the company
+ */
+ public String getCompany()
+ {
+ return company;
+ }
+
+ /**
+ * Sets the company.
+ *
+ * @param company
+ * the new company
+ */
+ public void setCompany( String company )
+ {
+ this.company = company;
+ }
+
+ /**
+ * Gets the introduce.
+ *
+ * @return the introduce
+ */
+ public String getIntro()
+ {
+ return intro;
+ }
+
+ /**
+ * Sets the introduce.
+ *
+ * @param intro
+ * the new introduce
+ */
+ public void setIntro( String intro )
+ {
+ this.intro = intro;
+ }
+
+ /**
+ * Gets the type.
+ *
+ * @return the type
+ */
+ public String getType()
+ {
+ return type;
+ }
+
+ /**
+ * Sets the type.
+ *
+ * @param type
+ * the new type
+ */
+ public void setType( String type )
+ {
+ this.type = type;
+ }
+
+ /**
+ * Gets the recommend level.
+ *
+ * @return the recommend level
+ */
+ public int getRecommendLevel()
+ {
+ return recommendLevel;
+ }
+
+ /**
+ * Sets the recommend level.
+ *
+ * @param recommendLevel
+ * the new recommend level
+ */
+ public void setRecommendLevel( int recommendLevel )
+ {
+ this.recommendLevel = recommendLevel;
+ }
+
+ /**
+ * Gets the update time.
+ *
+ * @return the update time
+ */
+ public String getUpdateTime()
+ {
+ return updateTime;
+ }
+
+ /**
+ * Sets the update time.
+ *
+ * @param updateTime
+ * the new update time
+ */
+ public void setUpdateTime( String updateTime )
+ {
+ this.updateTime = updateTime;
+ }
+
+ /**
+ * Gets the menu type.
+ *
+ * @return the menu type
+ */
+ public int getMenuType()
+ {
+ return menuType;
+ }
+
+ /**
+ * Sets the menu type.
+ *
+ * @param menuType
+ * the new menu type
+ */
+ public void setMenuType( int menuType )
+ {
+ this.menuType = menuType;
+ }
+
+ /**
+ * Gets the menu timestamp.
+ *
+ * @return the menu timestamp
+ */
+ public String getMenuTimestamp()
+ {
+ return menuTimestamp;
+ }
+
+ /**
+ * Sets the menu timestamp.
+ *
+ * @param menuTimestamp
+ * the new menu timestamp
+ */
+ public void setMenuTimestamp( String menuTimestamp )
+ {
+ this.menuTimestamp = menuTimestamp;
+ }
+
+ /**
+ * Gets the subscribe status.
+ *
+ * @return the subscribe status
+ */
+ public int getSubscribeStatus()
+ {
+ return subscribeStatus;
+ }
+
+ /**
+ * Sets the subscribe status.
+ *
+ * @param subscribeStatus
+ * the new subscribe status
+ */
+ public void setSubscribeStatus( int subscribeStatus )
+ {
+ this.subscribeStatus = subscribeStatus;
+ }
+
+ /**
+ * Gets the acceptstatus.
+ *
+ * @return the acceptstatus
+ */
+ public int getAcceptstatus() {
+ return acceptstatus;
+ }
+
+ /**
+ * Sets the acceptstatus.
+ *
+ * @param acceptstatus the new acceptstatus
+ */
+ public void setAcceptstatus(int acceptstatus) {
+ this.acceptstatus = acceptstatus;
+ }
+
+ /**
+ * Gets the active status.
+ *
+ * @return the active status
+ */
+ public int getActiveStatus() {
+ return activeStatus;
+ }
+
+ /**
+ * Sets the active status.
+ *
+ * @param activeStatus the new active status
+ */
+ public void setActiveStatus(int activeStatus) {
+ this.activeStatus = activeStatus;
+ }
+
+ /**
+ * Gets the tel.
+ *
+ * @return the tel
+ */
+ public String getTel() {
+ return tel;
+ }
+
+ /**
+ * Sets the tel.
+ *
+ * @param tel the new tel
+ */
+ public void setTel(String tel) {
+ this.tel = tel;
+ }
+
+ /**
+ * Gets the email.
+ *
+ * @return the email
+ */
+ public String getEmail() {
+ return email;
+ }
+
+ /**
+ * Sets the email.
+ *
+ * @param email the new email
+ */
+ public void setEmail(String email) {
+ this.email = email;
+ }
+
+ /**
+ * Gets the zip.
+ *
+ * @return the zip
+ */
+ public String getZip() {
+ return zip;
+ }
+
+ /**
+ * Sets the zip.
+ *
+ * @param zip the new zip
+ */
+ public void setZip(String zip) {
+ this.zip = zip;
+ }
+
+ /**
+ * Gets the addr.
+ *
+ * @return the addr
+ */
+ public String getAddr() {
+ return addr;
+ }
+
+ /**
+ * Sets the addr.
+ *
+ * @param addr the new addr
+ */
+ public void setAddr(String addr) {
+ this.addr = addr;
+ }
+
+ /**
+ * Gets the field.
+ *
+ * @return the field
+ */
+ public String getField() {
+ return field;
+ }
+
+ /**
+ * Sets the field.
+ *
+ * @param field the new field
+ */
+ public void setField(String field) {
+ this.field = field;
+ }
+
+ /**
+ * Gets the qr code.
+ *
+ * @return the qr code
+ */
+ public String getQrCode()
+ {
+ return qrCode;
+ }
+
+ /**
+ * Sets the qr code.
+ *
+ * @param qrCode
+ * the new qr code
+ */
+ public void setQrCode( String qrCode )
+ {
+ this.qrCode = qrCode;
+ }
+
+ /**
+ * Gets the logo url.
+ *
+ * @return the logo url
+ */
+ public String getLogoUrl()
+ {
+ return logoUrl;
+ }
+
+ /**
+ * Sets the logo url.
+ *
+ * @param logoUrl
+ * the new logo url
+ */
+ public void setLogoUrl( String logoUrl )
+ {
+ this.logoUrl = logoUrl;
+ }
+
+ /**
+ * Gets the sip uri.
+ *
+ * @return the sip uri
+ */
+// public String getSipUri()
+// {
+// return sipUri;
+// }
+
+ /**
+ * Sets the sip uri.
+ *
+ * @param sipUri
+ * the new sip uri
+ */
+// public void setSipUri( String sipUri )
+// {
+// this.sipUri = sipUri;
+// }
+
+ /**
+ * toString
+ *
+ * @return the gson string
+ */
+ @Override
+ public String toString()
+ {
+// return new Gson().toJson( this );
+ StringBuffer sbuffer = new StringBuffer();
+ sbuffer.append("paUuid=").append(this.paUuid)
+ .append(",name=").append(this.name)
+ .append(",logoUrl=").append(this.logoUrl)
+ .append(",recommendLevel=").append(this.recommendLevel)
+// .append(",sipUri=").append(this.sipUri)
+ .append(",company=").append(this.company)
+ .append(",intro=").append(this.intro)
+ .append(",type=").append(this.type)
+ .append(",updateTime=").append(this.updateTime)
+ .append(",menuType=").append(this.menuType)
+ .append(",menuTimestamp=").append(this.menuTimestamp)
+ .append(",subscribeStatus=").append(this.subscribeStatus)
+ .append(",acceptstatus=").append(this.acceptstatus)
+ .append(",activeStatus=").append(this.activeStatus)
+ .append(",tel=").append(this.tel)
+ .append(",email=").append(this.email)
+ .append(",zip=").append(this.zip)
+ .append(",addr=").append(this.addr)
+ .append(",field=").append(this.field)
+ .append(",qrCode=").append(this.qrCode)
+ ;
+
+ return sbuffer.toString();
+ }
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/richscrn/PhoneEvent.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/richscrn/PhoneEvent.java
new file mode 100644
index 0000000..4f8d4db
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/richscrn/PhoneEvent.java
@@ -0,0 +1,124 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.entity.richscrn;
+
+/**
+ * <p>Title: The phone event</p>
+ * <p>Description: Coding scheme defined by terminal. The suggestion part coding rules supports the following events and code.</p>
+ * <p>PhoneEvent = A B C DE FGHIJ code</p>
+ * <p>The A:< event classification >, 1 char , A=1 -- a voice call; 2 -- 9 -- video call, terminal event, other reservations.</p>
+ * <p>The B:< participant ID >, 1 char. When the A=1 or 2, B=1 -- 2 -- calling, called, 3 -- 4 -- card terminal.</p>
+ * <p>The C:< process description >, 1 char. When the A=1 or 2, C=1- issued a session request, 2- receives the session invitation, 3- session has been established, the 4- session termination.</p>
+ * <p>The DE:< extended description >, 2 char. Therefore, the default 0.</p>
+ * <p>The FGHIJ:< reference code >, 5 char. Therefore, the default 0. Can carry relevant information, such as the SIP message code and expansion, said 180xx SIP 180 ringing message and other instructions.</p>
+ *
+ * <p>Copyright: Copyright (c) 2014</p>
+ * <p>Company: pci-suntek</p>
+ *
+ * @author zrq
+ * @version 1.0
+ *
+ */
+public enum PhoneEvent {
+
+ /** Non specific events. */
+ DEFAULT_EVENT( "0000000000" ),
+
+ /** The launch the voice call. */
+ LAUNCH_V_CALL( "1110000000" ),
+
+ /** A voice call incoming, terminal began ringing. */
+ V_CALL_IN_RINGING( "1220018000" ),
+
+ /** Voice call connection ( caller side ). */
+ V_CALL_CONN_CALLER( "1130020000" ),
+
+ /** Voice call connection ( called side ). */
+ V_CALL_CONN_CALLED( "123 00 20000" ),
+
+ /** Voice call hang up ( caller side ). */
+ V_CALL_HANG_UP_CALLER( "1140020000" ),
+
+ /** Voice call hung ( called side ). */
+ V_CALL_HANG_UP_CALLED( "1240020000" ),
+
+ /** Start a video call out. */
+ LAUNCH_VD_CALL( "2110000000" ),
+
+ /** A video call incoming, terminal began ringing. */
+ VD_CALL_IN_RINGING( "2220000000" ),
+
+ /** Video call connection ( caller side ). */
+ VD_CALL_CONN_CALLER( "2130020000" ),
+
+ /** Video call connection ( called side ). */
+ VD_CALL_CONN_CALLED( "2230020000" ),
+
+ /** Video call hang up ( caller side ). */
+ VD_CALL_HANG_UP_CALLER( "2140020000" ),
+
+ /** Video call hung ( called side ). */
+ VD_CALL_HANG_UP_CALLED( "2240020000" ),
+
+ /** Terminal communications, is being viewed, main requirements for reinforced screen. */
+ CONTACT_READING_REQ_SCRN( "9331011000" ),
+
+ /** Terminal communications, is viewed, the main requirements set enhanced screen. */
+ CONTACT_READING_SET_SCRN( "9331012000" ),
+
+ /** Terminal contacts to complete the update (such as add or revise a contact). */
+ CONTACT_UPDATE_FINISH( "9341020000" ),
+
+ /** Terminal is to restore the factory settings. */
+ FACTORY_SETTING_READY_RESTORE( "9319030000" ),
+
+ /** The terminal has been completed to restore factory settings. */
+ FACTORY_SETTING_RESTORE_FINISH( "9349030000" ),
+
+ /** The terminal has replaced the SIM card. */
+ SIM_CARD_CHANGED( "9449040000" );
+
+ /** The ctrl string. */
+ private String ctrlString;
+
+ /**
+ * Instantiates a new phone event.
+ *
+ * @param ctrlString the ctrl string
+ */
+ private PhoneEvent( String ctrlString )
+ {
+ this.ctrlString = ctrlString;
+ }
+
+ /**
+ * Gets the control string.
+ *
+ * @return the control string
+ */
+ public String getCtrlStr()
+ {
+ return ctrlString;
+ }
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/richscrn/PhoneList.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/richscrn/PhoneList.aidl
new file mode 100644
index 0000000..3c74e43
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/richscrn/PhoneList.aidl
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.entity.richscrn;
+
+parcelable PhoneList;
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/richscrn/PhoneList.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/richscrn/PhoneList.java
new file mode 100644
index 0000000..1257478
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/richscrn/PhoneList.java
@@ -0,0 +1,138 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.entity.richscrn;
+
+import java.util.ArrayList;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+/**
+ * <p>
+ * Title: The PhoneList entity
+ * </p>
+ * <p>
+ * Description: the Phone List entity
+ * </p>
+ * <p>
+ * Copyright: Copyright (c) 2014
+ * </p>
+ * <p>
+ * Company: pci-suntek
+ * </p>
+ *
+ * @author zrq
+ * @version 1.0
+ *
+ */
+public class PhoneList implements Parcelable
+{
+
+ /** The phone list . */
+ private ArrayList<String> phoneList;
+
+ public ArrayList<String> getPhoneList() {
+ return phoneList;
+ }
+
+ public void setPhoneList(ArrayList<String> phoneList) {
+ this.phoneList = phoneList;
+ }
+
+ /**
+ * Instantiates a new phone list.
+ */
+ public PhoneList()
+ {}
+
+ /**
+ * Instantiates a new phone list.
+ *
+ * @param source
+ * the source
+ */
+ public PhoneList( Parcel source )
+ {
+ readFromParcel( source );
+ }
+
+ /**
+ * The parcel describe contents, defaul is 0.
+ *
+ * @return the int
+ */
+ @Override
+ public int describeContents()
+ {
+ return 0;
+ }
+
+ /**
+ * Write the result entity to parcel stream. Pay attention to read and write
+ * variables variables sequence should be consistent or not the correct
+ * results
+ *
+ * @param dest
+ * the dest parcel stream
+ * @param flags
+ * the flags
+ */
+ @Override
+ public void writeToParcel( Parcel dest, int flags )
+ {
+ dest.writeStringList(phoneList);
+ }
+
+ /**
+ * Create the result entity from parcel stream. Pay attention to read and
+ * write variables variables sequence should be consistent or not the
+ * correct results
+ *
+ * @param source
+ * The parcel stream
+ */
+ public void readFromParcel( Parcel source )
+ {
+ phoneList = source.createStringArrayList();
+ }
+
+ /** The parcel creator. */
+ public static final Parcelable.Creator<PhoneList> CREATOR = new Parcelable.Creator<PhoneList>() {
+ @Override
+ public PhoneList createFromParcel( Parcel source )
+ {
+ return new PhoneList( source );
+ }
+
+ @Override
+ public PhoneList[] newArray( int size )
+ {
+ return new PhoneList[ size ];
+ }
+ };
+
+
+
+
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/richscrn/ResultInfo.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/richscrn/ResultInfo.aidl
new file mode 100644
index 0000000..28cc497
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/richscrn/ResultInfo.aidl
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.entity.richscrn;
+
+parcelable ResultInfo;
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/richscrn/ResultInfo.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/richscrn/ResultInfo.java
new file mode 100644
index 0000000..f7d68dc
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/richscrn/ResultInfo.java
@@ -0,0 +1,174 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.entity.richscrn;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+/**
+ * <p>
+ * Title: The result entity
+ * </p>
+ * <p>
+ * Description: the result info entity
+ * </p>
+ * <p>
+ * Copyright: Copyright (c) 2014
+ * </p>
+ * <p>
+ * Company: pci-suntek
+ * </p>
+ *
+ * @author zrq
+ * @version 1.0
+ *
+ */
+public class ResultInfo implements Parcelable
+{
+
+ /** The is success flag. */
+ private boolean isSuccess;
+
+ /** The result message. */
+ private String resultMsg;
+
+ /**
+ * Instantiates a new result info.
+ */
+ public ResultInfo()
+ {}
+
+ /**
+ * Instantiates a new result info.
+ *
+ * @param source
+ * the source
+ */
+ public ResultInfo( Parcel source )
+ {
+ readFromParcel( source );
+ }
+
+ /**
+ * The parcel describe contents, defaul is 0.
+ *
+ * @return the int
+ */
+ @Override
+ public int describeContents()
+ {
+ return 0;
+ }
+
+ /**
+ * Write the result entity to parcel stream. Pay attention to read and write
+ * variables variables sequence should be consistent or not the correct
+ * results
+ *
+ * @param dest
+ * the dest parcel stream
+ * @param flags
+ * the flags
+ */
+ @Override
+ public void writeToParcel( Parcel dest, int flags )
+ {
+ dest.writeBooleanArray( new boolean[] { isSuccess } );
+ dest.writeString( resultMsg );
+ }
+
+ /**
+ * Create the result entity from parcel stream. Pay attention to read and
+ * write variables variables sequence should be consistent or not the
+ * correct results
+ *
+ * @param source
+ * The parcel stream
+ */
+ public void readFromParcel( Parcel source )
+ {
+ boolean[] value = new boolean[ 1 ];
+
+ source.readBooleanArray( value );
+ isSuccess = value[ 0 ];
+ resultMsg = source.readString();
+ }
+
+ /** The parcel creator. */
+ public static final Parcelable.Creator<ResultInfo> CREATOR = new Parcelable.Creator<ResultInfo>() {
+ @Override
+ public ResultInfo createFromParcel( Parcel source )
+ {
+ return new ResultInfo( source );
+ }
+
+ @Override
+ public ResultInfo[] newArray( int size )
+ {
+ return new ResultInfo[ size ];
+ }
+ };
+
+ /**
+ * Checks if is success flag.
+ *
+ * @return true, if is success flag
+ */
+ public boolean isSuccess()
+ {
+ return isSuccess;
+ }
+
+ /**
+ * Sets the success flag.
+ *
+ * @param isSuccess
+ * the new success flag
+ */
+ public void setSuccess( boolean isSuccess )
+ {
+ this.isSuccess = isSuccess;
+ }
+
+ /**
+ * Gets the result message.
+ *
+ * @return the result message
+ */
+ public String getResultMsg()
+ {
+ return resultMsg;
+ }
+
+ /**
+ * Sets the result message.
+ *
+ * @param resultMsg
+ * the new result message
+ */
+ public void setResultMsg( String resultMsg )
+ {
+ this.resultMsg = resultMsg;
+ }
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/richscrn/ResultUtil.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/richscrn/ResultUtil.aidl
new file mode 100644
index 0000000..b25c304
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/richscrn/ResultUtil.aidl
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.entity.richscrn;
+
+parcelable ResultUtil;
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/richscrn/ResultUtil.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/richscrn/ResultUtil.java
new file mode 100644
index 0000000..bb7b8d6
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/richscrn/ResultUtil.java
@@ -0,0 +1,200 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.entity.richscrn;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+/**
+ * <p>
+ * Title: The reslt util entity
+ * </p>
+ * <p>
+ * Description: The reslt util entity
+ * </p>
+ * <p>
+ * Copyright: Copyright (c) 2014
+ * </p>
+ * <p>
+ * Company: pci-suntek
+ * </p>
+ *
+ * @author zrq
+ * @version 1.0
+ *
+ */
+public class ResultUtil implements Parcelable
+{
+ /** The result succ flag, true is succ, otherwise it is fail. */
+ private boolean resultFlag;
+
+ /** The result info. */
+ private String resultMsg;
+ /**
+ * The result additional object, different conditions have different result
+ * object.
+ */
+ private Object resultObj;
+
+ /** The parcel creator. */
+ public static final Parcelable.Creator<ResultUtil> CREATOR = new Parcelable.Creator<ResultUtil>() {
+ @Override
+ public ResultUtil createFromParcel( Parcel source )
+ {
+ return new ResultUtil( source );
+ }
+
+ @Override
+ public ResultUtil[] newArray( int size )
+ {
+ return new ResultUtil[ size ];
+ }
+ };
+
+ /**
+ * Instantiates a new result entity.
+ */
+ public ResultUtil()
+ {}
+
+ /**
+ * Instantiates a new result entity from parcel.
+ *
+ * @param source
+ * the parcel source.
+ */
+ public ResultUtil( Parcel source )
+ {
+ readFromParcel( source );
+ }
+
+ /**
+ * The result entity write to parcel stream. Pay attention to write
+ * variables and read the ordering of the variables should be consistent or
+ * not the correct results.
+ *
+ * @param dest
+ * The parcel stream
+ * @param flags
+ * The write to parcel flag
+ */
+ @Override
+ public void writeToParcel( Parcel dest, int flags )
+ {
+ dest.writeBooleanArray( new boolean[] { resultFlag } );
+ dest.writeString( resultMsg );
+ dest.writeValue( resultObj );
+ }
+
+ /**
+ * Create the result entity from parcel stream. Pay attention to read and
+ * write variables variables sequence should be consistent or not the
+ * correct results
+ *
+ * @param source
+ * The parcel stream
+ */
+ public void readFromParcel( Parcel source )
+ {
+ boolean[] val = new boolean[ 1 ];
+ source.readBooleanArray( val );
+ resultFlag = val[ 0 ];
+ resultMsg = source.readString();
+ resultObj = source.readValue( this.getClass().getClassLoader() );
+ }
+
+ /**
+ * The parcel describe contents, defaul is 0.
+ *
+ * @return the int
+ */
+ @Override
+ public int describeContents()
+ {
+ return 0;
+ }
+
+ /**
+ * Checks if is result succ.
+ *
+ * @return true, if is result succ
+ */
+ public boolean isResultFlag()
+ {
+ return resultFlag;
+ }
+
+ /**
+ * Sets the result flag.
+ *
+ * @param resultFlag
+ * the new result flag
+ */
+ public void setResultFlag( boolean resultFlag )
+ {
+ this.resultFlag = resultFlag;
+ }
+
+ /**
+ * Gets the result info.
+ *
+ * @return the result info
+ */
+ public String getResultMsg()
+ {
+ return resultMsg;
+ }
+
+ /**
+ * Sets the result info.
+ *
+ * @param resultMsg
+ * the new result info.
+ */
+ public void setResultMsg( String resultMsg )
+ {
+ this.resultMsg = resultMsg;
+ }
+
+ /**
+ * Gets the result object.
+ *
+ * @return the result object
+ */
+ public Object getResultObj()
+ {
+ return resultObj;
+ }
+
+ /**
+ * Sets the result object.
+ *
+ * @param resultObj
+ * the new result object
+ */
+ public void setResultObj( Object resultObj )
+ {
+ this.resultObj = resultObj;
+ }
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/richscrn/RichScrnShowing.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/richscrn/RichScrnShowing.aidl
new file mode 100644
index 0000000..9f73553
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/richscrn/RichScrnShowing.aidl
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.entity.richscrn;
+
+parcelable RichScrnShowing;
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/richscrn/RichScrnShowing.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/richscrn/RichScrnShowing.java
new file mode 100644
index 0000000..6b83942
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugin/entity/richscrn/RichScrnShowing.java
@@ -0,0 +1,274 @@
+/*
+ * Copyright (c) 2014 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.api.plugin.entity.richscrn;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+/**
+ * <p>
+ * Title: The rich screen showing entity
+ * </p>
+ * <p>
+ * Description: The rich screen showing entity
+ * </p>
+ * <p>
+ * Copyright: Copyright (c) 2014
+ * </p>
+ * <p>
+ * Company: pci-suntek
+ * </p>
+ *
+ * @author zrq
+ * @version 1.0
+ *
+ */
+public class RichScrnShowing implements Parcelable
+{
+ /** The missdn. */
+ private String missdn;
+
+ /** The cid. */
+ private String cid;
+
+ /** The greeting. */
+ private String greeting;
+
+ /** The source type. */
+ private String sourceType;
+
+ /** The missdn address. */
+ private String missdnAddress;
+
+ /** The local source url. */
+ private String localSourceUrl;
+
+ /**
+ * Instantiates a new rich scrn showing.
+ */
+ public RichScrnShowing()
+ {}
+
+ /**
+ * Instantiates a new rich scrn showing.
+ *
+ * @param source
+ * the source
+ */
+ public RichScrnShowing( Parcel source )
+ {
+ readFromParcel( source );
+ }
+
+ /**
+ * The parcel describe contents, defaul is 0.
+ *
+ * @return the int
+ */
+ @Override
+ public int describeContents()
+ {
+ return 0;
+ }
+
+ /**
+ * Write the rich screen showing entity to parcel stream. Pay attention to
+ * read and write variables variables sequence should be consistent or not
+ * the correct results
+ *
+ * @param dest
+ * the dest parcel stream
+ * @param flags
+ * the flags
+ */
+ @Override
+ public void writeToParcel( Parcel dest, int flags )
+ {
+ dest.writeString( missdn );
+ dest.writeString( cid );
+ dest.writeString( greeting );
+ dest.writeString( sourceType );
+ dest.writeString( missdnAddress );
+ dest.writeString( localSourceUrl );
+ }
+
+ /**
+ * Create the rich screen showing entity from parcel stream. Pay attention
+ * to read and write variables variables sequence should be consistent or
+ * not the correct results
+ *
+ * @param source
+ * The parcel stream
+ */
+ public void readFromParcel( Parcel source )
+ {
+ missdn = source.readString();
+ cid = source.readString();
+ greeting = source.readString();
+ sourceType = source.readString();
+ missdnAddress = source.readString();
+ localSourceUrl = source.readString();
+ }
+
+ /** The parcel creator. */
+ public static final Parcelable.Creator<RichScrnShowing> CREATOR = new Parcelable.Creator<RichScrnShowing>() {
+ @Override
+ public RichScrnShowing createFromParcel( Parcel source )
+ {
+ return new RichScrnShowing( source );
+ }
+
+ @Override
+ public RichScrnShowing[] newArray( int size )
+ {
+ return new RichScrnShowing[ size ];
+ }
+ };
+
+ /**
+ * Gets the missdn.
+ *
+ * @return the missdn
+ */
+ public String getMissdn()
+ {
+ return missdn;
+ }
+
+ /**
+ * Sets the missdn.
+ *
+ * @param missdn
+ * the new missdn
+ */
+ public void setMissdn( String missdn )
+ {
+ this.missdn = missdn;
+ }
+
+ /**
+ * Gets the cid.
+ *
+ * @return the cid
+ */
+ public String getCid()
+ {
+ return cid;
+ }
+
+ /**
+ * Sets the cid.
+ *
+ * @param cid
+ * the new cid
+ */
+ public void setCid( String cid )
+ {
+ this.cid = cid;
+ }
+
+ /**
+ * Gets the greeting.
+ *
+ * @return the greeting
+ */
+ public String getGreeting()
+ {
+ return greeting;
+ }
+
+ /**
+ * Sets the greeting.
+ *
+ * @param greeting
+ * the new greeting
+ */
+ public void setGreeting( String greeting )
+ {
+ this.greeting = greeting;
+ }
+
+ /**
+ * Gets the source type.
+ *
+ * @return the source type
+ */
+ public String getSourceType()
+ {
+ return sourceType;
+ }
+
+ /**
+ * Sets the source type.
+ *
+ * @param sourceType
+ * the new source type
+ */
+ public void setSourceType( String sourceType )
+ {
+ this.sourceType = sourceType;
+ }
+
+ /**
+ * Gets the missdn address.
+ *
+ * @return the missdn address
+ */
+ public String getMissdnAddress()
+ {
+ return missdnAddress;
+ }
+
+ /**
+ * Sets the missdn address.
+ *
+ * @param missdnAddress
+ * the new missdn address
+ */
+ public void setMissdnAddress( String missdnAddress )
+ {
+ this.missdnAddress = missdnAddress;
+ }
+
+ /**
+ * Gets the local source url.
+ *
+ * @return the local source url
+ */
+ public String getLocalSourceUrl()
+ {
+ return localSourceUrl;
+ }
+
+ /**
+ * Sets the local source url.
+ *
+ * @param localSourceUrl
+ * the new local source url
+ */
+ public void setLocalSourceUrl( String localSourceUrl )
+ {
+ this.localSourceUrl = localSourceUrl;
+ }
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugincenter/IPluginCenterApi.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugincenter/IPluginCenterApi.aidl
new file mode 100644
index 0000000..d8aaf34
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/plugincenter/IPluginCenterApi.aidl
@@ -0,0 +1,28 @@
+/*
+ * Copyright (c) 2014 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.api.plugincenter;
+
+interface IPluginCenterApi {
+ void intentApk();
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/GroupUserData.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/GroupUserData.java
new file mode 100644
index 0000000..a76dcf0
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/GroupUserData.java
@@ -0,0 +1,77 @@
+/*
+ * Copyright (c) 2014 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.api.provider;
+
+import java.io.Serializable;
+
+public class GroupUserData implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = -6652084152928469940L;
+
+ public static final String TABLE_GROUP_USER = "chatGroupUser";
+
+ public static final String KEY_ID = "_id";
+
+ public static final String KEY_URI = "_uri";
+
+ public static final String KEY_GROUP_ID = "_groupid";
+
+ public static final String KEY_NAME = "_name";
+
+ public static final String KEY_NUMBER = "_number";
+
+ public static final String KEY_ROLE = "_role";
+
+ public static final String KEY_TIME = "_time";
+
+ public static final String KEY_AGREE_TO_JOIN = "_agreetojoin";
+
+ public static final String KEY_INVITE_NUMBER = "_invitenumber";
+
+ public static final String KEY_ETYPE = "_etype";
+
+ /**
+ * Column name about alias of member.
+ */
+ public static final String KEY_ALIAS = "_alias";
+
+ /**
+ * Column name about etag.
+ */
+ public static final String KEY_ETAG = "_etag";
+
+ /**
+ * Column name about image type.
+ */
+ public static final String KEY_IMG_TYPE = "_imgtype";
+
+ /**
+ * Column name about header image.
+ */
+ public static final String KEY_HEADER_IMG = "_headimg";
+
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/NewAddressBookData.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/NewAddressBookData.java
new file mode 100644
index 0000000..391fafa
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/NewAddressBookData.java
@@ -0,0 +1,193 @@
+/*
+ * Copyright (c) 2014 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.api.provider;
+
+import android.net.Uri;
+
+/**
+ * <p>Title: NewAddressBookData class</p>
+ * <p>
+ * Description: The class <code>NewAddressBookData</code> represents a new address book data database
+ * definition used by RCS.
+ * The constants definition include the access database URI and some column names.
+ * </p>
+ * <p>
+ * Copyright: Copyright (c) 2014
+ * </p>
+ * <p>
+ * Company: pci-suntek
+ * </p>
+ * @author YE JIE MING
+ * @version 1.0
+ *
+ */
+public class NewAddressBookData {
+
+ /** The Constant CONTENT_URI. */
+ public static final Uri CONTENT_URI = Uri.parse("content://com.suntek.mway.rcs.new.contacts/contacts");
+
+ /** The Constant ID. */
+ public static final String ID = "_id";
+
+
+ /** The Constant CONTACT_NUMBER. */
+ public static final String CONTACT_NUMBER = "contact_number";
+
+ /** The Constant PRESENCE_SHARING_STATUS. */
+ public static final String PRESENCE_SHARING_STATUS = "presence_sharing_status";
+
+
+ /** The Constant TIMESTAMP. */
+ public static final String TIMESTAMP = "timestamp";
+
+ /** The Constant RCS_STATUS. */
+ public static final String RCS_STATUS = "rcs_status";
+
+
+ /** The Constant REGISTRATION_STATE. */
+ public static final String REGISTRATION_STATE = "registration_state";
+
+
+ /** The Constant RCS_STATUS_TIMESTAMP. */
+ public static final String RCS_STATUS_TIMESTAMP = "rcs_status_timestamp";
+
+
+ /** The Constant PRESENCE_FREE_TEXT. */
+ public static final String PRESENCE_FREE_TEXT = "presence_free_text";
+
+
+ /** The Constant PRESENCE_WEBLINK_NAME. */
+ public static final String PRESENCE_WEBLINK_NAME = "presence_weblink_name";
+
+ /** The Constant PRESENCE_WEBLINK_URL. */
+ public static final String PRESENCE_WEBLINK_URL = "presence_weblink_url";
+
+ /** The Constant PRESENCE_PHOTO_EXIST_FLAG. */
+ public static final String PRESENCE_PHOTO_EXIST_FLAG = "presence_photo_exist_flag";
+
+ /** The Constant PRESENCE_PHOTO_ETAG. */
+ public static final String PRESENCE_PHOTO_ETAG = "presence_photo_etag";
+
+
+ /** The Constant PRESENCE_PHOTO_DATA. */
+ public static final String PRESENCE_PHOTO_DATA = "presence_photo_data";
+
+
+ /** The Constant PRESENCE_GEOLOC_EXIST_FLAG. */
+ public static final String PRESENCE_GEOLOC_EXIST_FLAG = "presence_geoloc_exist_flag";
+
+
+ /** The Constant PRESENCE_GEOLOC_LATITUDE. */
+ public static final String PRESENCE_GEOLOC_LATITUDE = "presence_geoloc_latitude";
+
+ /** The Constant PRESENCE_GEOLOC_LONGITUDE. */
+ public static final String PRESENCE_GEOLOC_LONGITUDE = "presence_geoloc_longitude";
+
+
+ /** The Constant PRESENCE_GEOLOC_ALTITUDE. */
+ public static final String PRESENCE_GEOLOC_ALTITUDE = "presence_geoloc_altitude";
+
+
+ /** The Constant PRESENCE_TIMESTAMP. */
+ public static final String PRESENCE_TIMESTAMP = "presence_timestamp";
+
+
+ /** The Constant CAPABILITY_TIMESTAMP. */
+ public static final String CAPABILITY_TIMESTAMP = "capability_timestamp";
+
+ /** The Constant CAPABILITY_CS_VIDEO. */
+ public static final String CAPABILITY_CS_VIDEO = "capability_cs_video";
+
+
+ /** The Constant CAPABILITY_IMAGE_SHARING. */
+ public static final String CAPABILITY_IMAGE_SHARING = "capability_image_sharing";
+
+
+ /** The Constant CAPABILITY_VIDEO_SHARING. */
+ public static final String CAPABILITY_VIDEO_SHARING = "capability_video_sharing";
+
+ /** The Constant CAPABILITY_IP_VOICE_CALL. */
+ public static final String CAPABILITY_IP_VOICE_CALL = "capability_ip_voice_call";
+
+
+ /** The Constant CAPABILITY_IP_VIDEO_CALL. */
+ public static final String CAPABILITY_IP_VIDEO_CALL = "capability_ip_video_call";
+
+
+ /** The Constant CAPABILITY_IM_SESSION. */
+ public static final String CAPABILITY_IM_SESSION = "capability_im_session";
+
+
+ /** The Constant CAPABILITY_FILE_TRANSFER. */
+ public static final String CAPABILITY_FILE_TRANSFER = "capability_file_transfer";
+
+ /** The Constant CAPABILITY_PRESENCE_DISCOVERY. */
+ public static final String CAPABILITY_PRESENCE_DISCOVERY = "capability_presence_discovery";
+
+
+ /** The Constant CAPABILITY_SOCIAL_PRESENCE. */
+ public static final String CAPABILITY_SOCIAL_PRESENCE = "capability_social_presence";
+
+
+ /** The Constant CAPABILITY_GEOLOCATION_PUSH. */
+ public static final String CAPABILITY_GEOLOCATION_PUSH = "capability_geolocation_push";
+
+
+ /** The Constant CAPABILITY_FILE_TRANSFER_HTTP. */
+ public static final String CAPABILITY_FILE_TRANSFER_HTTP = "capability_file_transfer_http";
+
+ /** The Constant CAPABILITY_FILE_TRANSFER_THUMBNAIL. */
+ public static final String CAPABILITY_FILE_TRANSFER_THUMBNAIL = "capability_file_transfer_thumbnail";
+
+
+ /** The Constant CAPABILITY_FILE_TRANSFER_SF. */
+ public static final String CAPABILITY_FILE_TRANSFER_SF = "capability_file_transfer_sf";
+
+
+ /** The Constant CAPABILITY_GROUP_CHAT_SF. */
+ public static final String CAPABILITY_GROUP_CHAT_SF = "capability_group_chat_sf";
+
+
+ /** The Constant CAPABILITY_EXTENSIONS. */
+ public static final String CAPABILITY_EXTENSIONS = "capability_extensions";
+
+
+ /** The Constant CAPABILITY_COMMON_EXTENSION. */
+ public static final String CAPABILITY_COMMON_EXTENSION = "capability_common_extension";
+
+
+ /** The Constant IM_BLOCKED. */
+ public static final String IM_BLOCKED = "im_blocked";
+
+
+ /** The Constant CAPABILITY_IM_BLOCKED_TIMESTAMP. */
+ public static final String CAPABILITY_IM_BLOCKED_TIMESTAMP = "im_blocked_timestamp";
+
+ /** The Constant TRUE. */
+ public static final String TRUE = Boolean.toString(true);
+
+ /** The Constant FALSE. */
+ public static final String FALSE = Boolean.toString(false);
+
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/PublicAccountData.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/PublicAccountData.java
new file mode 100644
index 0000000..e07d3a8
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/PublicAccountData.java
@@ -0,0 +1,110 @@
+/*
+ * Copyright (c) 2014 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.api.provider;
+
+import android.net.Uri;
+
+/**
+ * The Class PublicAccountData.
+ */
+public class PublicAccountData {
+
+ /** The Constant PUBLIC_ACCOUNT_AUTHORITY. */
+ public static final String PUBLIC_ACCOUNT_AUTHORITY = "com.suntek.mway.rcs.pubacct";
+
+ /** The Constant TABLE_ACCOUNT. */
+ public static final String TABLE_ACCOUNT = "publicAccount";
+
+ /** The Constant PUBLIC_ACCOUNT_CONTENT_URI. */
+ public static final Uri PUBLIC_ACCOUNT_CONTENT_URI = Uri.parse("content://" + PUBLIC_ACCOUNT_AUTHORITY + "/" + TABLE_ACCOUNT);
+
+ /** The Constant ID. */
+ public static final String ID = "_id";
+
+ /** The Constant ACCOUNT_ID. */
+ public static final String ACCOUNT_ID = "_pa_uuid";
+
+ /** The Constant ACCOUNT_NAME. */
+ public static final String ACCOUNT_NAME = "_name";
+
+ /** The Constant ACCOUNT_PHOTO_URL. */
+ public static final String ACCOUNT_LOGO = "_logo";
+
+ /** The Constant ACCOUNT_ENTERPRISE. */
+ public static final String ACCOUNT_RECOMMEND_LEVEL = "_recommend_level";
+
+ /** The Constant ACCOUNT_FUNTION. */
+ public static final String ACCOUNT_SIP_URI = "_sip_uri";
+
+ /** The Constant ACCOUNT_FOLLOWRD. */
+ public static final String ACCOUNT_FOLLOWRD = "_followed";
+
+ /** The Constant ACCOUNT_ACCEPT. */
+ public static final String ACCOUNT_ACCEPT = "_accept";
+
+ /** The Constant ACCOUNT_FOLLOWRD_TIME. */
+ public static final String ACCOUNT_FOLLOWRD_TIME = "_followed_time";
+
+ /** The Constant ACCOUNT_COMPANY. */
+ public static final String ACCOUNT_COMPANY = "_company";
+
+ /** The Constant ACCOUNT_INTRO. */
+ public static final String ACCOUNT_INTRO = "_intro";
+
+ /** The Constant ACCOUNT_TYPE. */
+ public static final String ACCOUNT_TYPE = "_type";
+
+ /** The Constant ACCOUNT_UPDATETIME. */
+ public static final String ACCOUNT_UPDATETIME = "_updateTime";
+
+ /** The Constant ACCOUNT_MENUTYPE. */
+ public static final String ACCOUNT_MENUTYPE = "_menuType";
+
+ /** The Constant ACCOUNT_MENUTIMESTAMP. */
+ public static final String ACCOUNT_MENUTIMESTAMP = "_menuTimestamp";
+
+ /** The Constant ACCOUNT_SUBSCRIBESTATUS. */
+ public static final String ACCOUNT_SUBSCRIBESTATUS = "_subscribeStatus";
+
+ /** The Constant ACCOUNT_ACTIVESTATUS. */
+ public static final String ACCOUNT_ACTIVESTATUS = "_activeStatus";
+
+ /** The Constant ACCOUNT_TEL. */
+ public static final String ACCOUNT_TEL = "_tel";
+
+ /** The Constant ACCOUNT_EMAIL. */
+ public static final String ACCOUNT_EMAIL = "_email";
+
+ /** The Constant ACCOUNT_ZIP. */
+ public static final String ACCOUNT_ZIP = "_zip";
+
+ /** The Constant ACCOUNT_ADDR. */
+ public static final String ACCOUNT_ADDR = "_addr";
+
+ /** The Constant ACCOUNT_FIELD. */
+ public static final String ACCOUNT_FIELD = "_field";
+
+ /** The Constant ACCOUNT_QRCODE. */
+ public static final String ACCOUNT_QRCODE = "_qrCode";
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/SuntekMessageData.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/SuntekMessageData.java
new file mode 100644
index 0000000..e2e4cd5
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/SuntekMessageData.java
@@ -0,0 +1,402 @@
+/*
+ * Copyright (c) 2014 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.api.provider;
+
+import android.net.Uri;
+
+/**
+ * <p>Title: SuntekMessageData class</p>
+ * <p>
+ * Description: The class <code>SuntekMessageData</code> represents a rich message data database
+ * definition used by RCS.
+ * The constants definition include the access database URI, some column names, chat types,
+ * message status and so on.
+ * </p>
+ * <p>
+ * Copyright: Copyright (c) 2014
+ * </p>
+ * <p>
+ * Company: pci-suntek
+ * </p>
+ * @author YE JIE MING
+ * @version 1.0
+ *
+ */
+public class SuntekMessageData {
+
+ /**
+ * Database URI prefix.
+ */
+ public static final String MESSAGE_AUTHORITY = "com.suntek.mway.rcs.message";
+
+ /** Table name of thread */
+ public static final String TABLE_MESSAGE_THREAD = "stkThread";
+
+ /** Table name of message */
+ public static final String TABLE_RICH_MESSAGE = "stkMessage";
+
+ /** Table name of message backup */
+ public static final String TABLE_RICH_MESSAGE_BACKUP = "stkMessageBak";
+
+ /** Table name of group */
+ public static final String TABLE_CHAT_GROUP= "chatGroup";
+
+ /** The Constant SUNTEK_MESSAGE_CONTENT_URI. */
+ public static final Uri SUNTEK_MESSAGE_CONTENT_URI = Uri.parse("content://" + MESSAGE_AUTHORITY + "/" + TABLE_RICH_MESSAGE);
+
+ /** The Constant CHAT_GROUP_CONTENT_URI. */
+ public static final Uri CHAT_GROUP_CONTENT_URI = Uri.parse("content://" + MESSAGE_AUTHORITY + "/" + TABLE_CHAT_GROUP);
+
+ /**
+ * Chat type about one to one.
+ */
+ public static final int CHAT_TYPE_ONE2ONE = 1;
+
+ /**
+ * Chat type about group chat.
+ */
+ public static final int CHAT_TYPE_ONE2GROUP = 2;
+
+ /**
+ * Chat type about group chat.
+ */
+ public static final int CHAT_TYPE_GROUP = 3;
+
+
+ /**
+ * Chat type about group-sent message.
+ */
+ public static final int CHAT_TYPE_PUBLIC = 4;
+
+ /**
+ * Message type about text message.
+ */
+ public static final int MSG_TYPE_TEXT = 0;
+ /**
+ * Message type about image message.
+ */
+ public static final int MSG_TYPE_IMAGE = 1;
+ /**
+ * Message type about audio message.
+ */
+ public static final int MSG_TYPE_AUDIO = 2;
+ /**
+ * Message type about video message.
+ */
+ public static final int MSG_TYPE_VIDEO = 3;
+ /**
+ * Message type about map message.
+ */
+ public static final int MSG_TYPE_MAP = 4;
+ /**
+ * Message type about contact message.
+ */
+ public static final int MSG_TYPE_CONTACT = 5;
+ /**
+ * Message type about gif message.
+ */
+ public static final int MSG_TYPE_GIF = 6;
+ /**
+ * Message type about group message.
+ */
+ public static final int MSG_TYPE_GROUP_INFO = 7;
+ /**
+ * Message type about public account message.
+ */
+ public static final int MSG_TYPE_PUBLIC_TOPIC = 8;
+
+ /** Message type about notification. */
+ public static final int MSG_TYPE_NOTIFICATION = 9;
+
+ /** Message type about MMS. */
+ public static final int MSG_TYPE_MMS = 10;
+
+ /** Message type about paid emo. */
+ public static final int MSG_TYPE_PAID_EMO = 11;
+
+ /** Message type for MMS. */
+ public static final int MSG_TYPE_MMS_SEND_REQ = 128;
+
+ /** Message type for MMS. */
+ public static final int MSG_TYPE_MMS_NOTIFICATION_IND = 130;
+
+ /** Message type for MMS. */
+ public static final int MSG_TYPE_MMS_RETRIEVE_CONF = 132;
+
+ /** Message type about SMS. */
+ public static final int MSG_TYPE_SMS = 12;
+
+ /**
+ * Message sent status that the opposite has received.
+ */
+ public static final int MSG_STATE_SEND_REC = -1;
+
+ /**
+ * Message status about message is sent out but not received by the other side.
+ */
+ public static final int MSG_STATE_SENDED = 32;
+
+ /**
+ * Message status about message is in the queue waiting for sending.
+ */
+ public static final int MSG_STATE_SEND_ING = 64;
+
+ /**
+ * Message status about message is sent failure.
+ */
+ public static final int MSG_STATE_SEND_FAIL = 128;
+
+ /**
+ * Message status about video download failure.
+ */
+ public static final int MSG_STATE_DOWNLOAD_FAIL = 5;
+
+ /**
+ * Message status about read status.
+ */
+ public static final int MSG_READ = 1;
+
+ /**
+ * Message status about unread status.
+ */
+ public static final int MSG_UNREAD = 0;
+
+ /**
+ * Message status about send.
+ * Ue send message to another
+ */
+ public static final int MSG_SEND = 2;
+
+ /**
+ * Message status about receive.
+ * Ue received message from another
+ */
+ public static final int MSG_RECEIVE = 1;
+
+ /** The message which not burn message. */
+ public static final int MSG_BURN_AFTER_READ_NOT = 0;
+
+ /** The message which is burn message. */
+ public static final int MSG_BURN_AFTER_READ_FLAG = 1;
+
+ /** The Constant MSG_BAR_CYCLE_NONE. */
+ public static final int MSG_BAR_CYCLE_NONE = 0;
+
+ /** The message is unread. */
+ public static final int MSG_BURN_UNREAD = MSG_UNREAD;
+
+ /** The message has been readed. */
+ public static final int MSG_BURN_READED = MSG_READ;
+
+ /** The message has been burned. */
+ public static final int MSG_BURN_HAS_BEEN_BURNED = 2;
+
+ /** The message which not blacklist message */
+ public static final int MSG_BLACK_NOT = 0;
+
+ /** The message which is blacklist message */
+ public static final int MSG_BLACK_FLAG = 1;
+
+ /** no need to continue */
+ public static final int CONTINUE_NONE = 0;
+
+ /** need continue upload */
+ public static final int CONTINUE_UPLOAD = 1;
+
+ /** need continue download */
+ public static final int CONTINUE_DOWNLOAD = 2;
+
+ /**
+ * Column name about key id of message.
+ */
+ public static final String KEY_ID = "_id";
+
+ /**
+ * Column name about contact of message.
+ */
+ public static final String KEY_CONTACT = "_contact";
+ /**
+ * Column name about message id of message.
+ */
+ public static final String KEY_MESSAGE_ID = "_message_id";
+
+ /**
+ * Column name about data of message.
+ */
+ public static final String KEY_DATA = "_data";
+ /**
+ * Column name about time of message.
+ */
+ public static final String KEY_TIME = "_time";
+ /**
+ * Column name about file name of message.
+ */
+ public static final String KEY_FILENAME = "_filename";
+ /**
+ * Column name about file size of message.
+ */
+ public static final String KEY_FILESIZE = "_filesize";
+ /**
+ * Column name about mine type of message.
+ */
+ public static final String KEY_MIME_TYPE = "_mime_type";
+ /**
+ * Column name about type of message.
+ */
+ public static final String KEY_MSG_TYPE = "_msg_type";
+ /**
+ * Column name about send and receive of message.
+ */
+ public static final String KEY_SEND_RECEIVE = "_send_receive";
+
+ /**
+ * Column name about whether message is read or not.
+ */
+ public static final String KEY_IS_READ = "_is_read";
+
+ /**
+ * Column name about status of message.
+ */
+ public static final String KEY_MSG_STATE = "_msg_state";
+ /**
+ * Column name about thread id of message.
+ */
+ public static final String KEY_THREAD_ID = "_thread_id";
+ /**
+ * Column name about chat type of message.
+ */
+ public static final String KEY_CHAT_TYPE = "_chat_type";
+
+ /**
+ * Column name about contribution id of chat message.
+ */
+ public static final String KEY_CONTRIBUTION_ID = "_contribution_id";
+
+ /**
+ * column name about conversation id of chat message.
+ */
+ public static final String KEY_CONVERSATION_ID = "_conversation_id";
+
+ /** file selector. */
+ public static final String KEY_FILE_SELECTOR = "_file_selector";
+
+ /** File transfer id. */
+ public static final String KEY_FILE_TRANSFER_ID = "_file_transfer_id";
+
+ /** File transfer name. */
+ public static final String KEY_FILE_TRANSFER_EXT = "_file_transfer_ext";
+
+ /** File icon. */
+ public static final String KEY_FILE_ICON = "_file_icon";
+
+ /** Flag of message which is burn after reading. */
+ public static final String KEY_MSG_BURN_AFTER_READ_FLAG = "_burn_flag";
+
+ /** The barCycle of message which is burn after reading. */
+ public static final String KEY_MSG_BURN_BAR_CYCLE = "_barcycle";
+
+ /** The Constant kEY_MSG_HEADER. */
+ public static final String kEY_MSG_HEADER = "_header";
+
+ /** The Constant KEY_MSG_BODY. */
+ public static final String KEY_MSG_BODY = "_body";
+
+ /**
+ * Column name about subject of group chat.
+ */
+ public static final String KEY_SUBJECT = "_subject";
+
+ /**
+ * Column name about chat uri of group chat.
+ */
+ public static final String KEY_CHAT_URI = "_chat_uri";
+
+ /**
+ * Column name about status of group chat.
+ */
+ public static final String KEY_GROUP_STATUS = "_status";
+
+ /**
+ * Column name about data members of group chat.
+ */
+ public static final String KEY_DATA_MEMBERS = "_data_members";
+
+ /**
+ * column name about group last chat time.
+ */
+ public static final String KEY_LAST_CHAT_TIME = "_last_chat_time";
+
+ /**
+ * Column name about contact group id of group chat.
+ */
+ public static final String KEY_CONTACT_GROUP_ID = "_contact_group_id";
+
+ /**
+ * Column name about max count of members.
+ */
+ public static final String KEY_MAX_COUNT = "_maxcount";
+
+ /**
+ * Column name about remark of group.
+ */
+ public static final String KEY_REMARK = "_remark";
+
+ /**
+ * Column name about remind policy of group.
+ */
+ public static final String KEY_REMIND_POLICY = "_policy";
+
+ /** Flag of message which is blacklist message. */
+ public static final String KEY_MSG_BLACK_FLAG = "_black_flag";
+
+ /** Last message identity. */
+ public static final String KEY_LAST_MSG_ID = "_lstMsgId";
+
+ /** Last message data. */
+ public static final String KEY_LAST_MSG = "_lstData";
+
+ /** Last message time. */
+ public static final String KEY_LAST_TIME = "_lstTime";
+
+ /** Count of message. */
+ public static final String KEY_THREAD_COUNT = "_count";
+
+ /** Count of unread message. */
+ public static final String KEY_THREAD_UNREAD_COUNT = "_unReadCount";
+
+ /**
+ * Column name about SMS of store type.
+ */
+ public static final int STORE_TYPE_SMS = 1;
+
+ /**
+ * Column name about MMS of store type.
+ */
+ public static final int STORE_TYPE_MMS = 2;
+
+ /**
+ * Column name about new message of store type.
+ */
+ public static final int STORE_TYPE_NEW_MSG = 3;
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/SuntekMessageDbSlct.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/SuntekMessageDbSlct.java
new file mode 100644
index 0000000..b919d8a
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/SuntekMessageDbSlct.java
@@ -0,0 +1,274 @@
+/*
+ * Copyright (c) 2014 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.api.provider;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import android.content.ContentResolver;
+import android.content.Context;
+import android.database.Cursor;
+
+import com.suntek.mway.rcs.client.api.provider.model.ChatMessage;
+import com.suntek.mway.rcs.client.api.provider.model.ChatThread;
+import com.suntek.mway.rcs.client.api.provider.model.GroupChatModel;
+
+/**
+ * <p>Title: SuntekMessageDbSlct class</p>
+ * <p>
+ * Description: The class <code>SuntekMessageDbSlct</code> offers functions for query rich message database.
+ * </p>
+ * <p>
+ * Copyright: Copyright (c) 2014
+ * </p>
+ * <p>
+ * Company: pci-sunteck
+ * </p>
+ * @author YE JIE MING
+ * @version 1.0
+ *
+ */
+public class SuntekMessageDbSlct {
+
+ /**
+ * a singleton instance of SuntekMessageDbSlct
+ */
+ private static SuntekMessageDbSlct instance;
+
+ /**
+ * an instance of android.content.ContentResolver
+ */
+ private ContentResolver contentResolver;
+
+ /**
+ * Static method for instance creation with the specified subclass of android.content.Context,
+ * here is the instance of RCSApplication.
+ * @param context subclass of android.content.Context, here is the instance of RCSApplication.
+ * @return instance of SuntekMessageDbSlct
+ */
+ public static SuntekMessageDbSlct createInstance(Context context) {
+ if(instance == null){
+ synchronized(SuntekMessageDbSlct.class){
+ if(instance == null){
+ instance = new SuntekMessageDbSlct(context);
+ }
+ }
+ }
+ return instance;
+ }
+
+ /**
+ * Private constructor to avoid creating instance directly
+ * @param context subclass of android.content.Context, here is the instance of RCSApplication.
+ */
+ private SuntekMessageDbSlct(Context context) {
+ contentResolver = context.getContentResolver();
+ }
+
+
+ /**
+ * Query all phone numbers of contact by thread id.
+ * @param threadId a thread id that identities a chat session.
+ * @return phone numbers which are semicolon-separated.
+ */
+ public String getAllNumbersByThreadId(String threadId) {
+ StringBuffer sb = new StringBuffer();
+ Cursor cursor = contentResolver.query(SuntekMessageData.SUNTEK_MESSAGE_CONTENT_URI, new String[] {
+ "distinct " + SuntekMessageData.KEY_CONTACT
+ },
+ SuntekMessageData.KEY_THREAD_ID + "=?", new String[] {
+ threadId + ""
+ }, null);
+ if (cursor != null) {
+ cursor.moveToFirst();
+ while (!cursor.isAfterLast()) {
+ sb.append(cursor.getString(0));
+ sb.append(";");
+ cursor.moveToNext();
+ }
+ cursor.close();
+ }
+
+ String number = sb.toString();
+ if (number.endsWith(";")) {
+ number = number.substring(0, number.length() - 1);
+ }
+ return number;
+ }
+
+ /**
+ * Query chat group detail information by thread id. The chat group information is represented by class {@link com.suntek.mway.rcs.client.api.provider.model.ChatGroupModel}
+ * @param threadId thread_id a thread id that identities a chat session.
+ * @return return null if can not find record
+ */
+ public GroupChatModel getChatGroupByThreadId(String threadId) {
+ String[] projection = new String[]{SuntekMessageData.KEY_ID,
+ SuntekMessageData.KEY_SUBJECT,
+ SuntekMessageData.KEY_CHAT_URI,
+ SuntekMessageData.KEY_CONTRIBUTION_ID,
+ SuntekMessageData.KEY_CONTACT_GROUP_ID,
+ SuntekMessageData.KEY_DATA_MEMBERS,
+ SuntekMessageData.KEY_THREAD_ID};
+ Cursor cursor = contentResolver.query(SuntekMessageData.CHAT_GROUP_CONTENT_URI, projection, SuntekMessageData.KEY_THREAD_ID+"=?",
+ new String[]{threadId}, null);
+ if(cursor != null) {
+ while(cursor.moveToNext()) {
+ GroupChatModel model = cursorToChatGroupModel(cursor);
+ return model;
+ }
+ cursor.close();
+ }
+ return null;
+ }
+
+ /**
+ * Query a list of chat group information which is represented by class {@link com.suntek.mway.rcs.client.api.provider.model.ChatGroupModel}
+ * @return a list of chat group
+ */
+ public List<GroupChatModel> getChatGroupList() {
+ List<GroupChatModel> list = new ArrayList<GroupChatModel>();
+ String[] projection = new String[]{SuntekMessageData.KEY_ID,
+ SuntekMessageData.KEY_SUBJECT,
+ SuntekMessageData.KEY_CHAT_URI,
+ SuntekMessageData.KEY_CONTRIBUTION_ID,
+ SuntekMessageData.KEY_CONTACT_GROUP_ID,
+ SuntekMessageData.KEY_DATA_MEMBERS,
+ SuntekMessageData.KEY_THREAD_ID};
+ Cursor cursor = contentResolver.query(SuntekMessageData.CHAT_GROUP_CONTENT_URI, projection, null,
+ null, null);
+ if(cursor != null) {
+ while(cursor.moveToNext()) {
+ GroupChatModel model = cursorToChatGroupModel(cursor);
+ list.add(model);
+ }
+ cursor.close();
+ }
+ return list;
+ }
+
+ /**
+ * Transform a record pointed by an android.database.Cursor to
+ * a chat group information represented by class {@link com.suntek.mway.rcs.client.api.contacts.ChatGroupModel}
+ * @param cursor an android.database.Cursor
+ * @return a chat group information represented by class {@link com.suntek.mway.rcs.client.api.provider.model.ChatGroupModel}
+ */
+ private GroupChatModel cursorToChatGroupModel(Cursor cursor) {
+ int id = cursor.getInt(cursor.getColumnIndex(SuntekMessageData.KEY_ID));
+ String subject = cursor.getString(cursor.getColumnIndex(SuntekMessageData.KEY_SUBJECT));
+ String chatUri = cursor.getString(cursor.getColumnIndex(SuntekMessageData.KEY_CHAT_URI));
+ String contributionId = cursor.getString(cursor.getColumnIndex(SuntekMessageData.KEY_CONTRIBUTION_ID));
+ String contactGroupId = cursor.getString(cursor.getColumnIndex(SuntekMessageData.KEY_CONTACT_GROUP_ID));
+ String dataMembers = cursor.getString(cursor.getColumnIndex(SuntekMessageData.KEY_DATA_MEMBERS));
+ long threadId = cursor.getLong(cursor.getColumnIndex(SuntekMessageData.KEY_THREAD_ID));
+ GroupChatModel model = new GroupChatModel();
+ model.setId(id);
+ model.setSubject(subject);
+ model.setChatUri(chatUri);
+ model.setContributionId(contributionId);
+ model.setContactGroupId(contactGroupId);
+ model.setDataMembers(dataMembers);
+ model.setThreadId(threadId);
+ return model;
+
+ }
+
+ /**
+ * Transform a record pointed by an android.database.Cursor to
+ * a chat message information represented by class {@link com.suntek.mway.rcs.client.api.contacts.ChatMessage}
+ * @param cursor an android.database.Cursor
+ * @return a chat message information represented by class {@link com.suntek.mway.rcs.client.api.provider.model.ChatMessage}
+ */
+ private ChatMessage cursorToChatMessage(Cursor cursor) {
+ int id = cursor.getInt(cursor.getColumnIndex(SuntekMessageData.KEY_ID));
+ String contact = cursor.getString(cursor.getColumnIndex(SuntekMessageData.KEY_CONTACT));
+ String messageId = cursor.getString(cursor.getColumnIndex(SuntekMessageData.KEY_MESSAGE_ID));
+ String data = cursor.getString(cursor.getColumnIndex(SuntekMessageData.KEY_DATA));
+ long time = cursor.getLong(cursor.getColumnIndex(SuntekMessageData.KEY_TIME));
+ String filename = cursor.getString(cursor.getColumnIndex(SuntekMessageData.KEY_FILENAME));
+ long filesize = cursor.getLong(cursor.getColumnIndex(SuntekMessageData.KEY_FILESIZE));
+ String mimeType = cursor.getString(cursor.getColumnIndex(SuntekMessageData.KEY_MIME_TYPE));
+ int msgType = cursor.getInt(cursor.getColumnIndex(SuntekMessageData.KEY_MSG_TYPE));
+ int sendReceive = cursor.getInt(cursor.getColumnIndex(SuntekMessageData.KEY_SEND_RECEIVE));
+ int isRead = cursor.getInt(cursor.getColumnIndex(SuntekMessageData.KEY_IS_READ));
+ int msgState = cursor.getInt(cursor.getColumnIndex(SuntekMessageData.KEY_MSG_STATE));
+ int chatType = cursor.getInt(cursor.getColumnIndex(SuntekMessageData.KEY_CHAT_TYPE));
+ long threadId = cursor.getLong(cursor.getColumnIndex(SuntekMessageData.KEY_THREAD_ID));
+ ChatMessage model = new ChatMessage();
+ model.setId(id);
+ model.setContact(contact);
+ model.setMessageId(messageId);
+ model.setData(data);
+ model.setTime(time);
+ model.setFilename(filename);
+ model.setFilesize(filesize);
+ model.setMimeType(mimeType);
+ model.setMsgType(msgType);
+ model.setSendReceive(sendReceive);
+ model.setIsRead(isRead);
+ model.setMsgState(msgState);
+ model.setChatType(chatType);
+ model.setThreadId(threadId);
+ return model;
+
+ }
+
+ /**
+ * Query a list of chat message by thread id.
+ * @param threadId a thread id that identities a chat session.
+ * @return a list of chat message
+ */
+ public List<ChatMessage> getChatMessageListByThreadId(String threadId) {
+ List<ChatMessage> list = new ArrayList<ChatMessage>();
+ String[] projection = new String[]{SuntekMessageData.KEY_ID,
+ SuntekMessageData.KEY_CONTACT,
+ SuntekMessageData.KEY_MESSAGE_ID,
+ SuntekMessageData.KEY_DATA,
+ SuntekMessageData.KEY_TIME,
+ SuntekMessageData.KEY_FILENAME,
+ SuntekMessageData.KEY_FILESIZE,
+ SuntekMessageData.KEY_MIME_TYPE,
+ SuntekMessageData.KEY_MSG_TYPE,
+ SuntekMessageData.KEY_SEND_RECEIVE,
+ SuntekMessageData.KEY_IS_READ,
+ SuntekMessageData.KEY_MSG_STATE,
+ SuntekMessageData.KEY_CHAT_TYPE,
+ SuntekMessageData.KEY_THREAD_ID
+ };
+ String selection = SuntekMessageData.KEY_THREAD_ID+"=?";
+ String[] selectionArgs = new String[]{threadId};
+ Cursor cursor = contentResolver.query(SuntekMessageData.SUNTEK_MESSAGE_CONTENT_URI, projection, selection,
+ selectionArgs, null);
+ if(cursor != null) {
+ while(cursor.moveToNext()) {
+ ChatMessage model = cursorToChatMessage(cursor);
+ list.add(model);
+ }
+ cursor.close();
+ }
+ return list;
+ }
+
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/model/ChatMessage.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/model/ChatMessage.aidl
new file mode 100644
index 0000000..bbff80b
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/model/ChatMessage.aidl
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2014 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.api.provider.model;
+
+parcelable ChatMessage;
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/model/ChatMessage.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/model/ChatMessage.java
new file mode 100644
index 0000000..31c382b
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/model/ChatMessage.java
@@ -0,0 +1,814 @@
+/*
+ * Copyright (c) 2014 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.api.provider.model;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+/**
+ * <p>Title: ChatMessage class</p>
+ * <p>
+ * Description: The class <code>ChatMessage</code> represents a chat message information
+ * which is indicated by the field definition in this class.
+ * </p>
+ * <p>
+ * Copyright: Copyright (c) 2014
+ * </p>
+ * <p>
+ * Company: pci-suntek
+ * </p>
+ * @author YE JIE MING
+ * @version 1.0
+ *
+ */
+public class ChatMessage implements Parcelable, Comparable<ChatMessage> {
+ /**
+ * The chat message record id.
+ */
+ private int id = -1;
+
+ /**
+ * The chat message contact.
+ */
+ private String contact;
+
+ /**
+ * The chat message id.
+ */
+ private String messageId;
+
+ /**
+ * The chat message data.
+ */
+ private String data;
+ /**
+ * The chat message time.
+ */
+ private long time;
+
+ /**
+ * The filename of chat message.
+ */
+ private String filename;
+ /**
+ * The file size of file name.
+ */
+ private long filesize;
+
+ /**
+ * The chat message mine type.
+ */
+ private String mimeType;
+
+ /**
+ * The chat message type.
+ */
+ private int msgType;
+ /**
+ * Whether send or receive of chat message.
+ */
+ private int sendReceive;
+
+ /**
+ * The chat message is read.
+ */
+ private int isRead;
+
+ /**
+ * The state of chat message.
+ */
+ private int msgState;
+
+ /**
+ * The chat type of chat message.
+ */
+ private int chatType;
+
+ /**
+ * The thread id of chat message.
+ */
+ private long threadId;
+
+ /**
+ * conversation id of chat message.
+ */
+ private String conversationId;
+
+ /**
+ * contribution id of chat message.
+ */
+ private String contributionId;
+
+ /** The file selector. */
+ private String fileSelector;
+
+ /** The file transfer ext. */
+ private String fileTransferExt;
+
+ /** The file transfer id. */
+ private String fileTransferId;
+
+ /** The file icon. */
+ private String fileIcon;
+
+ /**
+ * Mark message that is burn after reading message.
+ */
+ private int msgBurnAfterReadFlag = 0;
+
+ /**
+ * Read the message after N seconds then burn it.
+ */
+ private int barCycle = 0;
+
+ /** Header of message, when receive message then set the header. */
+ private String header;
+
+ /** Body of message, when receive message then set the body. */
+ private String body ;
+
+ /** public account message. */
+ private PublicMessage publicMessage;
+
+ /**
+ * Mark message that is blacklist message.
+ */
+ private int msgBlackFlag = 0;
+
+ /**
+ * Mark message need transfer continue
+ */
+ private int continueFlag;
+
+ /**
+ * Instantiates a new Chat Messages.
+ */
+ public ChatMessage()
+ {
+ }
+
+ /**
+ * Instantiates a new Chat Messages.
+ *
+ * @param source
+ * the source
+ */
+ public ChatMessage( Parcel source )
+ {
+ readFromParcel( source );
+ }
+ /**
+ * Get the record id.
+ * @return the record id
+ */
+ public int getId() {
+ return id;
+ }
+ /**
+ * set the record id.
+ * @param id the record id
+ */
+ public void setId(int id) {
+ this.id = id;
+ }
+
+ /**
+ * Get contact.
+ *
+ * @return contact
+ */
+ public String getContact() {
+ return contact;
+ }
+
+ /**
+ * Set contact.
+ *
+ * @param contact contact
+ */
+ public void setContact(String contact) {
+ this.contact = contact;
+ }
+ /**
+ * Get message id.
+ * @return message id
+ */
+ public String getMessageId() {
+ return messageId;
+ }
+
+ /**
+ * Set message id.
+ *
+ * @param messageId the new message id
+ */
+ public void setMessageId(String messageId) {
+ this.messageId = messageId;
+ }
+ /**
+ * Get message content.
+ * @return If message type is RichMessageData.MSG_TYPE_FILE, then return file path;
+ * If message type is RichMessageData.MSG_TYPE_LOCATION, then return a formatted string in the form of "longitude,latitude,information of geographical location";
+ * If message type is RichMessageData.MSG_TYPE_CONTACT, the return data of Vcard.
+ */
+ public String getData() {
+ return data;
+ }
+
+ /**
+ * Set the message content.
+ *
+ * @param data the new data
+ */
+ public void setData(String data) {
+ this.data = data;
+ }
+
+ /**
+ * Get message time.
+ *
+ * @return the time
+ */
+ public long getTime() {
+ return time;
+ }
+
+ /**
+ * Set message time.
+ *
+ * @param time the new time
+ */
+ public void setTime(long time) {
+ this.time = time;
+ }
+
+ /**
+ * Get file name.
+ *
+ * @return the filename
+ */
+ public String getFilename() {
+ return filename;
+ }
+
+ /**
+ * Set file name.
+ *
+ * @param filename the new filename
+ */
+ public void setFilename(String filename) {
+ this.filename = filename;
+ }
+
+ /**
+ * Get file size.
+ *
+ * @return the filesize
+ */
+ public long getFilesize() {
+ return filesize;
+ }
+
+ /**
+ * Set file size.
+ *
+ * @param filesize the new filesize
+ */
+ public void setFilesize(long filesize) {
+ this.filesize = filesize;
+ }
+
+ /**
+ * Get mine type.
+ *
+ * @return the mime type
+ */
+ public String getMimeType() {
+ return mimeType;
+ }
+
+ /**
+ * Set mini type.
+ *
+ * @param mimeType the new mime type
+ */
+ public void setMimeType(String mimeType) {
+ this.mimeType = mimeType;
+ }
+ /**
+ * Get the message type.
+ * @return The possible value can be<br/>
+ * RichMessageData.MSG_TYPE_TEXT,<br/>
+ * RichMessageData.MSG_TYPE_FILE,<br/>
+ * RichMessageData.MSG_TYPE_LOCATION,<br/>
+ * RichMessageData.MSG_TYPE_CONTACT,<br/>
+ * RichMessageData.MSG_TYPE_GROUP_INFO
+ */
+ public int getMsgType() {
+ return msgType;
+ }
+ /**
+ * Set the message type.
+ * @param msgType The possible value can be<br/>
+ * RichMessageData.MSG_TYPE_TEXT,<br/>
+ * RichMessageData.MSG_TYPE_FILE,<br/>
+ * RichMessageData.MSG_TYPE_LOCATION,<br/>
+ * RichMessageData.MSG_TYPE_CONTACT,<br/>
+ * RichMessageData.MSG_TYPE_GROUP_INFO
+ */
+ public void setMsgType(int msgType) {
+ this.msgType = msgType;
+ }
+
+ /**
+ * Get whether send or receive.
+ *
+ * @return The possible value can be<br/>
+ * RichMessageData.MSG_SEND,<br/>
+ * RichMessageData.MSG_RECEIVE
+ */
+ public int getSendReceive() {
+ return sendReceive;
+ }
+
+ /**
+ * Set send or receive.
+ *
+ * @param sendReceive The possible value can be<br/>
+ * RichMessageData.MSG_SEND,<br/>
+ * RichMessageData.MSG_RECEIVE
+ */
+ public void setSendReceive(int sendReceive) {
+ this.sendReceive = sendReceive;
+ }
+
+ /**
+ * Get whether the message id read or not.
+ *
+ * @return the checks if is read
+ */
+ public int getIsRead() {
+ return isRead;
+ }
+
+ /**
+ * Set whether the message id read or not.
+ *
+ * @param isRead the new checks if is read
+ */
+ public void setIsRead(int isRead) {
+ this.isRead = isRead;
+ }
+ /**
+ * Get status of message.
+ * @return The possible value can be<br/>
+ * RichMessageData.MSG_STATE_SEND_OK,<br/>
+ * RichMessageData.MSG_STATE_SEND_REC,<br/>
+ * RichMessageData.MSG_STATE_SENDED,<br/>
+ * RichMessageData.MSG_STATE_SEND_ING,<br/>
+ * RichMessageData.MSG_STATE_SEND_FAIL
+ */
+ public int getMsgState() {
+ return msgState;
+ }
+
+ /**
+ * Set status of message.
+ *
+ * @param msgState the new msg state
+ */
+ public void setMsgState(int msgState) {
+ this.msgState = msgState;
+ }
+
+ /**
+ * Get the thread id.
+ *
+ * @return the thread id
+ */
+ public long getThreadId() {
+ return threadId;
+ }
+
+ /**
+ * Set the thread id.
+ *
+ * @param threadId the thread id
+ */
+ public void setThreadId(long threadId) {
+ this.threadId = threadId;
+ }
+ /**
+ * Get the chat type.
+ * @return The possible value can be<br/>
+ * SuntekMessageData.CHAT_TYPE_ONE2ONE,<br/>
+ * SuntekMessageData.CHAT_TYPE_GROUPCHAT,<br/>
+ * SuntekMessageData.CHAT_TYPE_MULTICHAT
+ */
+ public int getChatType() {
+ return chatType;
+ }
+
+ /**
+ * Set the chat type.
+ *
+ * @param chatType the new chat type
+ */
+ public void setChatType(int chatType) {
+ this.chatType = chatType;
+ }
+
+ /**
+ * Get message conversation id.
+ *
+ * @return chat message conversation id
+ */
+ public String getConversationId() {
+ return conversationId;
+ }
+
+ /**
+ * Set message conversation id.
+ *
+ * @param conversationId the new conversation id
+ * @return conversationId
+ */
+ public void setConversationId(String conversationId) {
+ this.conversationId = conversationId;
+ }
+
+ /**
+ * Get message contribution id.
+ *
+ * @return chat message contribution id
+ */
+ public String getContributionId() {
+ return contributionId;
+ }
+
+ /**
+ * Set message contribution id.
+ *
+ * @param contributionId the new contribution id
+ * @return contributionId
+ */
+ public void setContributionId(String contributionId) {
+ this.contributionId = contributionId;
+ }
+
+ /**
+ * Get file selector.
+ *
+ * @return the file selector
+ */
+ public String getFileSelector() {
+ return fileSelector;
+ }
+
+ /**
+ * Set file selector .
+ *
+ * @param fileSelector the new file selector
+ */
+ public void setFileSelector(String fileSelector) {
+ this.fileSelector = fileSelector;
+ }
+
+ /**
+ * Get file transfer extend info.
+ *
+ * @return the file transfer ext
+ */
+ public String getFileTransferExt() {
+ return fileTransferExt;
+ }
+
+ /**
+ * Set file transfer extend info.
+ *
+ * @param fileTransferExt the new file transfer ext
+ */
+ public void setFileTransferExt(String fileTransferExt) {
+ this.fileTransferExt = fileTransferExt;
+ }
+
+ /**
+ * Get file transfer extend info id.
+ *
+ * @return the file transfer id
+ */
+ public String getFileTransferId() {
+ return fileTransferId;
+ }
+
+ /**
+ * Set file transfer extend info id.
+ *
+ * @param fileTransferId the new file transfer id
+ */
+ public void setFileTransferId(String fileTransferId) {
+ this.fileTransferId = fileTransferId;
+ }
+
+ /**
+ * Get transfer file icon.
+ *
+ * @return the file icon
+ */
+ public String getFileIcon() {
+ return fileIcon;
+ }
+
+ /**
+ * Set transfer file icon.
+ *
+ * @param fileIcon the new file icon
+ */
+ public void setFileIcon(String fileIcon) {
+ this.fileIcon = fileIcon;
+ }
+
+ /**
+ * Get message burn after reading flag.
+ *
+ * @return the msg burn after read flag
+ */
+ public int getMsgBurnAfterReadFlag() {
+ return msgBurnAfterReadFlag;
+ }
+
+ /**
+ * Set message burn after reading flag.
+ *
+ * @param msgBurnAfterReadFlag the new msg burn after read flag
+ */
+ public void setMsgBurnAfterReadFlag(int msgBurnAfterReadFlag) {
+ this.msgBurnAfterReadFlag = msgBurnAfterReadFlag;
+ }
+
+ /**
+ * Get barCycle of burn after reading message.
+ *
+ * @return the bar cycle
+ */
+ public int getBarCycle() {
+ return barCycle;
+ }
+
+ /**
+ * Set barCycle of burn after reading message.
+ *
+ * @param barCycle the new bar cycle
+ */
+ public void setBarCycle(int barCycle) {
+ this.barCycle = barCycle;
+ }
+
+ /**
+ * Gets the public message.
+ *
+ * @return the public message
+ */
+ public PublicMessage getPublicMessage() {
+ return publicMessage;
+ }
+
+ /**
+ * Sets the public message.
+ *
+ * @param publicMessage the new public message
+ */
+ public void setPublicMessage(PublicMessage publicMessage) {
+ this.publicMessage = publicMessage;
+ }
+
+ /**
+ * Get the message body.
+ *
+ * @return the body
+ */
+ public String getBody() {
+ return body;
+ }
+
+ /**
+ * Set the message body.
+ *
+ * @param body the new body
+ */
+ public void setBody(String body) {
+ this.body = body;
+ }
+
+ /**
+ * Get the message header.
+ *
+ * @return the header
+ */
+ public String getHeader() {
+ return header;
+ }
+
+ /**
+ * Set the message header.
+ *
+ * @param header the new header
+ */
+ public void setHeader(String header) {
+ this.header = header;
+ }
+
+ /**
+ * Gets the msg black flag.
+ *
+ * @return the msg black flag
+ */
+ public int getMsgBlackFlag() {
+ return msgBlackFlag;
+ }
+
+ /**
+ * Sets the msg black flag.
+ *
+ * @param msgBlackFlag the new msg black flag
+ */
+ public void setMsgBlackFlag(int msgBlackFlag) {
+ this.msgBlackFlag = msgBlackFlag;
+ }
+
+ /**
+ * Get the continue flag.
+ *
+ * @return the continue flag
+ */
+ public int getContinueFlag() {
+ return continueFlag;
+ }
+
+ /**
+ * Set the continue flag.
+ *
+ * @param continueFlag
+ */
+ public void setContinueFlag(int continueFlag) {
+ this.continueFlag = continueFlag;
+ }
+
+ /* (non-Javadoc)
+ * @see android.os.Parcelable#describeContents()
+ */
+ @Override
+ public int describeContents() {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ /* (non-Javadoc)
+ * @see android.os.Parcelable#writeToParcel(android.os.Parcel, int)
+ */
+ @Override
+ public void writeToParcel(Parcel dest, int flags) {
+ // TODO Auto-generated method stub
+ dest.writeInt( id );
+ dest.writeString( contact );
+ dest.writeString( messageId );
+ dest.writeString( data );
+ dest.writeLong( time );
+ dest.writeString( filename );
+ dest.writeLong( filesize );
+ dest.writeString( mimeType );
+ dest.writeInt( msgType );
+ dest.writeInt( sendReceive );
+ dest.writeInt( isRead );
+ dest.writeInt( msgState );
+ dest.writeInt( chatType );
+ dest.writeLong( threadId );
+ dest.writeString( conversationId );
+ dest.writeString( contributionId );
+ dest.writeString( fileSelector );
+
+ dest.writeString( fileTransferExt );
+ dest.writeString( fileTransferId );
+ dest.writeString( fileIcon );
+ dest.writeInt( msgBurnAfterReadFlag );
+ dest.writeInt( barCycle );
+ dest.writeString( header );
+ dest.writeString( body );
+ dest.writeValue( publicMessage );
+ dest.writeInt( msgBlackFlag );
+ dest.writeInt( continueFlag );
+
+ }
+
+ /**
+ * Read from parcel.
+ *
+ * @param source the source
+ */
+ public void readFromParcel( Parcel source )
+ {
+ id = source.readInt();
+ contact = source.readString();
+ messageId = source.readString();
+ data = source.readString();
+ time = source.readLong();
+ filename = source.readString();
+ filesize = source.readLong();
+ mimeType = source.readString();
+ msgType = source.readInt();
+ sendReceive = source.readInt();
+ isRead = source.readInt();
+ msgState = source.readInt();
+ chatType = source.readInt();
+ threadId = source.readLong();
+
+ conversationId = source.readString();
+ contributionId = source.readString();
+ fileSelector = source.readString();
+
+ fileTransferExt = source.readString();
+ fileTransferId = source.readString();
+ fileIcon = source.readString();
+
+ msgBurnAfterReadFlag = source.readInt();
+ barCycle = source.readInt();
+
+ header = source.readString();
+ body = source.readString();
+ publicMessage = (PublicMessage) source.readValue(PublicMessage.class.getClassLoader());
+ msgBlackFlag = source.readInt();
+ continueFlag = source.readInt();
+ }
+
+ /** The Constant CREATOR. */
+ public static final Parcelable.Creator<ChatMessage> CREATOR = new Parcelable.Creator<ChatMessage>() {
+ public ChatMessage createFromParcel(Parcel in) {
+ return new ChatMessage(in);
+ }
+
+ @Override
+ public ChatMessage[] newArray(int size) {
+ // TODO Auto-generated method stub
+ return new ChatMessage[ size ];
+ }
+
+ };
+
+ /* (non-Javadoc)
+ * @see java.lang.Object#toString()
+ */
+ @Override
+ public String toString() {
+ return "ChatMessage [id=" + id + ", contact=" + contact
+ + ", messageId=" + messageId + ", data=" + data + ", time="
+ + time + ", filename=" + filename + ", filesize=" + filesize
+ + ", mimeType=" + mimeType + ", msgType=" + msgType
+ + ", sendReceive=" + sendReceive + ", isRead=" + isRead
+ + ", msgState=" + msgState + ", chatType=" + chatType
+ + ", threadId=" + threadId + ", conversationId="
+ + conversationId + ", contributionId=" + contributionId
+ + ", fileSelector=" + fileSelector + ", fileTransferExt="
+ + fileTransferExt + ", fileTransferId=" + fileTransferId
+ + ", fileIcon=" + fileIcon + ", msgBurnAfterReadFlag="
+ + msgBurnAfterReadFlag + ", barCycle=" + barCycle
+// + ", header=" + header + ", body=" + body
+ + ", publicMessage="
+ + publicMessage + "], msgBlackFlag = " + msgBlackFlag
+ + ", continueFlag = " + continueFlag;
+ }
+
+ @Override
+ public int compareTo(ChatMessage message) {
+ // TODO Auto-generated method stub
+ if (time - message.getTime()>0) {
+ return 1;
+ }else if (time - message.getTime()==0) {
+ return 0;
+ } else {
+ return -1;
+ }
+// return (int) (time - message.getTime());
+ }
+
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/model/ChatThread.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/model/ChatThread.java
new file mode 100644
index 0000000..77a251c
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/model/ChatThread.java
@@ -0,0 +1,308 @@
+/*
+ * Copyright (c) 2014 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.api.provider.model;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+/**
+ * <p>Title: ChatThread class</p>
+ * <p>
+ * Description: The class <code>ChatThread</code> represents a chat thread information
+ * which is indicated by the field definition in this class.
+ * </p>
+ * <p>
+ * Copyright: Copyright (c) 2014
+ * </p>
+ * <p>
+ * Company: pci-suntek
+ * </p>
+ * @author YE JIE MING
+ * @version 1.0
+ *
+ */
+public class ChatThread implements Parcelable {
+
+ /**
+ * The chat thread record id.
+ */
+ private long threadId;
+
+ /**
+ * The contact.
+ */
+ private String contact;
+
+ /**
+ * The chat type.
+ */
+ private int chatType;
+
+ /**
+ * The message type.
+ */
+ private int msgType;
+
+ /**
+ * The last message.
+ */
+ private String lastMsg;
+
+ /**
+ * The last time of message.
+ */
+ private long lastTime;
+
+ /**
+ * The last message identity
+ */
+ private int lastMsgId;
+
+ /**
+ * The count of thread
+ */
+ private int count;
+
+ /**
+ * The unread count of thread
+ */
+ private int unreadCount;
+
+ /**
+ * The message conversation id
+ */
+ private String conversationId;
+
+ /**
+ * The group identity
+ */
+ private String groupId;
+
+ /**
+ * Get the thread id.
+ * @return
+ */
+ public long getThreadId() {
+ return threadId;
+ }
+ /**
+ * Set the thread id.
+ * @param threadId
+ */
+ public void setThreadId(long threadId) {
+ this.threadId = threadId;
+ }
+ /**
+ * Get the chat type.
+ * @return The possible value can be<br/>
+ */
+ public int getChatType() {
+ return chatType;
+ }
+ /**
+ * Set the chat type.
+ * @param chatType
+ */
+ public void setChatType(int chatType) {
+ this.chatType = chatType;
+ }
+ /**
+ * Get the last message content.
+ * @return the last message content
+ */
+ public String getLastMsg() {
+ return lastMsg;
+ }
+ /**
+ * Set the last message content.
+ * @param lastMsg the last message content
+ */
+ public void setLastMsg(String lastMsg) {
+ this.lastMsg = lastMsg;
+ }
+ /**
+ * Get the last time of the message.
+ * @return the last time of the message.
+ */
+ public long getLastTime() {
+ return lastTime;
+ }
+ /**
+ * Set the last time of the message.
+ * @param lastTime
+ */
+ public void setLastTime(long lastTime) {
+ this.lastTime = lastTime;
+ }
+ /**
+ * Get the message type.
+ * @return The possible value can be<br/>
+ */
+ public int getMsgType() {
+ return msgType;
+ }
+ /**
+ * Set the message type.
+ * @param msgType The possible value can be<br/>
+ */
+ public void setMsgType(int msgType) {
+ this.msgType = msgType;
+ }
+ /**
+ * Get contact
+ * @return contact
+ */
+ public String getContact() {
+ return contact;
+ }
+ /**
+ * Set contact
+ * @param contact contact
+ */
+ public void setContact(String contact) {
+ this.contact = contact;
+ }
+ /**
+ * Get last message identity
+ * @return
+ */
+ public int getLastMsgId() {
+ return lastMsgId;
+ }
+ /**
+ * Set last message identity
+ * @param lastMsgId
+ */
+ public void setLastMsgId(int lastMsgId) {
+ this.lastMsgId = lastMsgId;
+ }
+ /**
+ * Get Count of message
+ * @return
+ */
+ public int getCount() {
+ return count;
+ }
+ /**
+ * Set Count of message
+ * @param count
+ */
+ public void setCount(int count) {
+ this.count = count;
+ }
+
+ /**
+ * Get count of unread message
+ * @return
+ */
+ public int getUnreadCount() {
+ return unreadCount;
+ }
+
+ /**
+ * Set count of unread message
+ * @param unreadCount
+ */
+ public void setUnreadCount(int unreadCount) {
+ this.unreadCount = unreadCount;
+ }
+
+ /**
+ * Get group identity
+ * @return
+ */
+ public String getGroupId() {
+ return groupId;
+ }
+
+ /**
+ * Set group identity
+ * @param groupId
+ */
+ public void setGroupId(String groupId) {
+ this.groupId = groupId;
+ }
+
+ /**
+ * Get message conversation id
+ * @return
+ */
+ public String getConversationId() {
+ return conversationId;
+ }
+
+ /**
+ * Set message conversation id
+ * @param conversationId
+ */
+ public void setConversationId(String conversationId) {
+ this.conversationId = conversationId;
+ }
+
+ @Override
+ public int describeContents() {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ @Override
+ public void writeToParcel(Parcel dest, int flags) {
+ // TODO Auto-generated method stub
+ dest.writeLong(threadId);
+ dest.writeString(contact);
+ dest.writeInt(lastMsgId);
+ dest.writeLong(lastTime);
+ dest.writeString(lastMsg);
+ dest.writeInt(count);
+ dest.writeInt(unreadCount);
+ dest.writeInt(chatType);
+ dest.writeInt(msgType);
+ dest.writeString(conversationId);
+ dest.writeString(groupId);
+ }
+
+ public void readFromParcel( Parcel source ) {
+ threadId = source.readLong();
+ contact = source.readString();
+ lastMsgId = source.readInt();
+ lastTime = source.readLong();
+ lastMsg = source.readString();
+ count = source.readInt();
+ unreadCount = source.readInt();
+ chatType = source.readInt();
+ msgType = source.readInt();
+ conversationId = source.readString();
+ groupId = source.readString();
+ }
+
+ @Override
+ public String toString() {
+ return "ChatThread [threadId=" + threadId + ", contact=" + contact
+ + ", lastMsgId=" + lastMsgId + ", lastTime=" + lastTime + ", lastMsg="
+ + lastMsg + ", count=" + count + ", unreadCount=" + unreadCount
+ + ", chatType=" + chatType + ", msgType=" + msgType
+ + ", conversationId=" + conversationId + ", groupId=" + groupId;
+ }
+
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/model/FavoriteMessage.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/model/FavoriteMessage.aidl
new file mode 100644
index 0000000..d46dc0e
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/model/FavoriteMessage.aidl
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2014 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.api.provider.model;
+
+parcelable FavoriteMessage;
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/model/FavoriteMessage.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/model/FavoriteMessage.java
new file mode 100644
index 0000000..c2419f9
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/model/FavoriteMessage.java
@@ -0,0 +1,305 @@
+/*
+ * Copyright (c) 2014 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.api.provider.model;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+public class FavoriteMessage implements Parcelable {
+
+ private int id;
+
+ private String contact;
+
+ private String messageId;
+
+ private String data;
+
+ private long time;
+
+ private String fileName;
+
+ private long fileSize;
+
+ private String mimeType;
+
+ private int msgType;
+
+ private int sendReceive;
+
+ private int chatType;
+
+ private String fileIcon;
+
+ private long favoriteTime;
+
+ private String mmsSub;
+
+ private String type;
+
+ private String mmsBody;
+
+ private String smsPerson;
+
+ private String smsProtocol;
+
+ private String smsServiceCenter;
+
+ public int getId() {
+ return id;
+ }
+
+ public void setId(int id) {
+ this.id = id;
+ }
+
+ public String getContact() {
+ return contact;
+ }
+
+ public void setContact(String contact) {
+ this.contact = contact;
+ }
+
+ public String getMessageId() {
+ return messageId;
+ }
+
+ public void setMessageId(String messageId) {
+ this.messageId = messageId;
+ }
+
+ public String getData() {
+ return data;
+ }
+
+ public void setData(String data) {
+ this.data = data;
+ }
+
+ public long getTime() {
+ return time;
+ }
+
+ public void setTime(long time) {
+ this.time = time;
+ }
+
+ public String getFileName() {
+ return fileName;
+ }
+
+ public void setFileName(String fileName) {
+ this.fileName = fileName;
+ }
+
+ public long getFileSize() {
+ return fileSize;
+ }
+
+ public void setFileSize(long fileSize) {
+ this.fileSize = fileSize;
+ }
+
+ public String getMimeType() {
+ return mimeType;
+ }
+
+ public void setMimeType(String mimeType) {
+ this.mimeType = mimeType;
+ }
+
+ public int getMsgType() {
+ return msgType;
+ }
+
+ public void setMsgType(int msgType) {
+ this.msgType = msgType;
+ }
+
+ public int getSendReceive() {
+ return sendReceive;
+ }
+
+ public void setSendReceive(int sendReceive) {
+ this.sendReceive = sendReceive;
+ }
+
+ public int getChatType() {
+ return chatType;
+ }
+
+ public void setChatType(int chatType) {
+ this.chatType = chatType;
+ }
+
+ public String getFileIcon() {
+ return fileIcon;
+ }
+
+ public void setFileIcon(String fileIcon) {
+ this.fileIcon = fileIcon;
+ }
+
+ public long getFavoriteTime() {
+ return favoriteTime;
+ }
+
+ public void setFavoriteTime(long favoriteTime) {
+ this.favoriteTime = favoriteTime;
+ }
+
+ public String getMmsSub() {
+ return mmsSub;
+ }
+
+ public void setMmsSub(String mmsSub) {
+ this.mmsSub = mmsSub;
+ }
+
+ public String getType() {
+ return type;
+ }
+
+ public void setType(String type) {
+ this.type = type;
+ }
+
+ public String getMmsBody() {
+ return mmsBody;
+ }
+
+ public void setMmsBody(String mmsBody) {
+ this.mmsBody = mmsBody;
+ }
+
+ public String getSmsPerson() {
+ return smsPerson;
+ }
+
+ public void setSmsPerson(String smsPerson) {
+ this.smsPerson = smsPerson;
+ }
+
+ public String getSmsProtocol() {
+ return smsProtocol;
+ }
+
+ public void setSmsProtocol(String smsProtocol) {
+ this.smsProtocol = smsProtocol;
+ }
+
+ public String getSmsServiceCenter() {
+ return smsServiceCenter;
+ }
+
+ public void setSmsServiceCenter(String smsServiceCenter) {
+ this.smsServiceCenter = smsServiceCenter;
+ }
+
+ public FavoriteMessage() {
+ }
+
+ public FavoriteMessage(Parcel source) {
+ readFromParcel(source);
+ }
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ @Override
+ public void writeToParcel(Parcel dest, int flags) {
+ dest.writeInt(id);
+ dest.writeString(contact);
+ dest.writeString(messageId);
+ dest.writeString(data);
+ dest.writeLong(time);
+ dest.writeString(fileName);
+ dest.writeLong(fileSize);
+ dest.writeString(mimeType);
+ dest.writeInt(msgType);
+ dest.writeInt(sendReceive);
+ dest.writeInt(chatType);
+ dest.writeString(fileIcon);
+ dest.writeLong(favoriteTime);
+ dest.writeString(mmsSub);
+ dest.writeString(type);
+ dest.writeString(mmsBody);
+ dest.writeString(smsPerson);
+ dest.writeString(smsProtocol);
+ dest.writeString(smsServiceCenter);
+ }
+
+ public void readFromParcel(Parcel source) {
+ id = source.readInt();
+ contact = source.readString();
+ messageId = source.readString();
+ data = source.readString();
+ time = source.readLong();
+ fileName = source.readString();
+ fileSize = source.readLong();
+ mimeType = source.readString();
+ msgType = source.readInt();
+ sendReceive = source.readInt();
+ chatType = source.readInt();
+ fileIcon = source.readString();
+ favoriteTime = source.readLong();
+ mmsSub = source.readString();
+ type = source.readString();
+ mmsBody = source.readString();
+ smsPerson = source.readString();
+ smsProtocol = source.readString();
+ smsServiceCenter = source.readString();
+ }
+
+ /** The Constant CREATOR. */
+ public static final Parcelable.Creator<FavoriteMessage> CREATOR = new Parcelable.Creator<FavoriteMessage>() {
+ public FavoriteMessage createFromParcel(Parcel in) {
+ return new FavoriteMessage(in);
+ }
+
+ @Override
+ public FavoriteMessage[] newArray(int size) {
+ // TODO Auto-generated method stub
+ return new FavoriteMessage[size];
+ }
+
+ };
+
+ @Override
+ public String toString() {
+ return "FavoriteMessage [id=" + id + ", contact=" + contact
+ + ", messageId=" + messageId + ", data=" + data + ", time="
+ + time + ", fileName=" + fileName + ", fileSize=" + fileSize
+ + ", mimeType=" + mimeType + ", msgType=" + msgType
+ + ", sendReceive=" + sendReceive + ", chatType=" + chatType
+ + ", fileIcon=" + fileIcon + ", favoriteTime=" + favoriteTime
+ + ", mmsSub=" + mmsSub + ", type=" + type + ", mmsBody="
+ + mmsBody + ", smsPerson=" + smsPerson + ", smsProtocol="
+ + smsProtocol + ", smsServiceCenter=" + smsServiceCenter + "]";
+ }
+
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/model/GroupChatModel.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/model/GroupChatModel.aidl
new file mode 100644
index 0000000..343ab30
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/model/GroupChatModel.aidl
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2014 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.api.provider.model;
+
+parcelable GroupChatModel;
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/model/GroupChatModel.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/model/GroupChatModel.java
new file mode 100644
index 0000000..da040b1
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/model/GroupChatModel.java
@@ -0,0 +1,510 @@
+/*
+ * Copyright (c) 2014 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.api.provider.model;
+
+import java.util.ArrayList;
+import java.util.LinkedList;
+import java.util.List;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+import android.text.TextUtils;
+
+/**
+ * <p>Title: ChatGroupModel class</p>
+ * <p>
+ * Description: The class <code>ChatGroupModel</code> represents a chat group information
+ * which is indicated by the field definition in this class.
+ * </p>
+ * <p>
+ * Copyright: Copyright (c) 2014
+ * </p>
+ * <p>
+ * Company: pci-suntek
+ * </p>
+ * @author YE JIE MING
+ * @version 1.0
+ *
+ */
+public class GroupChatModel implements Parcelable {
+
+ /**
+ * waiting others to join the group
+ */
+ public static final int GROUP_STATUS_AWAIT = 0;
+
+ /**
+ * group has created
+ */
+ public static final int GROUP_STATUS_COMPETE = 1;
+
+ /**
+ * group has deleted
+ */
+ public static final int GROUP_STATUS_DELETED = -1;
+
+ /**
+ * Receive message and reminding
+ */
+ public static final int POLICY_RCV_REMIND = 0;
+
+ /**
+ * Receive message but don't remind
+ */
+ public static final int POLICY_RCV = 1;
+
+ /**
+ * Don't Receive message
+ */
+ public static final int POLICY_NOT_RCV = 2;
+
+ /**
+ * The chat group record id.
+ */
+ private int id = -1;
+
+ /**
+ * The group chat uri.
+ */
+ private String chatUri;
+
+ /**
+ * The group chat subject.
+ */
+ private String subject;
+
+ /**
+ * Time of creating chat group
+ */
+ private long time;
+
+ /**
+ * The group status
+ */
+ private int status;
+
+ /**
+ * The group chat thread id.
+ */
+ private long threadId;
+
+ /**
+ * The group chat data members which are semicolon-separated.
+ */
+ private String dataMembers;
+
+ /**
+ * The group chat contribution id.
+ */
+ private String contributionId;
+
+ /**
+ * The group chat contact group id.
+ */
+ private String contactGroupId;
+
+ /**
+ * The list of chat group user represented by class {@link com.suntek.mway.rcs.client.api.provider.model.ChatGroupUser}
+ */
+ private List<GroupChatUser> userList = new ArrayList<GroupChatUser>();
+
+ /**
+ * The max count of members
+ */
+ private int maxCount;
+
+ /**
+ * The conversationId
+ */
+ private String conversationId;
+
+ /**
+ * The remark of group
+ */
+ private String remark;
+
+ /**
+ * The message reminding policy of group
+ */
+ private int remindPolicy;
+
+ public GroupChatModel(){
+ }
+
+ public GroupChatModel(Parcel in) {
+ readFromParcel(in);
+ }
+ /**
+ * Get the record id.
+ * @return the record id
+ */
+ public int getId() {
+ return id;
+ }
+ /**
+ * set the record id.
+ * @param id the record id
+ */
+ public void setId(int id) {
+ this.id = id;
+ }
+
+ /**
+ * Get the chat group uri.
+ * @return the chat group uri
+ */
+ public String getChatUri() {
+ return chatUri;
+ }
+ /**
+ * Set the chat group uri
+ * @param chatUri the chat group uri
+ */
+ public void setChatUri(String chatUri) {
+ this.chatUri = chatUri;
+ }
+ /**
+ * Get the chat group name for display. Return 'subject' if the 'remark' is empry.
+ */
+ public String getDisplayName() {
+ if (!TextUtils.isEmpty(remark)) {
+ return remark;
+ } else {
+ return subject;
+ }
+ }
+ /**
+ * Get the chat group subject.
+ * @return the chat group subject
+ */
+ public String getSubject() {
+ return subject;
+ }
+ /**
+ * Set the chat group subject.
+ * @param subject the chat group subject
+ */
+ public void setSubject(String subject) {
+ this.subject = subject;
+ }
+ /**
+ * Get the chat group thread id.
+ * @return the chat group thread id
+ */
+ public long getThreadId() {
+ return threadId;
+ }
+ /**
+ * Set the chat group thread id.
+ * @param threadId the chat group thread id
+ */
+ public void setThreadId(long threadId) {
+ this.threadId = threadId;
+ }
+ /**
+ * Get the chat group contribution id.
+ * @return the chat group contribution id
+ */
+ public String getContributionId() {
+ return contributionId;
+ }
+ /**
+ * Set the chat group contribution id.
+ * @param contributionId the chat group contribution id
+ */
+ public void setContributionId(String contributionId) {
+ this.contributionId = contributionId;
+ }
+ /**
+ * Get the contact group id.
+ * @return If the group chat is created by contact group, the id here is the contact group id.
+ */
+ public String getContactGroupId() {
+ return contactGroupId;
+ }
+ /**
+ * Set the contact group id.
+ * @param contactGroupId the contact group id.
+ */
+ public void setContactGroupId(String contactGroupId) {
+ this.contactGroupId = contactGroupId;
+ }
+ /**
+ * Get a formatted string of Group chat contacts which are semicolon-separated.
+ * The every separated part is separated by commas, and each part separated by commas is
+ * phone number, display name, status and role of contact. The four parts is represented by class
+ * {@link com.suntek.mway.rcs.client.api.provider.model.ChatGroupUser}
+ * @return a formatted string of Group chat contacts which are semicolon-separated.
+ */
+ public String getDataMembers() {
+ return dataMembers;
+ }
+ /**
+ * Set a formatted string of Group chat contacts which are semicolon-separated.
+ * @param dataMembers a formatted string of Group chat contacts which are semicolon-separated.
+ * The every separated part is separated by commas, and each part separated by commas is
+ * phone number, display name, status and role of contact. The four parts is represented by class
+ * {@link com.suntek.mway.rcs.client.api.provider.model.ChatGroupUser}
+ */
+ public void setDataMembers(String dataMembers) {
+ this.dataMembers = dataMembers;
+ userList.clear();
+ if(this.dataMembers != null) {
+ String[] dataList = dataMembers.split(";");
+ for(int i = 0; i < dataList.length; i++) {
+ GroupChatUser groupUser = GroupChatUser.fromFormatString(dataMembers);
+ if(groupUser != null) {
+ userList.add(groupUser);
+ }
+ }
+ }
+ }
+ /**
+ * Set phone numbers of chat group contacts.
+ * @param members phone numbers
+ */
+ public void setDataMemberList(List<String> members) {
+ List<GroupChatUser> users = new ArrayList<GroupChatUser>();
+ for(int i = 0; i < members.size(); i++) {
+ GroupChatUser user = new GroupChatUser();
+ user.setNumber(members.get(i));
+ users.add(user);
+ }
+ String str = formatToSaveNumberData(users);
+ setDataMembers(str);
+ }
+
+ /**
+ * Format a list chat group contact phone number to a string which are semicolon-separated.
+ * @param users
+ * @return
+ */
+ private String formatToSaveNumberData(List<GroupChatUser> users) {
+ StringBuffer sb = new StringBuffer();
+ for(int i = 0; i < users.size(); i++) {
+ GroupChatUser user = users.get(i);
+ sb.append(user.toFormatString());
+ if(i != users.size() - 1) {
+ sb.append(";");
+ }
+ }
+ return sb.toString();
+ }
+
+ /**
+ * Get a list of chat group user.
+ * @return
+ */
+ public List<GroupChatUser> getUserList() {
+ return userList;
+ }
+
+ /**
+ * Get time of creating group
+ * @return
+ */
+ public long getTime() {
+ return time;
+ }
+
+ /**
+ * Set time of creating group
+ * @param time
+ */
+ public void setTime(long time) {
+ this.time = time;
+ }
+
+ /**
+ * Set group member
+ * @param userList
+ */
+ public void setUserList(List<GroupChatUser> userList) {
+ this.userList = userList;
+ }
+
+ /**
+ * Get group status
+ * @return
+ */
+ public int getStatus() {
+ return status;
+ }
+
+ /**
+ * Set group status
+ * @param status
+ */
+ public void setStatus(int status) {
+ this.status = status;
+ }
+
+ /**
+ * Get max count of members
+ * @return
+ */
+ public int getMaxCount() {
+ return maxCount;
+ }
+
+ /**
+ * Set max count of members
+ * @param maxCount
+ */
+ public void setMaxCount(int maxCount) {
+ this.maxCount = maxCount;
+ }
+
+ /**
+ * Get conversationId
+ * @return
+ */
+ public String getConversationId() {
+ return conversationId;
+ }
+
+ /**
+ * Set conversationId
+ * @param conversationId
+ */
+ public void setConversationId(String conversationId) {
+ this.conversationId = conversationId;
+ }
+
+ /**
+ * Get remark
+ * @return remark
+ */
+ public String getRemark() {
+ return remark;
+ }
+
+ /**
+ * Set remark
+ * @param remark the remark of group
+ */
+ public void setRemark(String remark) {
+ this.remark = remark;
+ }
+
+ /**
+ * Get message reminding policy
+ * @return remindPolicy
+ */
+ public int getRemindPolicy() {
+ return remindPolicy;
+ }
+
+ /**
+ * Set message reminding policy
+ * @param remindPolicy
+ */
+ public void setRemindPolicy(int remindPolicy) {
+ this.remindPolicy = remindPolicy;
+ }
+
+ /**
+ * Find GroupChatUser from this group. May return null if not found.
+ */
+ public GroupChatUser getUserByNumber(String number) {
+ if (TextUtils.isEmpty(number)) {
+ return null;
+ }
+
+ for (GroupChatUser user : userList) {
+ if (number.equals(user.getNumber())) {
+ return user;
+ }
+ }
+
+ return null;
+ }
+
+ @Override
+ public int describeContents() {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ @Override
+ public void writeToParcel(Parcel arg0, int arg1) {
+ arg0.writeInt(id);
+ arg0.writeString(chatUri);
+ arg0.writeString(subject);
+ arg0.writeLong(time);
+ arg0.writeInt(status);
+ arg0.writeLong(threadId);
+ arg0.writeString(dataMembers);
+ arg0.writeString(contributionId);
+ arg0.writeString(contactGroupId);
+ arg0.writeList(userList);
+ arg0.writeInt(maxCount);
+ arg0.writeString(conversationId);
+ arg0.writeString(remark);
+ arg0.writeInt(remindPolicy);
+ }
+
+ @Override
+ public String toString() {
+ return "GroupChatModel [id=" + id + ", chatUri=" + chatUri
+ + ", subject=" + subject + ", time=" + time + ", status="
+ + status + ", threadId=" + threadId + ", dataMembers="
+ + dataMembers + ", contributionId=" + contributionId
+ + ", contactGroupId=" + contactGroupId + ", userList="
+ + userList + ", maxCount=" + maxCount + ", conversationId="
+ + conversationId + ", remark=" + remark + ", remindPolicy="
+ + remindPolicy + "]";
+ }
+
+ public void readFromParcel(Parcel source) {
+ id = source.readInt();
+ chatUri = source.readString();
+ subject = source.readString();
+ time = source.readLong();
+ status = source.readInt();
+ threadId = source.readLong();
+ dataMembers = source.readString();
+ contributionId = source.readString();
+ contactGroupId = source.readString();
+ userList = new LinkedList<GroupChatUser>();
+ source.readList(userList, this.getClass().getClassLoader());
+ maxCount = source.readInt();
+ conversationId = source.readString();
+ remark = source.readString();
+ remindPolicy = source.readInt();
+ }
+
+ public static final Parcelable.Creator<GroupChatModel> CREATOR = new Parcelable.Creator<GroupChatModel>() {
+ public GroupChatModel createFromParcel(Parcel in) {
+ return new GroupChatModel(in);
+ }
+
+ @Override
+ public GroupChatModel[] newArray(int arg0) {
+ return new GroupChatModel[arg0];
+ }
+
+ };
+
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/model/GroupChatUser.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/model/GroupChatUser.aidl
new file mode 100644
index 0000000..61d03ea
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/model/GroupChatUser.aidl
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2014 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.api.provider.model;
+
+parcelable GroupChatUser;
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/model/GroupChatUser.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/model/GroupChatUser.java
new file mode 100644
index 0000000..15e2bdb
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/model/GroupChatUser.java
@@ -0,0 +1,520 @@
+/*
+ * Copyright (c) 2014 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.api.provider.model;
+
+import android.content.Context;
+import android.database.Cursor;
+import android.os.Parcel;
+import android.os.Parcelable;
+import android.provider.ContactsContract.CommonDataKinds.Phone;
+import android.text.TextUtils;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * <p>Title: ChatGroupUser class</p>
+ * <p>
+ * Description: The class <code>ChatGroupUser</code> represents a chat group user information
+ * which is indicated by the field definition in this class.
+ * </p>
+ * <p>
+ * Copyright: Copyright (c) 2014
+ * </p>
+ * <p>
+ * Company: pci-suntek
+ * </p>
+ * @author YE JIE MING
+ * @version 1.0
+ *
+ */
+public class GroupChatUser implements Parcelable {
+
+ public static final int AWAIT_TO_JOIN = 0;
+ public static final int AGREE_TO_JOIN = 1;
+ public static final int REFUSE_TO_JOIN = 2;
+
+ /**
+ * User identity of group
+ */
+ private String id;
+
+ private String uri;
+
+ /**
+ * Group identity
+ */
+ private String groupId;
+
+ /**
+ * Display name of user
+ */
+ private String displayName = "";
+
+ /**
+ * Phone number
+ */
+ private String number = "";
+
+ /**
+ * Disconnection method
+ */
+ private String disconnectionMethod = "";
+
+ /**
+ * Role of user
+ */
+ private String role = "";
+
+ /**
+ * State of user
+ */
+ private String state = "";
+
+ /**
+ * Etype of user
+ */
+ private String etype = "unknow";
+
+ /**
+ * The alias of member in group
+ */
+ private String alias;
+
+ /**
+ * Status of user
+ */
+ private String status;
+
+ /**
+ * Time of join the group
+ */
+ private long time;
+
+ /**
+ * Agree to jion a group chat
+ */
+ private int agreeToJoin;
+
+ /**
+ * invite user's number
+ */
+ private String inviteNumber;
+
+ /**
+ * The administrator of group
+ */
+ public static final String ROLE_ADMIN = "chairman";
+
+ /**
+ * Member of group
+ */
+ public static final String ROLE_MEMBER = "participant";
+
+ /**
+ * Etype of user
+ */
+ public static final String ETYPE_CAN_ASSIGN_AS_CHAIRMAN = "cmcccb";
+
+ public GroupChatUser(){
+ }
+
+ public GroupChatUser(Parcel in) {
+ readFromParcel(in);
+ }
+
+ /**
+ * Get user uri
+ * @return
+ */
+ public String getUri() {
+ return uri;
+ }
+
+ /**
+ * Set user uri
+ * @param uri
+ */
+ public void setUri(String uri) {
+ this.uri = uri;
+ }
+
+ /**
+ * Get the display name
+ * @return the display name
+ */
+ public String getDisplayName() {
+ return displayName;
+ }
+ /**
+ * Get the display name
+ * @return the display name
+ */
+ public String getDisplayName(Context context) {
+ // alias>contact>phone number
+ if (!TextUtils.isEmpty(alias)) {
+ return alias;
+ }
+
+ if (!TextUtils.isEmpty(number)) {
+ String displayName = getDisplayNameOnContactsProviderByNumber(context, number); // TODO Add country code support.
+ if (!TextUtils.isEmpty(displayName)) {
+ return displayName;
+ }
+
+ return number;
+ }
+
+ return "";
+ }
+
+ private static String getDisplayNameOnContactsProviderByNumber(Context context, String number) {
+ Cursor cursor = context.getContentResolver().query(Phone.CONTENT_URI, new String[] {
+ Phone.DISPLAY_NAME
+ }, Phone.NUMBER + "=?", new String[] {
+ number
+ }, null);
+
+ if (cursor != null) {
+ try {
+ if (cursor.moveToFirst()) {
+ String displayName = cursor.getString(0);
+ if (!TextUtils.isEmpty(displayName)) {
+ return displayName;
+ }
+ }
+ } finally {
+ cursor.close();
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Set the display name
+ * @param displayName the display name
+ */
+ public void setDisplayName(String displayName) {
+ this.displayName = displayName;
+ }
+ /**
+ * Get the phone number
+ * @return the phone number
+ */
+ public String getNumber() {
+ return number;
+ }
+ /**
+ * Set the phone number
+ * @param number the phone number
+ */
+ public void setNumber(String number) {
+ this.number = number;
+ }
+ /**
+ * Get role(ordinary member or administrator)
+ * @return
+ */
+ public String getRole() {
+ return role;
+ }
+
+ /**
+ * Whether user is group administrator
+ * @return if true then user is group administrator
+ */
+ public boolean isAdminRole() {
+ return ROLE_ADMIN.equals(role);
+ }
+
+ /**
+ * Set role
+ * @param role role
+ */
+ public void setRole(String role) {
+ this.role = role;
+ }
+ /**
+ * Get the formatted string which format is "number, displayName, status, role"
+ * @return
+ */
+ public String toFormatString() {
+ StringBuffer sb = new StringBuffer();
+ sb.append(TextUtils.isEmpty(number)?" ":number).append(",");
+ sb.append(TextUtils.isEmpty(displayName)?" ":displayName).append(",");
+ sb.append(TextUtils.isEmpty(status)?" ":status).append(",");
+ sb.append(TextUtils.isEmpty(role)? " " : role);
+ return sb.toString();
+ }
+ /**
+ * Create an instance of the ChatGroupUser from formatted string which format is "number, displayName, status, role"
+ * @param data the formatted string which format is "number, displayName, status, role"
+ * @return an instance of the ChatGroupUser or null if the data is format error
+ */
+ public static GroupChatUser fromFormatString(String data) {
+ String[] strs = data.split(",");
+ if(strs.length == 4) {
+ GroupChatUser user = new GroupChatUser();
+ user.setNumber(strs[0].trim());
+ user.setDisplayName(strs[1].trim());
+ user.setRole(strs[3].trim());
+ return user;
+ }
+ return null;
+ }
+
+ /**
+ * Get disconnection method
+ * @return disconnection method
+ */
+ public String getDisconnectionMethod() {
+ return disconnectionMethod;
+ }
+
+ /**
+ * Set disconnection method
+ * @param disconnectionMethod disconnection method
+ */
+ public void setDisconnectionMethod(String disconnectionMethod) {
+ this.disconnectionMethod = disconnectionMethod;
+ }
+
+ /**
+ * Get state
+ * @return state
+ */
+ public String getState() {
+ return state;
+ }
+
+ /**
+ * Set state
+ * @param state state
+ */
+ public void setState(String state) {
+ this.state = state;
+ }
+
+ /**
+ * Get status
+ * @return
+ */
+ public String getStatus() {
+ return status;
+ }
+
+ /**
+ * Set status
+ * @param status
+ */
+ public void setStatus(String status) {
+ this.status = status;
+ }
+
+ /**
+ * Get time of join the group
+ * @return
+ */
+ public long getTime() {
+ return time;
+ }
+
+ /**
+ * Get user identity of group
+ * @return
+ */
+ public String getId() {
+ return id;
+ }
+
+ /**
+ * Set user identity of group
+ * @param id
+ */
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ /**
+ * Get group id
+ * @return
+ */
+ public String getGroupId() {
+ return groupId;
+ }
+
+ /**
+ * Set group id
+ * @param groupId
+ */
+ public void setGroupId(String groupId) {
+ this.groupId = groupId;
+ }
+
+ /**
+ * Set time of join the group
+ * @param time
+ */
+ public void setTime(long time) {
+ this.time = time;
+ }
+
+ /**
+ * Get agree to join
+ * @return
+ */
+ public int getAgreeToJoin() {
+ return agreeToJoin;
+ }
+
+ /**
+ * Set agree to join
+ * @param agreeToJoin
+ */
+ public void setAgreeToJoin(int agreeToJoin) {
+ this.agreeToJoin = agreeToJoin;
+ }
+
+ /**
+ * Get invite number
+ * @return
+ */
+ public String getInviteNumber() {
+ return inviteNumber;
+ }
+
+ /**
+ * Set invite number
+ * @param inviteNumber
+ */
+ public void setInviteNumber(String inviteNumber) {
+ this.inviteNumber = inviteNumber;
+ }
+
+ /**
+ * Set etype
+ * @return
+ */
+ public String getEtype() {
+ return etype;
+ }
+
+ /**
+ * Get etype
+ * @param etype
+ */
+ public void setEtype(String etype) {
+ this.etype = etype;
+ }
+
+ /**
+ * Get alias
+ * @return
+ */
+ public String getAlias() {
+ return alias;
+ }
+
+ /**
+ * Set alias
+ * @param alias
+ */
+ public void setAlias(String alias) {
+ this.alias = alias;
+ }
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ @Override
+ public void writeToParcel(Parcel arg0, int arg1) {
+ arg0.writeString(id);
+ arg0.writeString(uri);
+ arg0.writeString(groupId);
+ arg0.writeString(displayName);
+ arg0.writeString(number);
+ arg0.writeString(disconnectionMethod);
+ arg0.writeString(role);
+ arg0.writeString(state);
+ arg0.writeString(etype);
+ arg0.writeString(alias);
+ arg0.writeString(status);
+ arg0.writeLong(time);
+ arg0.writeInt(agreeToJoin);
+ arg0.writeString(inviteNumber);
+ }
+
+ public void readFromParcel(Parcel source) {
+ id = source.readString();
+ uri = source.readString();
+ groupId = source.readString();
+ displayName = source.readString();
+ number = source.readString();
+ disconnectionMethod = source.readString();
+ role = source.readString();
+ state = source.readString();
+ etype = source.readString();
+ alias = source.readString();
+ status = source.readString();
+ time = source.readLong();
+ agreeToJoin = source.readInt();
+ inviteNumber = source.readString();
+ }
+
+
+ @Override
+ public String toString() {
+ List<String> list = new ArrayList<String>();
+ list.add("id=" + id);
+ list.add("uri=" + uri);
+ list.add("groupId=" + groupId);
+ list.add("displayName=" + displayName);
+ list.add("number=" + number);
+ list.add("disconnectionMethod=" + disconnectionMethod);
+ list.add("role=" + role);
+ list.add("state=" + state);
+ list.add("etype=" + etype);
+ list.add("alias=" + alias);
+ list.add("status=" + status);
+ list.add("time=" + time);
+ list.add("agreeToJoin=" + agreeToJoin);
+ list.add("inviteNumber=" + inviteNumber);
+ return list.toString();
+ }
+
+
+ public static final Parcelable.Creator<GroupChatUser> CREATOR = new Parcelable.Creator<GroupChatUser>() {
+ public GroupChatUser createFromParcel(Parcel in) {
+ return new GroupChatUser(in);
+ }
+
+ @Override
+ public GroupChatUser[] newArray(int arg0) {
+ return new GroupChatUser[arg0];
+ }
+
+ };
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/model/GroupNotificationConst.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/model/GroupNotificationConst.java
new file mode 100644
index 0000000..27d4b5f
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/model/GroupNotificationConst.java
@@ -0,0 +1,51 @@
+/*
+ * Copyright (c) 2014 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.api.provider.model;
+
+public class GroupNotificationConst {
+
+ public static final String CREATE = "create";
+
+ public static final String CREATE_NOT_ACTIVE = "create_not_active";
+
+ public static final String MEMBER_JOIN = "join";
+
+ public static final String MODIFY_SUBJECT = "subject";
+
+ public static final String MODIFY_REMARK = "remark";
+
+ public static final String MODIFY_ALIAS = "alias";
+
+ public static final String MODIFY_CHAIRMAN = "chairman";
+
+ public static final String MODIFY_POLICY = "policy";
+
+ public static final String MEMBER_TICK_OUT = "tick";
+
+ public static final String MEMBER_QUIT = "quit";
+
+ public static final String DISBAND = "disband";
+
+
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/model/ImdnNotification.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/model/ImdnNotification.java
new file mode 100644
index 0000000..e4fbaa3
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/model/ImdnNotification.java
@@ -0,0 +1,92 @@
+/*
+ * Copyright (c) 2014 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.api.provider.model;
+
+public class ImdnNotification {
+
+ private String messageId;
+ private String datetime;
+ private String recipientUri;
+ private String originalRecipientUri;
+ private String displayNotificationStatus;
+ private String deliveryNotificationStatus;
+ private int status;
+
+ public String getMessageId() {
+ return messageId;
+ }
+
+ public void setMessageId(String messageId) {
+ this.messageId = messageId;
+ }
+
+ public String getDatetime() {
+ return datetime;
+ }
+
+ public void setDatetime(String datetime) {
+ this.datetime = datetime;
+ }
+
+ public String getRecipientUri() {
+ return recipientUri;
+ }
+
+ public void setRecipientUri(String recipientUri) {
+ this.recipientUri = recipientUri;
+ }
+
+ public String getOriginalRecipientUri() {
+ return originalRecipientUri;
+ }
+
+ public void setOriginalRecipientUri(String originalRecipientUri) {
+ this.originalRecipientUri = originalRecipientUri;
+ }
+
+ public int getStatus() {
+ return status;
+ }
+
+ public void setStatus(int status) {
+ this.status = status;
+ }
+
+ public String getDisplayNotificationStatus() {
+ return displayNotificationStatus;
+ }
+
+ public void setDisplayNotificationStatus(String displayNotificationStatus) {
+ this.displayNotificationStatus = displayNotificationStatus;
+ }
+
+ public String getDeliveryNotificationStatus() {
+ return deliveryNotificationStatus;
+ }
+
+ public void setDeliveryNotificationStatus(String deliveryNotificationStatus) {
+ this.deliveryNotificationStatus = deliveryNotificationStatus;
+ }
+
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/model/MMSMessage.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/model/MMSMessage.aidl
new file mode 100644
index 0000000..86bf9ce
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/model/MMSMessage.aidl
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2014 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.api.provider.model;
+
+parcelable MMSMessage;
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/model/MMSMessage.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/model/MMSMessage.java
new file mode 100644
index 0000000..d752bb0
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/model/MMSMessage.java
@@ -0,0 +1,61 @@
+/*
+ * Copyright (c) 2014 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.api.provider.model;
+
+import android.os.Parcel;
+
+public class MMSMessage extends ChatMessage {
+ private String subject;
+
+ @Override
+ public int describeContents() {
+ return super.describeContents();
+ }
+
+ @Override
+ public void writeToParcel(Parcel dest, int flags) {
+ super.writeToParcel(dest, flags);
+ dest.writeString(this.subject);
+ }
+
+ @Override
+ public void readFromParcel(Parcel source) {
+ super.readFromParcel(source);
+ this.subject = source.readString();
+ }
+
+ @Override
+ public String toString() {
+ return super.toString();
+ }
+
+ public String getSubject() {
+ return subject;
+ }
+
+ public void setSubject(String subject) {
+ this.subject = subject;
+ }
+
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/model/MessageSessionModel.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/model/MessageSessionModel.aidl
new file mode 100644
index 0000000..f13c901
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/model/MessageSessionModel.aidl
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2014 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.api.provider.model;
+
+parcelable MessageSessionModel;
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/model/MessageSessionModel.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/model/MessageSessionModel.java
new file mode 100644
index 0000000..7b55335
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/model/MessageSessionModel.java
@@ -0,0 +1,310 @@
+/*
+ * Copyright (c) 2014 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.api.provider.model;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+import com.suntek.mway.rcs.client.api.plugin.entity.pubacct.PublicAccounts;
+import com.suntek.mway.rcs.client.api.provider.SuntekMessageData;
+
+/**
+ * <p>
+ * Title:Message session object.
+ * </p>
+ * <p>
+ * Description: the message session
+ * </p>
+ * <p>
+ * Copyright:Copyright (c) 2014
+ * </p>
+ * <p>
+ * Company:pci-suntek
+ * </p>
+ *
+ * @author YFB
+ * @version 1.0
+ */
+public class MessageSessionModel implements Parcelable, Comparable<MessageSessionModel> {
+
+ /**
+ * chat message id
+ */
+ private int messageId;
+
+ /**
+ * message thread id
+ */
+ private long threadId;
+
+ /**
+ * The chat message contact
+ */
+ private String contact;
+
+ /**
+ * The message content
+ */
+ private String data;
+
+ /**
+ * The time that received or sent message
+ */
+ private long time;
+
+ /**
+ * Receiving or sending messages
+ * send message @see {@link SuntekMessageData#MSG_SEND} or receive message @see {@link SuntekMessageData#MSG_RECEIVE}
+ */
+ private int sendReceive;
+
+ /**
+ * The chat type
+ * @see {@link SuntekMessageData#KEY_CHAT_TYPE}
+ */
+ private int chatType;
+
+ /**
+ * Number of messages in session
+ */
+ private int messageCount;
+
+ /**
+ * Time of the last message
+ */
+ private long lastTime;
+
+ /**
+ * The receivers of one to many chat message
+ * null if chat type is not @see {@link SuntekMessageData#CHAT_TYPE_ONE2GROUP}
+ */
+ private String receiversOfOne2Many;
+
+ /**
+ * The group chat info
+ * null if chat type is not @see {@link SuntekMessageData#CHAT_TYPE_GROUP}
+ */
+ private GroupChatModel groupChatModel;
+
+ private PublicAccounts publicAccountModel;
+
+ public static final String KEY_MSG_COUNT = "_msgCount";
+
+ public static final String KEY_LAST_TIME = "_lastTime";
+
+ private static final String KEY_COLUMN_NAME_COUNT = "count(distinct " + SuntekMessageData.KEY_THREAD_ID
+ + ") AS " + KEY_MSG_COUNT;
+
+ private static final String KEY_COLUMN_NAME_LASTTIME = "max(" + SuntekMessageData.KEY_TIME + ") AS "
+ + KEY_LAST_TIME;
+
+ public static final String[] SESSION_PROJECTION = {
+ SuntekMessageData.KEY_ID, SuntekMessageData.KEY_THREAD_ID, SuntekMessageData.KEY_CONTACT,
+ SuntekMessageData.KEY_DATA, SuntekMessageData.KEY_TIME, SuntekMessageData.KEY_SEND_RECEIVE,
+ SuntekMessageData.KEY_CHAT_TYPE,
+ KEY_COLUMN_NAME_COUNT, KEY_COLUMN_NAME_LASTTIME
+ };
+
+ public MessageSessionModel(){
+ }
+
+ public MessageSessionModel(Parcel in) {
+ readFromParcel(in);
+ }
+
+ @Override
+ public String toString() {
+ StringBuffer buf = new StringBuffer();
+ buf.append("MessageSessionModel{")
+ .append("messageId:").append(messageId)
+ .append(",threadId:").append(threadId)
+ .append(",contact:").append(contact)
+ .append(",data:").append(data)
+ .append(",time:").append(time)
+ .append(",sendReceive:").append(sendReceive)
+ .append(",messageCount:").append(messageCount)
+ .append(",lastTime:").append(lastTime)
+ .append(",chatType:").append(chatType)
+ .append(",receiversOfOne2Many:").append(receiversOfOne2Many)
+ .append("}");
+ return buf.toString();
+ }
+
+ public int getMessageId() {
+ return messageId;
+ }
+
+ public void setMessageId(int messageId) {
+ this.messageId = messageId;
+ }
+
+ public long getThreadId() {
+ return threadId;
+ }
+
+ public void setThreadId(long threadId) {
+ this.threadId = threadId;
+ }
+
+ public String getContact() {
+ return contact;
+ }
+
+ public void setContact(String contact) {
+ this.contact = contact;
+ }
+
+ public String getData() {
+ return data;
+ }
+
+ public void setData(String data) {
+ this.data = data;
+ }
+
+ public long getTime() {
+ return time;
+ }
+
+ public void setTime(long time) {
+ this.time = time;
+ }
+
+ public int getSendReceive() {
+ return sendReceive;
+ }
+
+ public void setSendReceive(int sendReceive) {
+ this.sendReceive = sendReceive;
+ }
+
+ public int getMessageCount() {
+ return messageCount;
+ }
+
+ public void setMessageCount(int messageCount) {
+ this.messageCount = messageCount;
+ }
+
+ public long getLastTime() {
+ return lastTime;
+ }
+
+ public void setLastTime(long lastTime) {
+ this.lastTime = lastTime;
+ }
+
+ public int getChatType() {
+ return chatType;
+ }
+
+ public void setChatType(int chatType) {
+ this.chatType = chatType;
+ }
+
+ public String getReceiversOfOne2Many() {
+ return receiversOfOne2Many;
+ }
+
+ public void setReceiversOfOne2Many(String receiversOfOne2Many) {
+ this.receiversOfOne2Many = receiversOfOne2Many;
+ }
+
+ public GroupChatModel getGroupChatModel() {
+ return groupChatModel;
+ }
+
+ public void setGroupChatModel(GroupChatModel groupChatModel) {
+ this.groupChatModel = groupChatModel;
+ }
+
+ public PublicAccounts getPublicAccountModel() {
+ return publicAccountModel;
+ }
+
+ public void setPublicAccountModel(PublicAccounts publicAccountModel) {
+ this.publicAccountModel = publicAccountModel;
+ }
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ @Override
+ public void writeToParcel(Parcel arg0, int arg1) {
+ arg0.writeInt(messageId);
+ arg0.writeLong(threadId);
+ arg0.writeString(contact);
+ arg0.writeString(data);
+ arg0.writeLong(time);
+ arg0.writeInt(sendReceive);
+ arg0.writeInt(messageCount);
+ arg0.writeLong(lastTime);
+ arg0.writeInt(chatType);
+ arg0.writeString(receiversOfOne2Many);
+ arg0.writeValue(groupChatModel);
+ arg0.writeValue(publicAccountModel);
+ }
+
+ public void readFromParcel(Parcel source) {
+ messageId = source.readInt();
+ threadId = source.readLong();
+ contact = source.readString();
+ data = source.readString();
+ time = source.readLong();
+ sendReceive = source.readInt();
+ messageCount = source.readInt();
+ lastTime = source.readLong();
+ chatType = source.readInt();
+ receiversOfOne2Many = source.readString();
+ groupChatModel = (GroupChatModel) source.readValue(this.getClass().getClassLoader());
+ publicAccountModel = (PublicAccounts) source.readValue(this.getClass().getClassLoader());
+ }
+
+ public static final Parcelable.Creator<MessageSessionModel> CREATOR = new Parcelable.Creator<MessageSessionModel>() {
+ public MessageSessionModel createFromParcel(Parcel in) {
+ return new MessageSessionModel(in);
+ }
+
+ @Override
+ public MessageSessionModel[] newArray(int arg0) {
+ return new MessageSessionModel[arg0];
+ }
+
+ };
+
+ @Override
+ public int compareTo(MessageSessionModel msgSession) {
+ // TODO Auto-generated method stub
+// return (int) (time - msgSession.getTime());
+ if (time - msgSession.getTime()>0) {
+ return 1;
+ }else if (time - msgSession.getTime()==0) {
+ return 0;
+ } else {
+ return -1;
+ }
+ }
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/model/PublicAccount.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/model/PublicAccount.java
new file mode 100644
index 0000000..a2d109e
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/model/PublicAccount.java
@@ -0,0 +1,525 @@
+/*
+ * Copyright (c) 2014 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.api.provider.model;
+
+/**
+ * The Class PublicAccount.
+ */
+public class PublicAccount {
+
+ /** The pa uuid. */
+ private String paUuid = null;
+
+ /** The name. */
+ private String name = null;
+
+ /** The logo. */
+ private String logo = null;
+
+ /** The recommend level. */
+ private int recommendLevel = 0;
+
+ /** The sip uri. */
+ private String sipUri = null;
+
+ /** The followed. */
+ private boolean followed = false;
+
+ /** The accept. */
+ private boolean accept = true;
+
+ /** The followed time. */
+ private String followedTime;
+
+ /** The company. */
+ private String company;
+
+ /** The intro. */
+ private String intro;
+
+ /** The type. */
+ private String type;
+
+ /** The update time. */
+ private String updateTime;
+
+ /** The menu type. */
+ private int menuType;
+
+ /** The menu timestamp. */
+ private String menuTimestamp;
+
+ /** The subscribe status. */
+ private int subscribeStatus;
+
+ /** The qr code. */
+ private String qrCode;
+
+ /** The active status. */
+ private int activeStatus;
+
+ /** The tel. */
+ private String tel;
+
+ /** The email. */
+ private String email;
+
+ /** The zip. */
+ private String zip;
+
+ /** The addr. */
+ private String addr;
+
+ /** The field. */
+ private String field;
+
+ /**
+ * Gets the pa uuid.
+ *
+ * @return the pa uuid
+ */
+ public String getPaUuid() {
+ return paUuid;
+ }
+
+ /**
+ * Sets the pa uuid.
+ *
+ * @param paUuid the new pa uuid
+ */
+ public void setPaUuid(String paUuid) {
+ this.paUuid = paUuid;
+ }
+
+ /**
+ * Gets the name.
+ *
+ * @return the name
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * Sets the name.
+ *
+ * @param name the new name
+ */
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ /**
+ * Gets the logo.
+ *
+ * @return the logo
+ */
+ public String getLogo() {
+ return logo;
+ }
+
+ /**
+ * Sets the logo.
+ *
+ * @param logo the new logo
+ */
+ public void setLogo(String logo) {
+ this.logo = logo;
+ }
+
+ /**
+ * Gets the recommend level.
+ *
+ * @return the recommend level
+ */
+ public int getRecommendLevel() {
+ return recommendLevel;
+ }
+
+ /**
+ * Sets the recommend level.
+ *
+ * @param recommendLevel the new recommend level
+ */
+ public void setRecommendLevel(int recommendLevel) {
+ this.recommendLevel = recommendLevel;
+ }
+
+ /**
+ * Gets the sip uri.
+ *
+ * @return the sip uri
+ */
+ public String getSipUri() {
+ return sipUri;
+ }
+
+ /**
+ * Sets the sip uri.
+ *
+ * @param sipUri the new sip uri
+ */
+ public void setSipUri(String sipUri) {
+ this.sipUri = sipUri;
+ }
+
+ /**
+ * Checks if is followed.
+ *
+ * @return true, if is followed
+ */
+ public boolean isFollowed() {
+ return followed;
+ }
+
+ /**
+ * Sets the followed.
+ *
+ * @param followed the new followed
+ */
+ public void setFollowed(boolean followed) {
+ this.followed = followed;
+ }
+
+ /**
+ * Checks if is accept.
+ *
+ * @return true, if is accept
+ */
+ public boolean isAccept() {
+ return accept;
+ }
+
+ /**
+ * Sets the accept.
+ *
+ * @param accept the new accept
+ */
+ public void setAccept(boolean accept) {
+ this.accept = accept;
+ }
+
+ /**
+ * Gets the followed time.
+ *
+ * @return the followed time
+ */
+ public String getFollowedTime() {
+ return followedTime;
+ }
+
+ /**
+ * Sets the followed time.
+ *
+ * @param followedTime the new followed time
+ */
+ public void setFollowedTime(String followedTime) {
+ this.followedTime = followedTime;
+ }
+
+ /**
+ * Gets the company.
+ *
+ * @return the company
+ */
+ public String getCompany() {
+ return company;
+ }
+
+ /**
+ * Sets the company.
+ *
+ * @param company the new company
+ */
+ public void setCompany(String company) {
+ this.company = company;
+ }
+
+ /**
+ * Gets the intro.
+ *
+ * @return the intro
+ */
+ public String getIntro() {
+ return intro;
+ }
+
+ /**
+ * Sets the intro.
+ *
+ * @param intro the new intro
+ */
+ public void setIntro(String intro) {
+ this.intro = intro;
+ }
+
+ /**
+ * Gets the type.
+ *
+ * @return the type
+ */
+ public String getType() {
+ return type;
+ }
+
+ /**
+ * Sets the type.
+ *
+ * @param type the new type
+ */
+ public void setType(String type) {
+ this.type = type;
+ }
+
+ /**
+ * Gets the update time.
+ *
+ * @return the update time
+ */
+ public String getUpdateTime() {
+ return updateTime;
+ }
+
+ /**
+ * Sets the update time.
+ *
+ * @param updateTime the new update time
+ */
+ public void setUpdateTime(String updateTime) {
+ this.updateTime = updateTime;
+ }
+
+ /**
+ * Gets the menu type.
+ *
+ * @return the menu type
+ */
+ public int getMenuType() {
+ return menuType;
+ }
+
+ /**
+ * Sets the menu type.
+ *
+ * @param menuType the new menu type
+ */
+ public void setMenuType(int menuType) {
+ this.menuType = menuType;
+ }
+
+ /**
+ * Gets the menu timestamp.
+ *
+ * @return the menu timestamp
+ */
+ public String getMenuTimestamp() {
+ return menuTimestamp;
+ }
+
+ /**
+ * Sets the menu timestamp.
+ *
+ * @param menuTimestamp the new menu timestamp
+ */
+ public void setMenuTimestamp(String menuTimestamp) {
+ this.menuTimestamp = menuTimestamp;
+ }
+
+ /**
+ * Gets the subscribe status.
+ *
+ * @return the subscribe status
+ */
+ public int getSubscribeStatus() {
+ return subscribeStatus;
+ }
+
+ /**
+ * Sets the subscribe status.
+ *
+ * @param subscribeStatus the new subscribe status
+ */
+ public void setSubscribeStatus(int subscribeStatus) {
+ this.subscribeStatus = subscribeStatus;
+ }
+
+ /**
+ * Gets the qr code.
+ *
+ * @return the qr code
+ */
+ public String getQrCode() {
+ return qrCode;
+ }
+
+ /**
+ * Sets the qr code.
+ *
+ * @param qrCode the new qr code
+ */
+ public void setQrCode(String qrCode) {
+ this.qrCode = qrCode;
+ }
+
+ /**
+ * Gets the active status.
+ *
+ * @return the active status
+ */
+ public int getActiveStatus() {
+ return activeStatus;
+ }
+
+ /**
+ * Sets the active status.
+ *
+ * @param activeStatus the new active status
+ */
+ public void setActiveStatus(int activeStatus) {
+ this.activeStatus = activeStatus;
+ }
+
+ /**
+ * Gets the tel.
+ *
+ * @return the tel
+ */
+ public String getTel() {
+ return tel;
+ }
+
+ /**
+ * Sets the tel.
+ *
+ * @param tel the new tel
+ */
+ public void setTel(String tel) {
+ this.tel = tel;
+ }
+
+ /**
+ * Gets the email.
+ *
+ * @return the email
+ */
+ public String getEmail() {
+ return email;
+ }
+
+ /**
+ * Sets the email.
+ *
+ * @param email the new email
+ */
+ public void setEmail(String email) {
+ this.email = email;
+ }
+
+ /**
+ * Gets the zip.
+ *
+ * @return the zip
+ */
+ public String getZip() {
+ return zip;
+ }
+
+ /**
+ * Sets the zip.
+ *
+ * @param zip the new zip
+ */
+ public void setZip(String zip) {
+ this.zip = zip;
+ }
+
+ /**
+ * Gets the addr.
+ *
+ * @return the addr
+ */
+ public String getAddr() {
+ return addr;
+ }
+
+ /**
+ * Sets the addr.
+ *
+ * @param addr the new addr
+ */
+ public void setAddr(String addr) {
+ this.addr = addr;
+ }
+
+ /**
+ * Gets the field.
+ *
+ * @return the field
+ */
+ public String getField() {
+ return field;
+ }
+
+ /**
+ * Sets the field.
+ *
+ * @param field the new field
+ */
+ public void setField(String field) {
+ this.field = field;
+ }
+
+ /* (non-Javadoc)
+ * @see java.lang.Object#toString()
+ */
+ @Override
+ public String toString() {
+ StringBuffer sbuffer = new StringBuffer();
+ sbuffer.append("paUuid=").append(this.paUuid)
+ .append(",name=").append(this.name)
+ .append(",logo=").append(this.logo)
+ .append(",recommendLevel=").append(this.recommendLevel)
+ .append(",sipUri=").append(this.sipUri)
+ .append(",followed=").append(this.followed)
+ .append(",accept=").append(this.accept)
+ .append(",followedTime=").append(this.followedTime)
+ .append(",company=").append(this.company)
+ .append(",intro=").append(this.intro)
+ .append(",type=").append(this.type)
+ .append(",updateTime=").append(this.updateTime)
+ .append(",menuType=").append(this.menuType)
+ .append(",menuTimestamp=").append(this.menuTimestamp)
+ .append(",subscribeStatus=").append(this.subscribeStatus)
+ .append(",qrCode=").append(this.qrCode)
+ .append(",activeStatus=").append(this.activeStatus)
+ .append(",tel=").append(this.tel)
+ .append(",email=").append(this.email)
+ .append(",zip=").append(this.zip)
+ .append(",addr=").append(this.addr)
+ .append(",field=").append(this.field)
+ ;
+
+ return sbuffer.toString();
+ }
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/model/PublicMediaMessage.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/model/PublicMediaMessage.java
new file mode 100644
index 0000000..4ca9e13
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/model/PublicMediaMessage.java
@@ -0,0 +1,447 @@
+/*
+ * Copyright (c) 2014 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.api.provider.model;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+/**
+ * The Class PublicMediaMessage.
+ */
+public class PublicMediaMessage extends PublicMessage implements Parcelable{
+
+ /** The createtime. */
+ private String createtime;
+
+ /** The forwardable. */
+// private String forwardable;
+
+ /** The msgtype. */
+ private String msgtype;
+
+ /** The msg id. */
+// private String msgId;
+
+ /** The media. */
+ private PublicMediaContent media;
+
+ /**
+ * Instantiates a new public media message.
+ */
+ public PublicMediaMessage(){}
+
+ /**
+ * Instantiates a new public media message.
+ *
+ * @param source the source
+ */
+ public PublicMediaMessage( Parcel source )
+ {
+ readFromParcel( source );
+ }
+
+ /* (non-Javadoc)
+ * @see com.suntek.mway.rcs.client.api.provider.model.PublicMessage#describeContents()
+ */
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ /* (non-Javadoc)
+ * @see com.suntek.mway.rcs.client.api.provider.model.PublicMessage#writeToParcel(android.os.Parcel, int)
+ */
+ @Override
+ public void writeToParcel(Parcel dest, int flags) {
+ dest.writeString( createtime );
+// dest.writeString( forwardable );
+ dest.writeString( msgtype );
+// dest.writeString( msgId );
+ dest.writeValue( media );
+ }
+
+ /**
+ * Read from parcel.
+ *
+ * @param source the source
+ */
+ public void readFromParcel( Parcel source )
+ {
+ createtime = source.readString();
+// forwardable = source.readString();
+ msgtype = source.readString();
+// msgId = source.readString();
+ media = (PublicMediaContent) source.readValue(this.getClass().getClassLoader());
+ }
+
+ /** The parcel creator. */
+ public static final Parcelable.Creator<PublicMediaMessage> CREATOR = new Parcelable.Creator<PublicMediaMessage>() {
+ @Override
+ public PublicMediaMessage createFromParcel( Parcel source )
+ {
+ return new PublicMediaMessage( source );
+ }
+
+ @Override
+ public PublicMediaMessage[] newArray( int size )
+ {
+ return new PublicMediaMessage[ size ];
+ }
+ };
+
+ /**
+ * Gets the createtime.
+ *
+ * @return the createtime
+ */
+ public String getCreatetime() {
+ return createtime;
+ }
+
+ /**
+ * Sets the createtime.
+ *
+ * @param createtime the new createtime
+ */
+ public void setCreatetime(String createtime) {
+ this.createtime = createtime;
+ }
+
+ /**
+ * Gets the forwardable.
+ *
+ * @return the forwardable
+ */
+// public String getForwardable() {
+// return forwardable;
+// }
+
+ /**
+ * Sets the forwardable.
+ *
+ * @param forwardable the new forwardable
+ */
+// public void setForwardable(String forwardable) {
+// this.forwardable = forwardable;
+// }
+
+ /**
+ * Gets the msgtype.
+ *
+ * @return the msgtype
+ */
+ public String getMsgtype() {
+ return msgtype;
+ }
+
+ /**
+ * Sets the msgtype.
+ *
+ * @param msgtype the new msgtype
+ */
+ public void setMsgtype(String msgtype) {
+ this.msgtype = msgtype;
+ }
+
+ /**
+ * Gets the msg id.
+ *
+ * @return the msg id
+ */
+// public String getMsgId() {
+// return msgId;
+// }
+
+ /**
+ * Sets the msg id.
+ *
+ * @param msgId the new msg id
+ */
+// public void setMsgId(String msgId) {
+// this.msgId = msgId;
+// }
+
+ /**
+ * Gets the media.
+ *
+ * @return the media
+ */
+ public PublicMediaContent getMedia() {
+ return media;
+ }
+
+ /**
+ * Sets the media.
+ *
+ * @param media the new media
+ */
+ public void setMedia(PublicMediaContent media) {
+ this.media = media;
+ }
+
+ /**
+ * The Class PublicMediaContent.
+ */
+ public static class PublicMediaContent implements Parcelable{
+
+ /** The thumb link. */
+ private String thumbLink;
+
+ /** The original link. */
+ private String originalLink;
+
+ /** The title. */
+ private String title;
+
+ /** The file size. */
+ private String fileSize;
+
+ /** The duration. */
+ private String duration;
+
+ /** The file type. */
+ private String fileType;
+
+ /** The createtime. */
+// private String createtime;
+
+ /** The media uuid. */
+ private String mediaUuid;
+
+ /**
+ * Instantiates a new public media content.
+ */
+ public PublicMediaContent(){}
+
+ /**
+ * Instantiates a new public media content.
+ *
+ * @param source the source
+ */
+ public PublicMediaContent( Parcel source )
+ {
+ readFromParcel( source );
+ }
+
+ /* (non-Javadoc)
+ * @see android.os.Parcelable#describeContents()
+ */
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ /* (non-Javadoc)
+ * @see android.os.Parcelable#writeToParcel(android.os.Parcel, int)
+ */
+ @Override
+ public void writeToParcel(Parcel dest, int flags) {
+ dest.writeString( thumbLink );
+ dest.writeString( originalLink );
+ dest.writeString( title );
+ dest.writeString( fileSize );
+ dest.writeString( duration );
+ dest.writeString( fileType );
+// dest.writeString( createtime );
+ dest.writeString( mediaUuid );
+ }
+
+ /**
+ * Read from parcel.
+ *
+ * @param source the source
+ */
+ public void readFromParcel( Parcel source )
+ {
+ thumbLink = source.readString();
+ originalLink = source.readString();
+ title = source.readString();
+ fileSize = source.readString();
+ duration = source.readString();
+ fileType = source.readString();
+// createtime = source.readString();
+ mediaUuid = source.readString();
+ }
+
+ /** The parcel creator. */
+ public static final Parcelable.Creator<PublicMediaContent> CREATOR = new Parcelable.Creator<PublicMediaContent>() {
+ @Override
+ public PublicMediaContent createFromParcel( Parcel source )
+ {
+ return new PublicMediaContent( source );
+ }
+
+ @Override
+ public PublicMediaContent[] newArray( int size )
+ {
+ return new PublicMediaContent[ size ];
+ }
+ };
+
+ /**
+ * Gets the thumb link.
+ *
+ * @return the thumb link
+ */
+ public String getThumbLink() {
+ return thumbLink;
+ }
+
+ /**
+ * Sets the thumb link.
+ *
+ * @param thumbLink the new thumb link
+ */
+ public void setThumbLink(String thumbLink) {
+ this.thumbLink = thumbLink;
+ }
+
+ /**
+ * Gets the original link.
+ *
+ * @return the original link
+ */
+ public String getOriginalLink() {
+ return originalLink;
+ }
+
+ /**
+ * Sets the original link.
+ *
+ * @param originalLink the new original link
+ */
+ public void setOriginalLink(String originalLink) {
+ this.originalLink = originalLink;
+ }
+
+ /**
+ * Gets the title.
+ *
+ * @return the title
+ */
+ public String getTitle() {
+ return title;
+ }
+
+ /**
+ * Sets the title.
+ *
+ * @param title the new title
+ */
+ public void setTitle(String title) {
+ this.title = title;
+ }
+
+ /**
+ * Gets the file size.
+ *
+ * @return the file size
+ */
+ public String getFileSize() {
+ return fileSize;
+ }
+
+ /**
+ * Sets the file size.
+ *
+ * @param fileSize the new file size
+ */
+ public void setFileSize(String fileSize) {
+ this.fileSize = fileSize;
+ }
+
+ /**
+ * Gets the duration.
+ *
+ * @return the duration
+ */
+ public String getDuration() {
+ return duration;
+ }
+
+ /**
+ * Sets the duration.
+ *
+ * @param duration the new duration
+ */
+ public void setDuration(String duration) {
+ this.duration = duration;
+ }
+
+ /**
+ * Gets the file type.
+ *
+ * @return the file type
+ */
+ public String getFileType() {
+ return fileType;
+ }
+
+ /**
+ * Sets the file type.
+ *
+ * @param fileType the new file type
+ */
+ public void setFileType(String fileType) {
+ this.fileType = fileType;
+ }
+
+ /**
+ * Gets the createtime.
+ *
+ * @return the createtime
+ public String getCreatetime() {
+ return createtime;
+ }
+ */
+
+ /**
+ * Sets the createtime.
+ *
+ * @param createtime the new createtime
+ public void setCreatetime(String createtime) {
+ this.createtime = createtime;
+ }
+ */
+
+ /**
+ * Gets the media uuid.
+ *
+ * @return the media uuid
+ */
+ public String getMediaUuid() {
+ return mediaUuid;
+ }
+
+ /**
+ * Sets the media uuid.
+ *
+ * @param mediaUuid the new media uuid
+ */
+ public void setMediaUuid(String mediaUuid) {
+ this.mediaUuid = mediaUuid;
+ }
+
+ }
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/model/PublicMessage.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/model/PublicMessage.java
new file mode 100644
index 0000000..8a7e661
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/model/PublicMessage.java
@@ -0,0 +1,100 @@
+/*
+ * Copyright (c) 2014 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.api.provider.model;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+/**
+ * The Class PublicMessage.
+ */
+public class PublicMessage implements Parcelable{
+
+ /** The Constant TEXT. */
+ public static final String TEXT = "10";
+
+ /** The Constant IMAGE. */
+ public static final String IMAGE = "20";
+
+ /** The Constant AUDIO. */
+ public static final String AUDIO = "40";
+
+ /** The Constant VIDEO. */
+ public static final String VEDIO = "30";
+
+ /** The Constant TOPIC. */
+ public static final String TOPIC = "50";
+
+ /** The Constant TOPIC SINGLE. */
+ public static final String TOPIC_SINGLE = "51";
+
+ /** The Constant TOPIC MORE. */
+ public static final String TOPIC_MORE = "52";
+
+ /**
+ * Instantiates a new public message.
+ */
+ public PublicMessage() {
+
+ }
+
+ /**
+ * Instantiates a new public message.
+ *
+ * @param source the source
+ */
+ public PublicMessage(Parcel source) {
+
+ }
+
+ /* (non-Javadoc)
+ * @see android.os.Parcelable#describeContents()
+ */
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ /* (non-Javadoc)
+ * @see android.os.Parcelable#writeToParcel(android.os.Parcel, int)
+ */
+ @Override
+ public void writeToParcel(Parcel arg0, int arg1) {
+
+ }
+
+ /** The Constant CREATOR. */
+ public static final Parcelable.Creator<PublicMessage> CREATOR = new Parcelable.Creator<PublicMessage>() {
+ public PublicMessage createFromParcel(Parcel in) {
+ return new PublicMessage(in);
+ }
+
+ @Override
+ public PublicMessage[] newArray(int size) {
+ return new PublicMessage[size];
+ }
+
+ };
+
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/model/PublicTextMessage.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/model/PublicTextMessage.java
new file mode 100644
index 0000000..f0bcad2
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/model/PublicTextMessage.java
@@ -0,0 +1,197 @@
+/*
+ * Copyright (c) 2014 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.api.provider.model;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+/**
+ * The Class PublicTextMessage.
+ */
+public class PublicTextMessage extends PublicMessage implements Parcelable{
+
+ /** The createtime. */
+ private String createtime;
+
+ /** The forwardable. */
+// private String forwardable;
+
+ /** The msgtype. */
+ private String msgtype;
+
+ /** The content. */
+ private String content;
+
+ /** The msg id. */
+// private String msgId;
+
+ /**
+ * Instantiates a new public text message.
+ */
+ public PublicTextMessage(){}
+
+ /**
+ * Instantiates a new public text message.
+ *
+ * @param source the source
+ */
+ public PublicTextMessage( Parcel source )
+ {
+ readFromParcel( source );
+ }
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ @Override
+ public void writeToParcel(Parcel dest, int flags) {
+ dest.writeString( createtime );
+// dest.writeString( forwardable );
+ dest.writeString( msgtype );
+ dest.writeString( content );
+// dest.writeString( msgId );
+ }
+
+ /**
+ * Read from parcel.
+ *
+ * @param source the source
+ */
+ public void readFromParcel( Parcel source )
+ {
+ createtime = source.readString();
+// forwardable = source.readString();
+ msgtype = source.readString();
+ content = source.readString();
+// msgId = source.readString();
+ }
+
+ /** The parcel creator. */
+ public static final Parcelable.Creator<PublicTextMessage> CREATOR = new Parcelable.Creator<PublicTextMessage>() {
+ @Override
+ public PublicTextMessage createFromParcel( Parcel source )
+ {
+ return new PublicTextMessage( source );
+ }
+
+ @Override
+ public PublicTextMessage[] newArray( int size )
+ {
+ return new PublicTextMessage[ size ];
+ }
+ };
+
+ /**
+ * Gets the createtime.
+ *
+ * @return the createtime
+ */
+ public String getCreatetime() {
+ return createtime;
+ }
+
+ /**
+ * Sets the createtime.
+ *
+ * @param createtime the new createtime
+ */
+ public void setCreatetime(String createtime) {
+ this.createtime = createtime;
+ }
+
+ /**
+ * Gets the forwardable.
+ *
+ * @return the forwardable
+ */
+// public String getForwardable() {
+// return forwardable;
+// }
+
+ /**
+ * Sets the forwardable.
+ *
+ * @param forwardable the new forwardable
+ */
+// public void setForwardable(String forwardable) {
+// this.forwardable = forwardable;
+// }
+
+ /**
+ * Gets the msgtype.
+ *
+ * @return the msgtype
+ */
+ public String getMsgtype() {
+ return msgtype;
+ }
+
+ /**
+ * Sets the msgtype.
+ *
+ * @param msgtype the new msgtype
+ */
+ public void setMsgtype(String msgtype) {
+ this.msgtype = msgtype;
+ }
+
+ /**
+ * Gets the content.
+ *
+ * @return the content
+ */
+ public String getContent() {
+ return content;
+ }
+
+ /**
+ * Sets the content.
+ *
+ * @param content the new content
+ */
+ public void setContent(String content) {
+ this.content = content;
+ }
+
+ /**
+ * Gets the msg id.
+ *
+ * @return the msg id
+ */
+// public String getMsgId() {
+// return msgId;
+// }
+
+ /**
+ * Sets the msg id.
+ *
+ * @param msgId the new msg id
+ */
+// public void setMsgId(String msgId) {
+// this.msgId = msgId;
+// }
+
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/model/PublicTopicMessage.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/model/PublicTopicMessage.java
new file mode 100644
index 0000000..5dc8d2c
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/model/PublicTopicMessage.java
@@ -0,0 +1,497 @@
+/*
+ * Copyright (c) 2014 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.api.provider.model;
+
+import java.util.LinkedList;
+import java.util.List;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+/**
+ * The Class PublicTopicMessage.
+ */
+public class PublicTopicMessage extends PublicMessage implements Parcelable{
+
+ /** The createtime. */
+ private String createtime;
+
+ /** The forwardable. */
+// private String forwardable;
+
+ /** The msgtype. */
+ private String msgtype;
+
+ /** The msg id. */
+// private String msgId;
+
+ /** The smscontent. */
+// private String smscontent;
+
+ /** The sectioncount. */
+// private String sectioncount;
+
+ /** The topics. */
+ private List<PublicTopicContent> topics;
+
+ /**
+ * Instantiates a new public topic message.
+ */
+ public PublicTopicMessage(){}
+
+ /**
+ * Instantiates a new public topic message.
+ *
+ * @param source the source
+ */
+ public PublicTopicMessage( Parcel source )
+ {
+ readFromParcel( source );
+ }
+
+ /* (non-Javadoc)
+ * @see com.suntek.mway.rcs.client.api.provider.model.PublicMessage#describeContents()
+ */
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ /* (non-Javadoc)
+ * @see com.suntek.mway.rcs.client.api.provider.model.PublicMessage#writeToParcel(android.os.Parcel, int)
+ */
+ @Override
+ public void writeToParcel(Parcel dest, int flags) {
+ dest.writeString( createtime );
+// dest.writeString( forwardable );
+ dest.writeString( msgtype );
+// dest.writeString( msgId );
+// dest.writeString( smscontent );
+// dest.writeString( sectioncount );
+ dest.writeList( topics );
+ }
+
+ /**
+ * Read from parcel.
+ *
+ * @param source the source
+ */
+ public void readFromParcel( Parcel source )
+ {
+ createtime = source.readString();
+// forwardable = source.readString();
+ msgtype = source.readString();
+// msgId = source.readString();
+// smscontent = source.readString();
+// sectioncount = source.readString();
+ topics = new LinkedList<PublicTopicContent>();
+ source.readList( topics, this.getClass().getClassLoader() );
+ }
+
+ /** The parcel creator. */
+ public static final Parcelable.Creator<PublicTopicMessage> CREATOR = new Parcelable.Creator<PublicTopicMessage>() {
+ @Override
+ public PublicTopicMessage createFromParcel( Parcel source )
+ {
+ return new PublicTopicMessage( source );
+ }
+
+ @Override
+ public PublicTopicMessage[] newArray( int size )
+ {
+ return new PublicTopicMessage[ size ];
+ }
+ };
+
+
+ /**
+ * Gets the createtime.
+ *
+ * @return the createtime
+ */
+ public String getCreatetime() {
+ return createtime;
+ }
+
+ /**
+ * Sets the createtime.
+ *
+ * @param createtime the new createtime
+ */
+ public void setCreatetime(String createtime) {
+ this.createtime = createtime;
+ }
+
+ /**
+ * Gets the forwardable.
+ *
+ * @return the forwardable
+ */
+// public String getForwardable() {
+// return forwardable;
+// }
+
+ /**
+ * Sets the forwardable.
+ *
+ * @param forwardable the new forwardable
+ */
+// public void setForwardable(String forwardable) {
+// this.forwardable = forwardable;
+// }
+
+ /**
+ * Gets the msgtype.
+ *
+ * @return the msgtype
+ */
+ public String getMsgtype() {
+ return msgtype;
+ }
+
+ /**
+ * Sets the msgtype.
+ *
+ * @param msgtype the new msgtype
+ */
+ public void setMsgtype(String msgtype) {
+ this.msgtype = msgtype;
+ }
+
+ /**
+ * Gets the msg id.
+ *
+ * @return the msg id
+ */
+// public String getMsgId() {
+// return msgId;
+// }
+
+ /**
+ * Sets the msg id.
+ *
+ * @param msgId the new msg id
+ */
+// public void setMsgId(String msgId) {
+// this.msgId = msgId;
+// }
+
+ /**
+ * Gets the smscontent.
+ *
+ * @return the smscontent
+ */
+// public String getSmscontent() {
+// return smscontent;
+// }
+
+ /**
+ * Sets the smscontent.
+ *
+ * @param smscontent the new smscontent
+ */
+// public void setSmscontent(String smscontent) {
+// this.smscontent = smscontent;
+// }
+
+ /**
+ * Gets the sectioncount.
+ *
+ * @return the sectioncount
+ */
+// public String getSectioncount() {
+// return sectioncount;
+// }
+
+ /**
+ * Sets the sectioncount.
+ *
+ * @param sectioncount the new sectioncount
+ */
+// public void setSectioncount(String sectioncount) {
+// this.sectioncount = sectioncount;
+// }
+
+ /**
+ * Gets the topics.
+ *
+ * @return the topics
+ */
+ public List<PublicTopicContent> getTopics() {
+ return topics;
+ }
+
+ /**
+ * Sets the topics.
+ *
+ * @param topics the new topics
+ */
+ public void setTopics(List<PublicTopicContent> topics) {
+ this.topics = topics;
+ }
+
+ /**
+ * The Class PublicTopicContent.
+ */
+ public static class PublicTopicContent implements Parcelable{
+
+ /** The title. */
+ private String title;
+
+ /** The author. */
+ private String author;
+
+ /** The thumb link. */
+ private String thumbLink;
+
+ /** The original link. */
+ private String originalLink;
+
+ /** The source link. */
+ private String sourceLink;
+
+ /** The media uuid. */
+ private String mediaUuid;
+
+ /** The main text. */
+ private String mainText;
+
+ /** The body link. */
+ private String bodyLink;
+
+ /**
+ * Instantiates a new public topic content.
+ */
+ public PublicTopicContent(){}
+
+ /**
+ * Instantiates a new public topic content.
+ *
+ * @param source the source
+ */
+ public PublicTopicContent(Parcel source){
+ readFromParcel( source );
+ }
+
+ /* (non-Javadoc)
+ * @see android.os.Parcelable#describeContents()
+ */
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ /* (non-Javadoc)
+ * @see android.os.Parcelable#writeToParcel(android.os.Parcel, int)
+ */
+ @Override
+ public void writeToParcel(Parcel dest, int flags) {
+ dest.writeString(title);
+ dest.writeString(author);
+ dest.writeString(thumbLink);
+ dest.writeString(originalLink);
+ dest.writeString(sourceLink);
+ dest.writeString(mediaUuid);
+ dest.writeString(mainText);
+ dest.writeString(bodyLink);
+ }
+
+ /**
+ * Read from parcel.
+ *
+ * @param source the source
+ */
+ public void readFromParcel( Parcel source ){
+ title = source.readString();
+ author = source.readString();
+ thumbLink = source.readString();
+ originalLink = source.readString();
+ sourceLink = source.readString();
+ mediaUuid = source.readString();
+ mainText = source.readString();
+ bodyLink = source.readString();
+ }
+
+ /** The parcel creator. */
+ public static final Parcelable.Creator<PublicTopicContent> CREATOR = new Parcelable.Creator<PublicTopicContent>() {
+ @Override
+ public PublicTopicContent createFromParcel( Parcel source )
+ {
+ return new PublicTopicContent( source );
+ }
+
+ @Override
+ public PublicTopicContent[] newArray( int size )
+ {
+ return new PublicTopicContent[ size ];
+ }
+ };
+
+ /**
+ * Gets the title.
+ *
+ * @return the title
+ */
+ public String getTitle() {
+ return title;
+ }
+
+ /**
+ * Sets the title.
+ *
+ * @param title the new title
+ */
+ public void setTitle(String title) {
+ this.title = title;
+ }
+
+ /**
+ * Gets the author.
+ *
+ * @return the author
+ */
+ public String getAuthor() {
+ return author;
+ }
+
+ /**
+ * Sets the author.
+ *
+ * @param author the new author
+ */
+ public void setAuthor(String author) {
+ this.author = author;
+ }
+
+ /**
+ * Gets the thumb link.
+ *
+ * @return the thumb link
+ */
+ public String getThumbLink() {
+ return thumbLink;
+ }
+
+ /**
+ * Sets the thumb link.
+ *
+ * @param thumbLink the new thumb link
+ */
+ public void setThumbLink(String thumbLink) {
+ this.thumbLink = thumbLink;
+ }
+
+ /**
+ * Gets the original link.
+ *
+ * @return the original link
+ */
+ public String getOriginalLink() {
+ return originalLink;
+ }
+
+ /**
+ * Sets the original link.
+ *
+ * @param originalLink the new original link
+ */
+ public void setOriginalLink(String originalLink) {
+ this.originalLink = originalLink;
+ }
+
+ /**
+ * Gets the source link.
+ *
+ * @return the source link
+ */
+ public String getSourceLink() {
+ return sourceLink;
+ }
+
+ /**
+ * Sets the source link.
+ *
+ * @param sourceLink the new source link
+ */
+ public void setSourceLink(String sourceLink) {
+ this.sourceLink = sourceLink;
+ }
+
+ /**
+ * Gets the media uuid.
+ *
+ * @return the media uuid
+ */
+ public String getMediaUuid() {
+ return mediaUuid;
+ }
+
+ /**
+ * Sets the media uuid.
+ *
+ * @param mediaUuid the new media uuid
+ */
+ public void setMediaUuid(String mediaUuid) {
+ this.mediaUuid = mediaUuid;
+ }
+
+ /**
+ * Gets the main text.
+ *
+ * @return the main text
+ */
+ public String getMainText() {
+ return mainText;
+ }
+
+ /**
+ * Sets the main text.
+ *
+ * @param mainText the new main text
+ */
+ public void setMainText(String mainText) {
+ this.mainText = mainText;
+ }
+
+ /**
+ * Gets the body link.
+ *
+ * @return the body link
+ */
+ public String getBodyLink() {
+ return bodyLink;
+ }
+
+ /**
+ * Sets the body link.
+ *
+ * @param bodyLink the new body link
+ */
+ public void setBodyLink(String bodyLink) {
+ this.bodyLink = bodyLink;
+ }
+
+
+ }
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/model/SimpleMsg.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/model/SimpleMsg.aidl
new file mode 100644
index 0000000..8f10e72
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/model/SimpleMsg.aidl
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2014 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.api.provider.model;
+
+parcelable SimpleMsg;
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/model/SimpleMsg.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/model/SimpleMsg.java
new file mode 100644
index 0000000..900ef1a
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/model/SimpleMsg.java
@@ -0,0 +1,108 @@
+/*
+ * Copyright (c) 2014 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.api.provider.model;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+public class SimpleMsg implements Parcelable {
+ private String rowId;
+
+ private String messageId;
+
+ private int storeType;
+
+ public SimpleMsg(){
+ }
+
+ public SimpleMsg(Parcel in) {
+ readFromParcel(in);
+ }
+
+ public String getRowId() {
+ return rowId;
+ }
+
+ public void setRowId(String rowId) {
+ this.rowId = rowId;
+ }
+
+ public String getMessageId() {
+ return messageId;
+ }
+
+ public void setMessageId(String messageId) {
+ this.messageId = messageId;
+ }
+
+ public int getStoreType() {
+ return storeType;
+ }
+
+ public void setStoreType(int storeType) {
+ this.storeType = storeType;
+ }
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ @Override
+ public void writeToParcel(Parcel dest, int flags) {
+ dest.writeString(rowId);
+ dest.writeString(messageId);
+ dest.writeInt(storeType);
+ }
+
+ public void readFromParcel(Parcel source) {
+ rowId = source.readString();
+ messageId = source.readString();
+ storeType = source.readInt();
+ }
+
+ public static final Parcelable.Creator<SimpleMsg> CREATOR = new Parcelable.Creator<SimpleMsg>() {
+ public SimpleMsg createFromParcel(Parcel in) {
+ return new SimpleMsg(in);
+ }
+
+ @Override
+ public SimpleMsg[] newArray(int size) {
+ return new SimpleMsg[size];
+ }
+ };
+
+ @Override
+ public String toString() {
+ List<String> list = new ArrayList<String>();
+ list.add("rowId=" + rowId);
+ list.add("messageId=" + messageId);
+ list.add("storeType=" + storeType);
+ return list.toString();
+ }
+
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/model/TopMessageData.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/model/TopMessageData.aidl
new file mode 100644
index 0000000..d92ee01
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/model/TopMessageData.aidl
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2014 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.api.provider.model;
+
+parcelable TopMessageData;
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/model/TopMessageData.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/model/TopMessageData.java
new file mode 100644
index 0000000..a6c69a1
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/provider/model/TopMessageData.java
@@ -0,0 +1,118 @@
+/*
+ * Copyright (c) 2014 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.api.provider.model;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+
+public class TopMessageData implements Parcelable{
+
+
+ // messages show on the top of frame
+ public static final String TABLE_TOP_MESSAGE = "topMessage";
+
+ // autoincrement id
+ public static final String KEY_ID = "_id";
+
+ // thread id
+ public static final String KEY_THREAD_ID = "_threadId";
+
+ // the time of setting message placed at the top
+ public static final String KEY_TIME = "_time";
+
+
+ private int id;
+
+ private String threadId;
+
+ private long time;
+
+ public TopMessageData(){
+ }
+
+ public TopMessageData(Parcel in) {
+ readFromParcel(in);
+ }
+
+ public int getId() {
+ return id;
+ }
+
+ public void setId(int id) {
+ this.id = id;
+ }
+
+ public String getThreadId() {
+ return threadId;
+ }
+
+ public void setThreadId(String threadId) {
+ this.threadId = threadId;
+ }
+
+ public long getTime() {
+ return time;
+ }
+
+ public void setTime(long time) {
+ this.time = time;
+ }
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ public static final Parcelable.Creator<TopMessageData> CREATOR = new Parcelable.Creator<TopMessageData>() {
+ public TopMessageData createFromParcel(Parcel in) {
+ return new TopMessageData(in);
+ }
+
+ @Override
+ public TopMessageData[] newArray(int size) {
+ return new TopMessageData[size];
+ }
+
+ };
+
+ @Override
+ public void writeToParcel(Parcel dest, int flags) {
+ dest.writeInt(id);
+ dest.writeString(threadId);
+ dest.writeLong(time);
+ }
+
+ public void readFromParcel(Parcel source) {
+ id = source.readInt();
+ threadId = source.readString();
+ time = source.readLong();
+ }
+
+ @Override
+ public String toString() {
+ return "TopMessageData [id=" + id + ", threadId=" + threadId
+ + ", time=" + time + "]";
+ }
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/registration/IRegistrationApi.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/registration/IRegistrationApi.aidl
new file mode 100644
index 0000000..06026f2
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/registration/IRegistrationApi.aidl
@@ -0,0 +1,35 @@
+/*
+ * Copyright (c) 2014 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.api.registration;
+
+interface IRegistrationApi {
+
+ boolean register();
+
+ boolean unregister();
+
+ boolean cancel();
+
+
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/setting/IRcsSettingApi.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/setting/IRcsSettingApi.aidl
new file mode 100644
index 0000000..1c57d48
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/setting/IRcsSettingApi.aidl
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 2014 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.api.setting;
+
+import com.suntek.mway.rcs.client.api.setting.RcsUserProfileInfo;
+import com.suntek.mway.rcs.client.api.setting.SystemInfo;
+
+interface IRcsSettingApi {
+
+ // User accept rcs auto registration provisions and press accept button to continue
+ void acceptAutoReg();
+
+ //boolean setProfileInfo(in RcsUserProfileInfo rcsUserProfileInfo);
+
+ RcsUserProfileInfo getRcsUserProfileInfo();
+
+ SystemInfo getNetworkInfo();
+
+ boolean isOnline();
+
+ void checkOtp(String otp);
+
+ void start();
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/setting/LoginUser.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/setting/LoginUser.aidl
new file mode 100644
index 0000000..c6024be
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/setting/LoginUser.aidl
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2014 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.api.setting;
+
+parcelable LoginUser;
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/setting/LoginUser.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/setting/LoginUser.java
new file mode 100644
index 0000000..4c781d5
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/setting/LoginUser.java
@@ -0,0 +1,120 @@
+/*
+ * Copyright (c) 2014 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.api.setting;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+public class LoginUser implements Parcelable {
+
+ private String loginAccout;
+ private String password;
+ private boolean isSupportVoLTE;
+
+ public LoginUser(String account,String pwd) {
+ // TODO Auto-generated constructor stub
+ this.loginAccout = account;
+ this.password = pwd;
+ }
+
+ public LoginUser(Parcel source) {
+ // TODO Auto-generated constructor stub
+ readFromParcel( source );
+ }
+
+ public String getLoginAccout() {
+ return loginAccout;
+ }
+
+ public void setLoginAccout(String loginAccout) {
+ this.loginAccout = loginAccout;
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public void setPassword(String password) {
+ this.password = password;
+ }
+
+ public boolean isSupportVoLTE() {
+ return isSupportVoLTE;
+ }
+
+ public void setSupportVoLTE(boolean isSupportVoLTE) {
+ this.isSupportVoLTE = isSupportVoLTE;
+ }
+
+ @Override
+ public int describeContents() {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ @Override
+ public void writeToParcel(Parcel dest, int flags) {
+ // TODO Auto-generated method stub
+ dest.writeString(loginAccout);
+ dest.writeString(password);
+ dest.writeBooleanArray( new boolean[]{ isSupportVoLTE } );
+ }
+
+ public void readFromParcel( Parcel source )
+ {
+ loginAccout = source.readString();
+ password = source.readString();
+
+ boolean[] val = new boolean[ 1 ];
+ source.readBooleanArray( val );
+ isSupportVoLTE = val[ 0 ];
+ }
+
+ /**
+ * a fast way to get a Parcelable creator.
+ */
+ public static final Parcelable.Creator<LoginUser> CREATOR = new Parcelable.Creator<LoginUser>() {
+ public LoginUser createFromParcel(Parcel source) {
+ return new LoginUser(source);
+ }
+
+ public LoginUser[] newArray(int size) {
+ return new LoginUser[size];
+ }
+ };
+
+ @Override
+ public String toString() {
+ List<String> list = new ArrayList<String>();
+ list.add("loginAccount=" + this.loginAccout);
+ list.add("password=" + this.password);
+ list.add("isSupportVoLTE=" + this.isSupportVoLTE);
+ return list.toString();
+ }
+
+
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/setting/RcsUserProfileInfo.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/setting/RcsUserProfileInfo.aidl
new file mode 100644
index 0000000..de99883
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/setting/RcsUserProfileInfo.aidl
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2014 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.api.setting;
+
+parcelable RcsUserProfileInfo;
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/setting/RcsUserProfileInfo.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/setting/RcsUserProfileInfo.java
new file mode 100644
index 0000000..9ee3d05
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/setting/RcsUserProfileInfo.java
@@ -0,0 +1,229 @@
+/*
+ * Copyright (c) 2014 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.api.setting;
+
+import com.suntek.mway.rcs.client.api.constant.APIConstant;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+/**
+ * <p>Title: RcsUserProfileInfo class</p>
+ * <p>
+ * Description: The class <code>RcsUserProfileInfo</code> represents a information of
+ * RCS user profile, which is indicated by the field definition in this class.
+ * </p>
+ * <p>
+ * Copyright: Copyright (c) 2014
+ * </p>
+ * <p>
+ * Company: pci-suntek
+ * </p>
+ * @author YE JIE MING
+ * @version 1.0
+ *
+ */
+public class RcsUserProfileInfo implements Parcelable {
+
+ /**
+ * SIP private URI with "sip:+86" prefix.
+ */
+ private String sipPrivateUri;
+
+ /**
+ * only telephone number
+ */
+ private String userName;
+ private int imStatus;
+ private boolean isLocalUser;
+ private int terminalType;
+ private String IMSI;
+ private String MCC;
+ private String MNC;
+ private String version;
+
+ /**
+ * Create a new instance of UserProfileInfo
+ */
+ public RcsUserProfileInfo() {
+
+ }
+
+ /**
+ * Create a new instance of UserProfileInfo with another Parcelable object.
+ * @param source Parcelable source
+ */
+ public RcsUserProfileInfo(Parcel source) {
+
+ sipPrivateUri = source.readString();
+ userName = source.readString();
+ imStatus = source.readInt();
+
+ boolean[] value = new boolean[ 1 ];
+ source.readBooleanArray( value );
+ isLocalUser = value[ 0 ];
+
+ terminalType = source.readInt();
+ IMSI = source.readString();
+ MCC = source.readString();
+ MNC = source.readString();
+ version = source.readString();
+ }
+
+ /**
+ * Get SIP private uri
+ * @return SIP private uri
+ */
+ public String getSipPrivateUri() {
+ return sipPrivateUri;
+ }
+
+ /**
+ * Set SIP private uri
+ * @param sipPrivateUri SIP private uri
+ */
+ public void setSipPrivateUri(String sipPrivateUri) {
+ this.sipPrivateUri = sipPrivateUri;
+ }
+
+ public String getUserName() {
+ return userName;
+ }
+
+ public void setUserName(String userName) {
+ this.userName = userName;
+ }
+
+ public int getImStatus() {
+ return imStatus;
+ }
+
+ public void setImStatus(int imStatus) {
+ this.imStatus = imStatus;
+ }
+
+ public boolean isLocalUser() {
+ return isLocalUser;
+ }
+
+ public void setLocalUser(boolean isLocalUser) {
+ this.isLocalUser = isLocalUser;
+ }
+
+ public int getTerminalType() {
+ return terminalType;
+ }
+
+ public void setTerminalType(int terminalType) {
+ this.terminalType = terminalType;
+ }
+
+ public String getIMSI() {
+ return IMSI;
+ }
+
+ public void setIMSI(String iMSI) {
+ IMSI = iMSI;
+ }
+
+ public String getMCC() {
+ return MCC;
+ }
+
+ public void setMCC(String mCC) {
+ MCC = mCC;
+ }
+
+ public String getMNC() {
+ return MNC;
+ }
+
+ public void setMNC(String mNC) {
+ MNC = mNC;
+ }
+
+ public String getVersion() {
+ return version;
+ }
+
+ public void setVersion(String version) {
+ this.version = version;
+ }
+
+ /**
+ * Describe the kinds of special objects contained in this Parcelable's
+ * marshalled representation
+ *
+ * @return Integer
+ */
+ @Override
+ public int describeContents() {
+ return APIConstant.PARCEL_OBJECT_TYPE;
+ }
+
+ /**
+ * Write parcelable object
+ *
+ * @param dest The Parcel in which the object should be written
+ * @param flags Additional flags about how the object should be written
+ */
+ @Override
+ public void writeToParcel(Parcel dest, int flags) {
+
+ dest.writeString(sipPrivateUri);
+ dest.writeString(userName);
+ dest.writeInt(imStatus);
+
+ dest.writeBooleanArray( new boolean[] { isLocalUser } );
+
+ dest.writeInt(terminalType);
+
+ dest.writeString(IMSI);
+ dest.writeString(MCC);
+ dest.writeString(MNC);
+ dest.writeString(version);
+ }
+
+ /**
+ * a fast way to get a Parcelable creator.
+ */
+ public static final Parcelable.Creator<RcsUserProfileInfo> CREATOR = new Parcelable.Creator<RcsUserProfileInfo>() {
+ public RcsUserProfileInfo createFromParcel(Parcel source) {
+ return new RcsUserProfileInfo(source);
+ }
+
+ public RcsUserProfileInfo[] newArray(int size) {
+ return new RcsUserProfileInfo[size];
+ }
+ };
+
+ @Override
+ public String toString() {
+ return "RcsUserProfileInfo [sipPrivateUri=" + sipPrivateUri
+ + ", userName=" + userName + ", imStatus=" + imStatus
+ + ", isLocalUser=" + isLocalUser + ", terminalType="
+ + terminalType + ", IMSI=" + IMSI + ", MCC=" + MCC + ", MNC="
+ + MNC + ", version=" + version + "]";
+ }
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/setting/SystemInfo.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/setting/SystemInfo.aidl
new file mode 100644
index 0000000..ba36d22
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/setting/SystemInfo.aidl
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2014 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.api.setting;
+
+parcelable SystemInfo;
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/setting/SystemInfo.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/setting/SystemInfo.java
new file mode 100644
index 0000000..91cde20
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/setting/SystemInfo.java
@@ -0,0 +1,129 @@
+/*
+ * Copyright (c) 2014 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.api.setting;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+public class SystemInfo implements Parcelable {
+
+ private int networkType;
+ private int networkFastType;
+ private String ssid;
+ private String apn;
+ private boolean isSimCardExist;
+ private String ipAddress;
+
+ public SystemInfo() {
+ // TODO Auto-generated constructor stub
+ }
+ public SystemInfo(Parcel source) {
+ // TODO Auto-generated constructor stub
+ networkType = source.readInt();
+ networkFastType = source.readInt();
+ ssid = source.readString();
+ apn = source.readString();
+
+ boolean[] value = new boolean[ 1 ];
+ source.readBooleanArray( value );
+ isSimCardExist = value[ 0 ];
+
+ ipAddress = source.readString();
+ }
+
+ public int getNetworkType() {
+ return networkType;
+ }
+ public void setNetworkType(int networkType) {
+ this.networkType = networkType;
+ }
+ public int getNetworkFastType() {
+ return networkFastType;
+ }
+ public void setNetworkFastType(int networkFastType) {
+ this.networkFastType = networkFastType;
+ }
+ public String getSsid() {
+ return ssid;
+ }
+ public void setSsid(String ssid) {
+ this.ssid = ssid;
+ }
+ public String getApn() {
+ return apn;
+ }
+ public void setApn(String apn) {
+ this.apn = apn;
+ }
+ public boolean isSimCardExist() {
+ return isSimCardExist;
+ }
+ public void setSimCardExist(boolean isSimCardExist) {
+ this.isSimCardExist = isSimCardExist;
+ }
+ public String getIpAddress() {
+ return ipAddress;
+ }
+ public void setIpAddress(String ipAddress) {
+ this.ipAddress = ipAddress;
+ }
+ @Override
+ public int describeContents() {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ /**
+ * a fast way to get a Parcelable creator.
+ */
+ public static final Parcelable.Creator<SystemInfo> CREATOR = new Parcelable.Creator<SystemInfo>() {
+ public SystemInfo createFromParcel(Parcel source) {
+ return new SystemInfo(source);
+ }
+
+ public SystemInfo[] newArray(int size) {
+ return new SystemInfo[size];
+ }
+ };
+
+ @Override
+ public void writeToParcel(Parcel dest, int flags) {
+ // TODO Auto-generated method stub
+ dest.writeInt(networkType);
+ dest.writeInt(networkFastType);
+ dest.writeString(ssid);
+ dest.writeString(apn);
+ dest.writeBooleanArray( new boolean[] { isSimCardExist } );
+ dest.writeString(ipAddress);
+ }
+
+ @Override
+ public String toString() {
+ return "SystemInfo [networkType=" + networkType + ", networkFastType="
+ + networkFastType + ", ssid=" + ssid + ", apn=" + apn
+ + ", isSimCardExist=" + isSimCardExist + ", ipAddress="
+ + ipAddress + "]";
+ }
+
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/setting/callback/IAccountEventListener.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/setting/callback/IAccountEventListener.aidl
new file mode 100644
index 0000000..bc6744e
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/setting/callback/IAccountEventListener.aidl
@@ -0,0 +1,31 @@
+/*
+ * Copyright (c) 2014 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.api.setting.callback;
+
+interface IAccountEventListener
+{
+ void success( String message );
+
+ void error( int responesCode, String message );
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/specialnumber/ISpecialServiceNumApi.aidl b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/specialnumber/ISpecialServiceNumApi.aidl
new file mode 100644
index 0000000..4915fb4
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/specialnumber/ISpecialServiceNumApi.aidl
@@ -0,0 +1,35 @@
+/*
+ * Copyright (c) 2014 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.api.specialnumber;
+
+interface ISpecialServiceNumApi
+{
+ void add(String number);
+ void remove(String number);
+ void removeAll();
+ List<String> getList();
+ void openFunction();
+ void closeFunction();
+ String delSpecialPreNum(String telephone);
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/utils/CloseFileUtils.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/utils/CloseFileUtils.java
new file mode 100644
index 0000000..b989194
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/utils/CloseFileUtils.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright (c) 2014 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.api.utils;
+
+import java.io.Closeable;
+import java.io.IOException;
+
+/**
+ * <p>Title: CloseableUtils class</p>
+ * <p>
+ * Description: The class <code>CloseFileUtils</code> is a utility that
+ * closes properly objects implementing CloseFileUtils (input stream, output stream...)
+ * </p>
+ * <p>
+ * Copyright: Copyright (c) 2014
+ * </p>
+ * <p>
+ * Company: pci-suntek
+ * </p>
+ * @author YE JIE MING
+ * @version 1.0
+ *
+ */
+public abstract class CloseFileUtils {
+
+ /**
+ * Closes properly objects implementing CloseFileUtils (input stream, output stream...)
+ *
+ * @param c
+ * object to close or null
+ * @return IOException or null
+ */
+ public static IOException close(Closeable c) {
+ if (c != null) {
+ try {
+ c.close();
+ } catch (IOException e) {
+ return e;
+ }
+ }
+ return null;
+ }
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/utils/FirstInFirstOutBuffer.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/utils/FirstInFirstOutBuffer.java
new file mode 100644
index 0000000..7a07a02
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/utils/FirstInFirstOutBuffer.java
@@ -0,0 +1,122 @@
+/*
+ * Copyright (c) 2014 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.api.utils;
+
+import java.util.Vector;
+
+/**
+ * <p>Title: FirstInFirstOutBuffer class</p>
+ * <p>
+ * Description: The class <code>FirstInFirstOutBuffer</code> is a utility for objects read and save in synchronization.
+ * </p>
+ * <p>
+ * Copyright: Copyright (c) 2014
+ * </p>
+ * <p>
+ * Company: pci-suntek
+ * </p>
+ * @author YE JIE MING
+ * @version 1.0
+ *
+ */
+public class FirstInFirstOutBuffer {
+ /**
+ * Lock object
+ */
+ private int nbObjects = 0;
+
+ /**
+ * Buffer stack
+ */
+ private Vector<Object> stack = new Vector<Object>();
+
+ /**
+ * Add an object in the buffer
+ *
+ * @param obj Object
+ */
+ public synchronized void addObject(Object obj) {
+ stack.addElement(obj);
+ nbObjects++;
+ notifyAll();
+ }
+
+ /**
+ * Read an object in the buffer. This is a blocking method until an object is read.
+ *
+ * @return Object
+ */
+ public synchronized Object getObject() {
+ Object obj = null;
+ if (nbObjects == 0) {
+ try {
+ wait();
+ } catch (InterruptedException e) {
+ // Nothing to do
+ }
+ }
+ if (nbObjects != 0) {
+ obj = stack.elementAt(0);
+ stack.removeElementAt(0);
+ nbObjects--;
+ notifyAll();
+ }
+ return obj;
+ }
+
+ /**
+ * Read an object in the buffer.
+ *
+ * @param timeout
+ * the milliseconds that thread wait
+ * @return Object
+ */
+ public synchronized Object getObject(int timeout) {
+ Object obj = null;
+ if (nbObjects == 0) {
+ try {
+ wait(timeout);
+ } catch (InterruptedException e) {
+ // Nothing to do
+ }
+ }
+ if (nbObjects != 0) {
+ obj = stack.elementAt(0);
+ stack.removeElementAt(0);
+ nbObjects--;
+ notifyAll();
+ }
+ return obj;
+ }
+
+ /**
+ * Notify thread
+ */
+ public void close() {
+ synchronized(this) {
+ this.notifyAll();
+ }
+ }
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/utils/MediaUtils.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/utils/MediaUtils.java
new file mode 100644
index 0000000..00adc84
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/utils/MediaUtils.java
@@ -0,0 +1,182 @@
+/*
+ * Copyright (c) 2014 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.api.utils;
+
+import java.io.File;
+import java.util.Locale;
+
+import android.content.Context;
+import android.media.MediaPlayer;
+import android.net.Uri;
+import android.text.TextUtils;
+
+import com.suntek.mway.rcs.client.api.constant.MediaConstants;
+
+/**
+ * The Class MediaUtils.
+ */
+public class MediaUtils {
+
+ /**
+ * Checks if is image file.
+ *
+ * @param fileName the file name
+ * @return true, if is image file
+ */
+ public static boolean isImageFile(String fileName){
+ if(TextUtils.isEmpty(fileName)){
+ return false;
+ }
+
+ int suffixIndex = fileName.lastIndexOf(".");
+ if(suffixIndex != -1){
+ String suffix = fileName.substring(suffixIndex + 1);
+ return isImageSuffix(suffix);
+ }else{
+ return false;
+ }
+ }
+
+ /**
+ * Checks if is audio file.
+ *
+ * @param fileName the file name
+ * @return true, if is audio file
+ */
+ public static boolean isAudioFile(String fileName){
+ if(TextUtils.isEmpty(fileName)){
+ return false;
+ }
+
+ int suffixIndex = fileName.lastIndexOf(".");
+ if(suffixIndex != -1){
+ String suffix = fileName.substring(suffixIndex + 1);
+ return isAudioSuffix(suffix);
+ }else{
+ return false;
+ }
+ }
+
+ /**
+ * Checks if is video file.
+ *
+ * @param fileName the file name
+ * @return true, if is video file
+ */
+ public static boolean isVideoFile(String fileName){
+ if(TextUtils.isEmpty(fileName)){
+ return false;
+ }
+
+ int suffixIndex = fileName.lastIndexOf(".");
+ if(suffixIndex != -1){
+ String suffix = fileName.substring(suffixIndex + 1);
+ return isVideoSuffix(suffix);
+ }else{
+ return false;
+ }
+ }
+
+ /**
+ * Checks if is image suffix.
+ *
+ * @param suffix the suffix
+ * @return true, if is image suffix
+ */
+ public static boolean isImageSuffix(String suffix){
+ if(TextUtils.isEmpty(suffix)){
+ return false;
+ }
+
+ return MediaConstants.IMAGE_SUFFIX.indexOf(suffix.toUpperCase(Locale.getDefault())) != -1;
+ }
+
+ /**
+ * Checks if is audio suffix.
+ *
+ * @param suffix the suffix
+ * @return true, if is audio suffix
+ */
+ public static boolean isAudioSuffix(String suffix){
+ if(TextUtils.isEmpty(suffix)){
+ return false;
+ }
+
+ return MediaConstants.AUDIO_SUFFIX.indexOf(suffix.toUpperCase(Locale.getDefault())) != -1;
+ }
+
+ /**
+ * Checks if is video suffix.
+ *
+ * @param suffix the suffix
+ * @return true, if is video suffix
+ */
+ public static boolean isVideoSuffix(String suffix){
+ if(TextUtils.isEmpty(suffix)){
+ return false;
+ }
+
+ return MediaConstants.VIDEO_SUFFIX.indexOf(suffix.toUpperCase(Locale.getDefault())) != -1;
+ }
+
+ /**
+ * Gets the amr file duration.
+ *
+ * @param context
+ * the context
+ * @param file
+ * the file
+ * @return the amr file duration
+ */
+ public static final int getAmrFileDuration(Context context, File file) {
+ MediaPlayer mp = MediaPlayer.create(context, Uri.fromFile(file));
+ int duration = mp.getDuration();
+ mp.release();
+ return duration;
+ }
+
+ /**
+ * Gets the video file duration.
+ *
+ * @param context
+ * the context
+ * @param file
+ * the file
+ * @return the video file duration
+ */
+ public static final int getVideoFileDuration(Context context, File file) {
+ try {
+ MediaPlayer mediaPlayer = new MediaPlayer();
+ mediaPlayer.setDataSource(file.getAbsolutePath());
+ mediaPlayer.prepare();
+ mediaPlayer.getDuration();
+ int duration = mediaPlayer.getDuration();
+ mediaPlayer.release();
+ return duration;
+ } catch (Exception e) {
+
+ }
+ return -1;
+ }
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/utils/RcsPhoneUtils.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/utils/RcsPhoneUtils.java
new file mode 100644
index 0000000..ee653de
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/utils/RcsPhoneUtils.java
@@ -0,0 +1,113 @@
+/*
+ * Copyright (c) 2014 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.api.utils;
+
+import android.telephony.PhoneNumberUtils;
+
+/**
+ * <p>Title: RcsPhoneUtils class</p>
+ * <p>
+ * Description: The class <code>RcsPhoneUtils</code> is a utility for phone number operation
+ * </p>
+ * <p>
+ * Copyright: Copyright (c) 2014
+ * </p>
+ * <p>
+ * Company: pci-suntek
+ * </p>
+ * @author YE JIE MING
+ * @version 1.0
+ *
+ */
+public abstract class RcsPhoneUtils {
+
+ private static String NATIOIN_CODE = "+86";
+ private static String NATION_AREA_CODE = "0";
+
+ /**
+ * Parse phone to international
+ * @param number
+ * the phone number
+ * @return international phone
+ */
+ public static String parseNumToInternational(String number) {
+ if (number == null) {
+ return null;
+ }
+
+ number = number.trim();
+
+ String phone = PhoneNumberUtils.stripSeparators(number);
+
+ if (phone.startsWith("00" + NATIOIN_CODE.substring(1))) {
+ phone = NATIOIN_CODE + phone.substring(4);
+ } else if ((NATION_AREA_CODE != null) && (NATION_AREA_CODE.length() > 0) &&
+ phone.startsWith(NATION_AREA_CODE)) {
+ phone = NATIOIN_CODE + phone.substring(NATION_AREA_CODE.length());
+ } else if (!phone.startsWith("+")) {
+ phone = NATIOIN_CODE + phone;
+ }
+ return phone;
+ }
+
+ /**
+ * Draw out phone from URI
+ *
+ * @param uri
+ * the URI
+ * @return international phone
+ */
+ public static String drawNumberFromUri(String uri) {
+ if (uri == null) {
+ return null;
+ }
+
+ try {
+ int index0 = uri.indexOf("<");
+ if (index0 != -1) {
+ uri = uri.substring(index0+1, uri.indexOf(">", index0));
+ }
+
+ int index1 = uri.indexOf("tel:");
+ if (index1 != -1) {
+ uri = uri.substring(index1+4);
+ }
+
+ index1 = uri.indexOf("sip:");
+ if (index1 != -1) {
+ int index2 = uri.indexOf("@", index1);
+ uri = uri.substring(index1+4, index2);
+ }
+
+ int index2 = uri.indexOf(";");
+ if (index2 != -1) {
+ uri = uri.substring(0, index2);
+ }
+
+ return parseNumToInternational(uri);
+ } catch(Exception e) {
+ return null;
+ }
+ }
+}
diff --git a/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/utils/SettingUtils.java b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/utils/SettingUtils.java
new file mode 100644
index 0000000..eb31973
--- /dev/null
+++ b/rcs_service_aidl/src/com/suntek/mway/rcs/client/api/utils/SettingUtils.java
@@ -0,0 +1,166 @@
+/*
+ * Copyright (c) 2014 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.api.utils;
+
+import android.content.Context;
+import android.content.SharedPreferences;
+import android.content.SharedPreferences.Editor;
+import android.preference.PreferenceManager;
+
+/**
+ * <p>Title: SettingUtils class</p>
+ * <p>
+ * Description: The class <code>SettingUtils</code> is a utility for setting used by android.content.SharedPreferences
+ * </p>
+ * <p>
+ * Copyright: Copyright (c) 2014
+ * </p>
+ * <p>
+ * Company: pci-suntek
+ * </p>
+ * @author YE JIE MING
+ * @version 1.0
+ *
+ */
+public abstract class SettingUtils {
+
+ /**
+ * Get a string value from SharedPreferences.
+ * @param context android.content.Context
+ * @param name setting name
+ * @param defaultValue the default value of setting name
+ * @return return value of setting name if it exists, or return a specified default value otherwise.
+ */
+ public static String getSetting(Context context, String name,
+ String defaultValue) {
+ final SharedPreferences prefs = PreferenceManager
+ .getDefaultSharedPreferences(context);
+ String value = prefs.getString(name, defaultValue);
+ return value;
+ }
+
+ /**
+ * Set a string value into SharedPreferences
+ * @param context android.content.Context
+ * @param name setting name
+ * @param value setting value
+ * @return true if setting successfully, false otherwise
+ */
+ public static boolean setSetting(Context context, String name, String value) {
+ final SharedPreferences prefs = PreferenceManager
+ .getDefaultSharedPreferences(context);
+ Editor editor = prefs.edit();
+ editor.putString(name, value);
+ return editor.commit();
+ }
+
+ /**
+ * Get a boolean value from SharedPreferences.
+ * @param context android.content.Context
+ * @param name setting name
+ * @param defaultValue the default value of setting name
+ * @return return value of setting name if it exists, or return a specified default value otherwise.
+ */
+ public static boolean getSetting(Context context, String name,
+ boolean defaultValue) {
+ final SharedPreferences prefs = PreferenceManager
+ .getDefaultSharedPreferences(context);
+ boolean value = prefs.getBoolean(name, defaultValue);
+ return value;
+ }
+
+ /**
+ * Set a boolean value into SharedPreferences
+ * @param context android.content.Context
+ * @param name setting name
+ * @param value setting value
+ * @return true if setting successfully, false otherwise
+ */
+ public static boolean setSetting(Context context, String name, boolean value) {
+ final SharedPreferences prefs = PreferenceManager
+ .getDefaultSharedPreferences(context);
+ Editor editor = prefs.edit();
+ editor.putBoolean(name, value);
+ return editor.commit();
+ }
+
+ /**
+ * Get a integer value from SharedPreferences.
+ * @param context android.content.Context
+ * @param name setting name
+ * @param defaultValue the default value of setting name
+ * @return return value of setting name if it exists, or return a specified default value otherwise.
+ */
+ public static int getSetting(Context context, String name, int defaultValue) {
+ final SharedPreferences prefs = PreferenceManager
+ .getDefaultSharedPreferences(context);
+ int value = prefs.getInt(name, defaultValue);
+ return value;
+ }
+
+ /**
+ * Get a long value from SharedPreferences.
+ * @param context android.content.Context
+ * @param name setting name
+ * @param defaultValue the default value of setting name
+ * @return return value of setting name if it exists, or return a specified default value otherwise.
+ */
+ public static long getSetting(Context context, String name, long defaultValue) {
+ final SharedPreferences prefs = PreferenceManager
+ .getDefaultSharedPreferences(context);
+ long value = prefs.getLong(name, defaultValue);
+ return value;
+ }
+
+ /**
+ * Set a integer value into SharedPreferences
+ * @param context android.content.Context
+ * @param name setting name
+ * @param value setting value
+ * @return true if setting successfully, false otherwise
+ */
+ public static boolean setSetting(Context context, String name, int value) {
+ final SharedPreferences prefs = PreferenceManager
+ .getDefaultSharedPreferences(context);
+ Editor editor = prefs.edit();
+ editor.putInt(name, value);
+ return editor.commit();
+ }
+
+ /**
+ * Set a long value into SharedPreferences
+ * @param context android.content.Context
+ * @param name setting name
+ * @param value setting value
+ * @return true if setting successfully, false otherwise
+ */
+ public static boolean setSetting(Context context, String name, long value) {
+ final SharedPreferences prefs = PreferenceManager
+ .getDefaultSharedPreferences(context);
+ Editor editor = prefs.edit();
+ editor.putLong(name, value);
+ return editor.commit();
+ }
+
+}
diff --git a/rcs_service_api/Android.mk b/rcs_service_api/Android.mk
new file mode 100644
index 0000000..5e077e7
--- /dev/null
+++ b/rcs_service_api/Android.mk
@@ -0,0 +1,13 @@
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := $(call all-java-files-under, src)
+
+LOCAL_MODULE_TAGS := optional
+LOCAL_MODULE := rcs_service_api
+
+LOCAL_STATIC_JAVA_LIBRARIES := \
+ rcs_service_aidl
+
+include $(BUILD_STATIC_JAVA_LIBRARY)
\ No newline at end of file
diff --git a/rcs_service_api/src/com/suntek/mway/rcs/client/api/ClientApi.java b/rcs_service_api/src/com/suntek/mway/rcs/client/api/ClientApi.java
new file mode 100644
index 0000000..1278397
--- /dev/null
+++ b/rcs_service_api/src/com/suntek/mway/rcs/client/api/ClientApi.java
@@ -0,0 +1,146 @@
+/*
+ * Copyright (c) 2014 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.api;
+
+import java.util.List;
+
+import android.app.ActivityManager;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.ServiceConnection;
+import android.os.RemoteException;
+import android.util.Log;
+
+import com.suntek.mway.rcs.client.api.constant.APIConstant;
+import com.suntek.mway.rcs.client.api.util.log.LogHelper;
+
+public abstract class ClientApi implements ClientApiInterface {
+
+ /** check whether the service is binded or not */
+ private boolean isBinded = false;
+
+ private String serviceName = null;
+ private ServiceConnection mConnection = null;
+ protected RCSServiceListener rcsListener = null;
+ protected Context context = null;
+
+ protected boolean isNormallyClosed = false;
+ protected int reconnectionTimes = 1;
+ protected final int MAX_RECONECTION_TIMES = 10;
+
+ public ClientApi(String theService) {
+ // TODO Auto-generated constructor stub
+ serviceName = theService;
+ }
+
+ /**
+ * judge the bind state about remote service.
+ * @return true if binded, return false if unbinded.
+ */
+ public boolean isBinded() {
+ return isBinded;
+ }
+
+ public void initServiceConnect(ServiceConnection theServiceConnection) {
+ mConnection = theServiceConnection;
+ }
+
+ public void init(Context context, RCSServiceListener listener) {
+ this.rcsListener = listener;
+ this.context = context;
+ if (context.getPackageName() != null
+ && !"".equals(context.getPackageName())) {
+ LogHelper.MYLOG_PATH_SDCARD_DIR = LogHelper.MYLOG_PATH_SDCARD_DIR
+ .replace("com.suntek.mway.rcs.service.api",
+ context.getPackageName());
+ }
+ // TODO Auto-generated constructor stub
+ Intent intent = new Intent();
+// intent.setAction(serviceName);
+ intent.setClassName("com.suntek.mway.rcs.app.service", serviceName);
+ isBinded = context.bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
+ LogHelper.d("bind " + serviceName + "--> result:" + isBinded);
+ }
+
+ public void destory(Context context) {
+ try {
+ if (isBinded) {
+ LogHelper.d("destory()--> to destroy service : " + serviceName);
+ isNormallyClosed = true;
+ context.unbindService(mConnection);
+ }
+ else {
+ LogHelper.i("destory()--> service("+serviceName+") already unbinded, do not need to destroy.");
+ }
+ } catch (Exception e) {
+ LogHelper.e("unbind " + serviceName + "--> result:" + e.getMessage(),e);
+ }finally {
+ isBinded = false;
+ }
+ }
+
+
+ /**
+ * check the service is start or not.
+ * @param ctx android.content.Context
+ * @return true if the service is started , false otherwise.
+ */
+ public static boolean isMainServiceStarted(Context ctx) {
+ ActivityManager activityManager = (ActivityManager)ctx.getSystemService(Context.ACTIVITY_SERVICE);
+ List<ActivityManager.RunningServiceInfo> serviceList = activityManager.getRunningServices(Integer.MAX_VALUE);
+ for(int i = 0; i < serviceList.size(); i++) {
+ ActivityManager.RunningServiceInfo serviceInfo = serviceList.get(i);
+ ComponentName serviceName = serviceInfo.service;
+ if (serviceName.getClassName().equals(APIConstant.MAIN_SERVICE_NAME)) {
+ if (serviceInfo.pid != 0) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+ }
+ return false;
+ }
+
+ protected void notifyServiceConnected() {
+ if (rcsListener != null) {
+ try {
+ rcsListener.onServiceConnected();
+ } catch (RemoteException e) {
+ LogHelper.e(e.getMessage(), e);
+ }
+ }
+ }
+
+ protected void notifyServiceDisconnected() {
+ if (rcsListener != null) {
+ try {
+ rcsListener.onServiceDisconnected();
+ } catch (RemoteException e) {
+ LogHelper.e(e.getMessage(), e);
+ }
+ }
+ }
+}
diff --git a/rcs_service_api/src/com/suntek/mway/rcs/client/api/ClientApiInterface.java b/rcs_service_api/src/com/suntek/mway/rcs/client/api/ClientApiInterface.java
new file mode 100644
index 0000000..d6638af
--- /dev/null
+++ b/rcs_service_api/src/com/suntek/mway/rcs/client/api/ClientApiInterface.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright (c) 2014 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.api;
+
+import android.content.Context;
+
+public interface ClientApiInterface {
+
+ void init(Context context, RCSServiceListener listener);
+
+ void destory(Context context);
+
+}
diff --git a/rcs_service_api/src/com/suntek/mway/rcs/client/api/RCSServiceListener.java b/rcs_service_api/src/com/suntek/mway/rcs/client/api/RCSServiceListener.java
new file mode 100644
index 0000000..0a157ba
--- /dev/null
+++ b/rcs_service_api/src/com/suntek/mway/rcs/client/api/RCSServiceListener.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) 2014 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.api;
+
+import com.suntek.mway.rcs.client.api.IRCSServiceListener;
+
+public abstract class RCSServiceListener extends IRCSServiceListener.Stub{
+}
diff --git a/rcs_service_api/src/com/suntek/mway/rcs/client/api/autoconfig/RcsAccountApi.java b/rcs_service_api/src/com/suntek/mway/rcs/client/api/autoconfig/RcsAccountApi.java
new file mode 100644
index 0000000..5762fea
--- /dev/null
+++ b/rcs_service_api/src/com/suntek/mway/rcs/client/api/autoconfig/RcsAccountApi.java
@@ -0,0 +1,159 @@
+/*
+ * Copyright (c) 2014 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.api.autoconfig;
+
+import java.util.Locale;
+
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.ServiceConnection;
+import android.os.IBinder;
+import android.os.RemoteException;
+
+import com.suntek.mway.rcs.client.api.ClientApi;
+import com.suntek.mway.rcs.client.api.autoconfig.callback.AccountEventListener;
+import com.suntek.mway.rcs.client.api.setting.IRcsSettingApi;
+import com.suntek.mway.rcs.client.api.setting.LoginUser;
+import com.suntek.mway.rcs.client.api.setting.RcsUserProfileInfo;
+import com.suntek.mway.rcs.client.api.setting.SystemInfo;
+import com.suntek.mway.rcs.client.api.util.ServiceDisconnectedException;
+import com.suntek.mway.rcs.client.api.util.VerificationUtil;
+import com.suntek.mway.rcs.client.api.util.log.LogHelper;
+
+public class RcsAccountApi extends ClientApi {
+ /** The service name. */
+ private static String serviceName = "com.suntek.mway.rcs.app.service.api.impl.setting.RcsSettingApiService";
+
+ /** The api. */
+ private IRcsSettingApi myApi;
+
+ /** The service connection. */
+ private ServiceConnection mConnection = new ServiceConnection() {
+ public void onServiceConnected(ComponentName className, IBinder service) {
+ myApi = IRcsSettingApi.Stub.asInterface(service);
+ notifyServiceConnected();
+ LogHelper.d("IRcsSettingApi have success connect, api="+myApi);
+ }
+
+ public void onServiceDisconnected(ComponentName className) {
+ if(isNormallyClosed || reconnectionTimes > MAX_RECONECTION_TIMES) {
+ LogHelper.d("IRcsSettingApi api disconnect service");
+ myApi = null;
+ notifyServiceDisconnected();
+ } else {
+ LogHelper.d("illegal call IRcsSettingApi api disconnect service :"
+ + reconnectionTimes);
+ init(context, rcsListener);
+ if (!isBinded()) {
+ // app is uninstalled
+ myApi = null;
+ notifyServiceDisconnected();
+ }
+ reconnectionTimes++;
+ }
+ }
+ };
+
+ public RcsAccountApi() {
+ super(serviceName);
+ super.initServiceConnect(mConnection);
+ }
+
+
+ public RcsUserProfileInfo getRcsUserProfileInfo() throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ try {
+ return myApi.getRcsUserProfileInfo();
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ return null;
+ }
+
+ public SystemInfo getNetworkInfo() throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ try {
+ return myApi.getNetworkInfo();
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ return null;
+ }
+
+ public void acceptAutoReg() throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ try {
+ myApi.acceptAutoReg();
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ }
+
+ public boolean isOnline() throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ try {
+ return myApi.isOnline();
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ return false;
+ }
+
+ private void login(LoginUser loginUser,AccountEventListener listener) throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ }
+
+ private void logout(LoginUser loginUser,AccountEventListener listener) throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ }
+
+ private void startService(Context context, AccountEventListener listener) throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ }
+
+ private void stopService(Context context, AccountEventListener listener) throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ }
+
+ public void checkOtp(String otp) throws RemoteException {
+ LogHelper.i(String.format(Locale.getDefault(),
+ "enter method:checkOtp. [otp]=%s", otp));
+ try {
+ myApi.checkOtp(otp);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ throw new RemoteException();
+ }
+ }
+
+ public void start() throws ServiceDisconnectedException {
+ LogHelper.i(String.format( Locale.getDefault(),"enter method:start. "));
+ VerificationUtil.ApiIsNull(myApi);
+ try {
+ myApi.start();
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ }
+}
diff --git a/rcs_service_api/src/com/suntek/mway/rcs/client/api/autoconfig/callback/AccountEventListener.java b/rcs_service_api/src/com/suntek/mway/rcs/client/api/autoconfig/callback/AccountEventListener.java
new file mode 100644
index 0000000..10dbdcd
--- /dev/null
+++ b/rcs_service_api/src/com/suntek/mway/rcs/client/api/autoconfig/callback/AccountEventListener.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (c) 2014 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.api.autoconfig.callback;
+
+import com.suntek.mway.rcs.client.api.setting.callback.IAccountEventListener;
+
+public abstract class AccountEventListener extends IAccountEventListener.Stub{
+
+}
diff --git a/rcs_service_api/src/com/suntek/mway/rcs/client/api/blacklist/impl/BlackListApi.java b/rcs_service_api/src/com/suntek/mway/rcs/client/api/blacklist/impl/BlackListApi.java
new file mode 100644
index 0000000..5609775
--- /dev/null
+++ b/rcs_service_api/src/com/suntek/mway/rcs/client/api/blacklist/impl/BlackListApi.java
@@ -0,0 +1,186 @@
+/*
+ * Copyright (c) 2014 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.api.blacklist.impl;
+
+import java.util.List;
+import java.util.Locale;
+
+import android.content.ComponentName;
+import android.content.ServiceConnection;
+import android.os.IBinder;
+
+import com.suntek.mway.rcs.client.api.ClientApi;
+import com.suntek.mway.rcs.client.api.blacklist.IBlackListApi;
+import com.suntek.mway.rcs.client.api.util.ServiceDisconnectedException;
+import com.suntek.mway.rcs.client.api.util.VerificationUtil;
+import com.suntek.mway.rcs.client.api.util.log.LogHelper;
+
+/**
+ * <p>Title: BlackListApi class</p>
+ * <p>
+ * Description: The class <code>BlackListApi</code> offers the functions of
+ * operating the blacklist information.
+ * In order to use BlackListApi, one must to initialize the API
+ * in the method onCreate() in UI(Activity for example).<p></p>
+ * Here is the pseudo code example:<p></p>
+ * blacklistApi = new BlackListApi();<br/>
+ * blacklistApi.init(this);
+ * </p>
+ * <p>
+ * Copyright: Copyright (c) 2014
+ * </p>
+ * <p>
+ * Company: pci-suntek
+ * </p>
+ * @author YE JIE MING
+ * @version 1.0
+ *
+ */
+public class BlackListApi extends ClientApi {
+
+ /** The service name. */
+ private static String serviceName = "com.suntek.mway.rcs.app.service.api.impl.blacklist.BlacklistApiService";
+
+ /** The api. */
+ private static IBlackListApi myApi;
+
+ /** The service connection. */
+ private ServiceConnection mConnection = new ServiceConnection() {
+ public void onServiceConnected(ComponentName className, IBinder service) {
+ myApi = IBlackListApi.Stub.asInterface(service);
+ notifyServiceConnected();
+ LogHelper.d("IBlackListApi have success connect, api="+myApi);
+ }
+
+ public void onServiceDisconnected(ComponentName className) {
+ if(isNormallyClosed || reconnectionTimes > MAX_RECONECTION_TIMES) {
+ LogHelper.d("IBlackListApi api disconnect service");
+ myApi = null;
+ notifyServiceDisconnected();
+ } else {
+ LogHelper.d("illegal call IBlackListApi api disconnect service :"
+ + reconnectionTimes);
+ init(context, rcsListener);
+ if (!isBinded()) {
+ // app is uninstalled
+ myApi = null;
+ notifyServiceDisconnected();
+ }
+ reconnectionTimes++;
+ }
+ }
+ };
+
+ /**
+ * Instantiates a new black list api.
+ */
+ public BlackListApi() {
+ super(serviceName);
+ super.initServiceConnect(mConnection);
+ }
+
+ /**
+ * Adds the number to blacklist.
+ *
+ * @param number the number
+ */
+ public boolean add(String number) throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format( Locale.getDefault(),"enter method add. [number]=%s", number));
+ if (!VerificationUtil.isNumber(number)) {
+ LogHelper.i("number field value error");
+ return false;
+ }
+ try {
+ return myApi.add(VerificationUtil.formatNumber(number));
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ return false;
+ }
+
+ /**
+ * Removes the number from blacklist.
+ *
+ * @param number the number
+ */
+ public boolean remove(String number) throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format( Locale.getDefault(),"enter method remove. [number]=%s", number));
+ if (!VerificationUtil.isNumber(number)) {
+ LogHelper.i("number field value error");
+ return false;
+ }
+ try {
+ return myApi.remove(VerificationUtil.formatNumber(number));
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ return false;
+ }
+
+ /**
+ * Clear the blacklist.
+ */
+ public void clear() throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format( Locale.getDefault(),"enter method clear. "));
+ try {
+ myApi.clear();
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ }
+
+ /**
+ * Check whether the number is in blacklist or not.
+ *
+ * @param number the number
+ * @return true, if successful
+ */
+ public boolean checkIsBlack(String number) throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format( Locale.getDefault(),"enter method checkIsBlack. [number]=%s", number));
+ if (!VerificationUtil.isNumber(number)) {
+ LogHelper.i("number field value error");
+ return false;
+ }
+ try {
+ return myApi.checkIsBlack(VerificationUtil.formatNumber(number));
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ return false;//default value is non-black user
+ }
+
+ public List<String> getList() throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ try {
+ return myApi.getList();
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ return null;
+ }
+}
diff --git a/rcs_service_api/src/com/suntek/mway/rcs/client/api/capability/callback/CapabiltyListener.java b/rcs_service_api/src/com/suntek/mway/rcs/client/api/capability/callback/CapabiltyListener.java
new file mode 100644
index 0000000..1869ede
--- /dev/null
+++ b/rcs_service_api/src/com/suntek/mway/rcs/client/api/capability/callback/CapabiltyListener.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright (c) 2014 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.api.capability.callback;
+
+
+import com.suntek.mway.rcs.client.api.plugin.callback.ICapabiltyListener;
+
+public abstract class CapabiltyListener extends ICapabiltyListener.Stub{
+
+}
diff --git a/rcs_service_api/src/com/suntek/mway/rcs/client/api/capability/impl/CapabilityApi.java b/rcs_service_api/src/com/suntek/mway/rcs/client/api/capability/impl/CapabilityApi.java
new file mode 100644
index 0000000..652eff5
--- /dev/null
+++ b/rcs_service_api/src/com/suntek/mway/rcs/client/api/capability/impl/CapabilityApi.java
@@ -0,0 +1,90 @@
+/*
+ * Copyright (c) 2014 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.api.capability.impl;
+
+import java.util.Locale;
+
+import android.content.ComponentName;
+import android.content.ServiceConnection;
+import android.os.IBinder;
+
+import com.suntek.mway.rcs.client.api.ClientApi;
+import com.suntek.mway.rcs.client.api.capability.ICapabilityApi;
+import com.suntek.mway.rcs.client.api.capability.callback.CapabiltyListener;
+import com.suntek.mway.rcs.client.api.util.ServiceDisconnectedException;
+import com.suntek.mway.rcs.client.api.util.VerificationUtil;
+import com.suntek.mway.rcs.client.api.util.log.LogHelper;
+
+public class CapabilityApi extends ClientApi {
+ private static String serviceName = "com.suntek.mway.rcs.app.service.api.impl.capability.CapabilityApiService";
+ ICapabilityApi myApi;
+
+ private ServiceConnection mConnection = new ServiceConnection() {
+ public void onServiceConnected(ComponentName className, IBinder service) {
+ LogHelper.d("client api connect service");
+ notifyServiceConnected();
+ myApi = ICapabilityApi.Stub.asInterface(service);
+ }
+
+
+ public void onServiceDisconnected(ComponentName className) {
+ if(isNormallyClosed || reconnectionTimes > MAX_RECONECTION_TIMES) {
+ LogHelper.d("client api disconnect service");
+ myApi = null;
+ notifyServiceDisconnected();
+ } else {
+ LogHelper.d("illegal call client api disconnect service :"
+ + reconnectionTimes);
+ init(context, rcsListener);
+ if (!isBinded()) {
+ // app is uninstalled
+ myApi = null;
+ notifyServiceDisconnected();
+ }
+ reconnectionTimes++;
+ }
+ }
+ };
+
+ public CapabilityApi() {
+ // TODO Auto-generated constructor stub
+ super(serviceName);
+ super.initServiceConnect(mConnection);
+ }
+
+ public void findCapabilityByNumber(String number,CapabiltyListener listener) throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format( Locale.getDefault(),"enter method findCapabilityByNumber. [number]=%s", number));
+ if (!VerificationUtil.isNumber(number)) {
+ LogHelper.i("number field value error");
+ return;
+ }
+ try {
+ myApi.findCapabilityByNumber(VerificationUtil.formatNumber(number), listener);
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ LogHelper.e(e.getMessage(),e);
+ }
+ }
+}
diff --git a/rcs_service_api/src/com/suntek/mway/rcs/client/api/emoticon/EmoticonApi.java b/rcs_service_api/src/com/suntek/mway/rcs/client/api/emoticon/EmoticonApi.java
new file mode 100644
index 0000000..bcf034d
--- /dev/null
+++ b/rcs_service_api/src/com/suntek/mway/rcs/client/api/emoticon/EmoticonApi.java
@@ -0,0 +1,299 @@
+/*
+ * Copyright (c) 2014 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.api.emoticon;
+
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+
+import android.content.ComponentName;
+import android.content.ServiceConnection;
+import android.os.IBinder;
+
+import com.suntek.mway.rcs.client.api.ClientApi;
+import com.suntek.mway.rcs.client.api.plugin.callback.IEmoticonCallbackApi;
+import com.suntek.mway.rcs.client.api.plugin.callback.IEmoticonCanSendCallback;
+import com.suntek.mway.rcs.client.api.plugin.callback.IEmoticonPackagesNetCallbackApi;
+import com.suntek.mway.rcs.client.api.plugin.callback.IEmoticonSetSuccessDownListener;
+import com.suntek.mway.rcs.client.api.plugin.entity.emoticon.EmojiPackageBO;
+import com.suntek.mway.rcs.client.api.plugin.entity.emoticon.EmoticonBO;
+import com.suntek.mway.rcs.client.api.plugin.entity.emoticon.ResultBO;
+import com.suntek.mway.rcs.client.api.plugin.entity.emoticon.UserBO;
+import com.suntek.mway.rcs.client.api.util.ServiceDisconnectedException;
+import com.suntek.mway.rcs.client.api.util.VerificationUtil;
+import com.suntek.mway.rcs.client.api.util.log.LogHelper;
+
+public class EmoticonApi extends ClientApi {
+ private static String serviceName = "com.suntek.mway.rcs.app.service.api.impl.emoticon.EmoticonApiService";
+ IEmoticonApi myApi;
+
+ private ServiceConnection mConnection = new ServiceConnection() {
+ public void onServiceConnected(ComponentName className, IBinder service) {
+ LogHelper.d("client api connect service");
+ notifyServiceConnected();
+ myApi = IEmoticonApi.Stub.asInterface(service);
+ }
+
+ public void onServiceDisconnected(ComponentName className) {
+ if(isNormallyClosed || reconnectionTimes > MAX_RECONECTION_TIMES) {
+ LogHelper.d("client api disconnect service");
+ myApi = null;
+ notifyServiceDisconnected();
+ } else {
+ LogHelper.d("illegal call client api disconnect service :"
+ + reconnectionTimes);
+ init(context, rcsListener);
+ if (!isBinded()) {
+ // app is uninstalled
+ myApi = null;
+ notifyServiceDisconnected();
+ }
+ reconnectionTimes++;
+ }
+ }
+ };
+
+ public EmoticonApi() {
+ super(serviceName);
+ super.initServiceConnect(mConnection);
+ }
+
+ public EmoticonBO getEmoticon(String emoticonId) throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format(Locale.getDefault(),
+ "enter method:getEmoticon. [emoticonId]=%s", emoticonId));
+ try {
+ return myApi.getEmoticon(emoticonId);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ return null;
+ }
+
+ public List<EmojiPackageBO> queryEmojiPackages() throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format(Locale.getDefault(),
+ "enter method:queryEmojiPackages. "));
+ try {
+ return myApi.queryEmojiPackages();
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ return null;
+ }
+
+ public List<EmoticonBO> queryEmoticons(String packageId) throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format(Locale.getDefault(),
+ "enter method:queryEmoticons. [packageId]=%s", packageId));
+ try {
+ return myApi.queryEmoticons(packageId);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ return null;
+ }
+
+ public EmoticonBO decodeEmoticon(String eid) throws ServiceDisconnectedException {
+ LogHelper.i(String.format( Locale.getDefault(),"enter method:decodeEmoticon. [eid]=%s", eid));
+ VerificationUtil.ApiIsNull(myApi);
+ try {
+ return myApi.decodeEmoticon(eid);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ return null;
+ }
+
+ public byte[] decrypt2Bytes(String emoticonId, int emoFileType) throws ServiceDisconnectedException {
+ LogHelper.i(String.format( Locale.getDefault(),"enter method:decrypt2Bytes. [emoticonId,emoFileType]=%s,%s", emoticonId,emoFileType));
+ VerificationUtil.ApiIsNull(myApi);
+ try {
+ return myApi.decrypt2Bytes(emoticonId, emoFileType);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ return null;
+ }
+
+ public void doAcceptEmoticon(String emoticonId, IEmoticonCallbackApi callback) throws ServiceDisconnectedException {
+ LogHelper.i(String.format( Locale.getDefault(),"enter method:doAcceptEmoticon. [emoticonId]=%s", emoticonId));
+ VerificationUtil.ApiIsNull(myApi);
+ try {
+ myApi.doAcceptEmoticon(emoticonId, callback);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ }
+
+ public boolean emojiPackageExist(String packageId) throws ServiceDisconnectedException {
+ LogHelper.i(String.format( Locale.getDefault(),"enter method:emojiPackageExist. [packageId]=%s", packageId));
+ VerificationUtil.ApiIsNull(myApi);
+ try {
+ return myApi.emojiPackageExist(packageId);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ return false;
+ }
+
+ public String encodeEmoticon(String emoticonId) throws ServiceDisconnectedException {
+ LogHelper.i(String.format( Locale.getDefault(),"enter method:encodeEmoticon. [emoticonId]=%s", emoticonId));
+ VerificationUtil.ApiIsNull(myApi);
+ try {
+ return myApi.encodeEmoticon(emoticonId);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ return null;
+ }
+
+ public UserBO getCurrentUser() throws ServiceDisconnectedException {
+ LogHelper.i(String.format( Locale.getDefault(),"enter method:getCurrentUser. "));
+ VerificationUtil.ApiIsNull(myApi);
+ try {
+ return myApi.getCurrentUser();
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ return null;
+ }
+
+ public boolean getCurrentUserState() throws ServiceDisconnectedException {
+ LogHelper.i(String.format( Locale.getDefault(),"enter method:getCurrentUserState. "));
+ VerificationUtil.ApiIsNull(myApi);
+ try {
+ return myApi.getCurrentUserState();
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ return false;
+ }
+
+ public EmojiPackageBO getEmojiPackage(String packageId) throws ServiceDisconnectedException {
+ LogHelper.i(String.format( Locale.getDefault(),"enter method:getEmojiPackage. [packageId]=%s", packageId));
+ VerificationUtil.ApiIsNull(myApi);
+ try {
+ return myApi.getEmojiPackage(packageId);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ return null;
+ }
+
+ public EmojiPackageBO getEmojiPackageWithDetail(String packageId) throws ServiceDisconnectedException {
+ LogHelper.i(String.format( Locale.getDefault(),"enter method:getEmojiPackageWithDetail. [packageId]=%s", packageId));
+ VerificationUtil.ApiIsNull(myApi);
+ try {
+ return myApi.getEmojiPackageWithDetail(packageId);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ return null;
+ }
+
+ public String getEmoticonId(String emoticonId) throws ServiceDisconnectedException {
+ LogHelper.i(String.format( Locale.getDefault(),"enter method:getEmoticonId. [emoticonId]=%s", emoticonId));
+ VerificationUtil.ApiIsNull(myApi);
+ try {
+ return myApi.getEmoticonId(emoticonId);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ return null;
+ }
+
+ public String getStorageRootPath() throws ServiceDisconnectedException {
+ LogHelper.i(String.format( Locale.getDefault(),"enter method:getStorageRootPath. "));
+ VerificationUtil.ApiIsNull(myApi);
+ try {
+ return myApi.getStorageRootPath();
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ return null;
+ }
+
+ public void isCanSend(String emoticonId, String phone, IEmoticonCanSendCallback cansendCallback) throws ServiceDisconnectedException {
+ LogHelper.i(String.format( Locale.getDefault(),"enter method:isCanSend. [emoticonId, phone]=%s, %s", emoticonId, phone));
+ VerificationUtil.ApiIsNull(myApi);
+ try {
+ myApi.isCanSend(emoticonId, phone, cansendCallback);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ }
+
+ public void queryEmojiPackagesNet(IEmoticonPackagesNetCallbackApi callback) throws ServiceDisconnectedException {
+ LogHelper.i(String.format( Locale.getDefault(),"enter method:queryEmojiPackagesNet. [callback]=%s", callback.toString()));
+ VerificationUtil.ApiIsNull(myApi);
+ try {
+ myApi.queryEmojiPackagesNet(callback);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ }
+
+ public List<EmojiPackageBO> queryEmojiPackagesWithDetail() throws ServiceDisconnectedException {
+ LogHelper.i(String.format( Locale.getDefault(),"enter method:queryEmojiPackagesWithDetail."));
+ VerificationUtil.ApiIsNull(myApi);
+ try {
+ return myApi.queryEmojiPackagesWithDetail();
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ return null;
+ }
+
+ public List<EmoticonBO> queryEmoticonName(String emoticonName) throws ServiceDisconnectedException {
+ LogHelper.i(String.format( Locale.getDefault(),"enter method:queryEmoticonName. [emoticonName]=%s", emoticonName));
+ VerificationUtil.ApiIsNull(myApi);
+ try {
+ return myApi.queryEmoticonName(emoticonName);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ return null;
+ }
+
+ public void setSuccessDownListener(IEmoticonSetSuccessDownListener downListener) throws ServiceDisconnectedException {
+ LogHelper.i(String.format( Locale.getDefault(),"enter method:setSuccessDownListener. "));
+ VerificationUtil.ApiIsNull(myApi);
+ try {
+ myApi.setSuccessDownListener(downListener);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ }
+
+ public void unreSuccessListenter() throws ServiceDisconnectedException {
+ LogHelper.i(String.format( Locale.getDefault(),"enter method:unreSuccessListenter. "));
+ VerificationUtil.ApiIsNull(myApi);
+ try {
+ myApi.unreSuccessListenter();
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ }
+}
diff --git a/rcs_service_api/src/com/suntek/mway/rcs/client/api/exception/MemberFullException.java b/rcs_service_api/src/com/suntek/mway/rcs/client/api/exception/MemberFullException.java
new file mode 100644
index 0000000..0c99765
--- /dev/null
+++ b/rcs_service_api/src/com/suntek/mway/rcs/client/api/exception/MemberFullException.java
@@ -0,0 +1,60 @@
+/*
+ * Copyright (c) 2014 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.api.exception;
+
+/**
+ *
+ * <p>
+ * Title:Class of Member Full Exception.
+ * </p>
+ * <p>
+ * Description:That throws when the count of group members over maximum
+ * </p>
+ * <p>
+ * Copyright:Copyright (c) 2014
+ * </p>
+ * <p>
+ * Company:pci-suntek
+ * </p>
+ *
+ * @author YFB
+ * @version 1.0
+ *
+ */
+public class MemberFullException extends Exception {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+ public MemberFullException() {
+ super();
+ }
+
+ public MemberFullException(String message) {
+ super(message);
+ }
+
+}
diff --git a/rcs_service_api/src/com/suntek/mway/rcs/client/api/exception/OperatorException.java b/rcs_service_api/src/com/suntek/mway/rcs/client/api/exception/OperatorException.java
new file mode 100644
index 0000000..ff816f8
--- /dev/null
+++ b/rcs_service_api/src/com/suntek/mway/rcs/client/api/exception/OperatorException.java
@@ -0,0 +1,60 @@
+/*
+ * Copyright (c) 2014 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.api.exception;
+
+/**
+ *
+ * <p>
+ * Title:Class of Operator Exception.
+ * </p>
+ * <p>
+ * Description:That throws when Operation abnormal
+ * </p>
+ * <p>
+ * Copyright:Copyright (c) 2014
+ * </p>
+ * <p>
+ * Company:pci-suntek
+ * </p>
+ *
+ * @author YFB
+ * @version 1.0
+ *
+ */
+public class OperatorException extends Exception {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+ public OperatorException() {
+ super();
+ }
+
+ public OperatorException(String message) {
+ super(message);
+ }
+
+}
diff --git a/rcs_service_api/src/com/suntek/mway/rcs/client/api/im/impl/MessageApi.java b/rcs_service_api/src/com/suntek/mway/rcs/client/api/im/impl/MessageApi.java
new file mode 100644
index 0000000..50821ca
--- /dev/null
+++ b/rcs_service_api/src/com/suntek/mway/rcs/client/api/im/impl/MessageApi.java
@@ -0,0 +1,1641 @@
+/*
+ * Copyright (c) 2014 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.api.im.impl;
+
+import java.util.List;
+import java.util.Locale;
+
+import android.content.ComponentName;
+import android.content.ServiceConnection;
+import android.os.IBinder;
+
+import com.suntek.mway.rcs.client.api.ClientApi;
+import com.suntek.mway.rcs.client.api.constant.APIConstant;
+import com.suntek.mway.rcs.client.api.contacts.RCSContact;
+import com.suntek.mway.rcs.client.api.exception.OperatorException;
+import com.suntek.mway.rcs.client.api.im.IInstantMessageApi;
+import com.suntek.mway.rcs.client.api.provider.model.ChatMessage;
+import com.suntek.mway.rcs.client.api.provider.model.FavoriteMessage;
+import com.suntek.mway.rcs.client.api.provider.model.GroupChatModel;
+import com.suntek.mway.rcs.client.api.provider.model.MessageSessionModel;
+import com.suntek.mway.rcs.client.api.provider.model.SimpleMsg;
+import com.suntek.mway.rcs.client.api.provider.model.TopMessageData;
+import com.suntek.mway.rcs.client.api.util.FileDurationException;
+import com.suntek.mway.rcs.client.api.util.FileSuffixException;
+import com.suntek.mway.rcs.client.api.util.FileTransferException;
+import com.suntek.mway.rcs.client.api.util.ServiceDisconnectedException;
+import com.suntek.mway.rcs.client.api.util.VerificationUtil;
+import com.suntek.mway.rcs.client.api.util.log.LogHelper;
+
+public class MessageApi extends ClientApi {
+
+ private static String serviceName = "com.suntek.mway.rcs.app.service.api.impl.im.MessageApiService";
+
+ IInstantMessageApi myApi;
+ private ServiceConnection mConnection = new ServiceConnection() {
+ public void onServiceConnected(ComponentName className, IBinder service) {
+ LogHelper.d("client api connect service");
+ notifyServiceConnected();
+ myApi = IInstantMessageApi.Stub.asInterface(service);
+ }
+
+ public void onServiceDisconnected(ComponentName className) {
+ if(isNormallyClosed || reconnectionTimes > MAX_RECONECTION_TIMES) {
+ LogHelper.d("client api disconnect service");
+ myApi = null;
+ notifyServiceDisconnected();
+ } else {
+ LogHelper.d("illegal call client api disconnect service :"
+ + reconnectionTimes);
+ init(context, rcsListener);
+ if (!isBinded()) {
+ // app is uninstalled
+ myApi = null;
+ notifyServiceDisconnected();
+ }
+ reconnectionTimes++;
+ }
+ }
+ };
+
+ public MessageApi() {
+ // TODO Auto-generated constructor stub
+ super(serviceName);
+ super.initServiceConnect(mConnection);
+ }
+
+ public void sendTextMessage(long thread_id, String number, String text,
+ int burnFlag, int barCycle) throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper
+ .i(String.format(
+ Locale.getDefault(),
+ "enter method sendTextMessage. [thread_id,number,text,burnFlag,barCycle]=%d,%s,%s,%d,%d",
+ thread_id, number, text, burnFlag, barCycle));
+ if ("".equals(text.trim())) {
+ LogHelper.i("text value is null/Space");
+ return;
+ }
+ if (!VerificationUtil.isNumber(number)) {
+ LogHelper.i("number field value error");
+ return;
+ }
+ if (!VerificationUtil.isBurnFlagCorrect(burnFlag)) {
+ LogHelper.i("burnFlag field must be 0 or 1");
+ return;
+ }
+ if (barCycle < 0) {
+ LogHelper.i("barCycle field must be a positive int");
+ return;
+ }
+ try {
+ myApi.sendTextMessage(thread_id, VerificationUtil.formatNumber(number), text, burnFlag, barCycle);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ }
+
+ public void sendImageFile(long thread_id, long sms_id, String number,
+ String filePath, int burnFlag, int barCycle, int quality)
+ throws ServiceDisconnectedException, FileSuffixException, FileTransferException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper
+ .i(String.format(
+ Locale.getDefault(),
+ "enter method sendImageFile. [thread_id,sms_id,number,filePath,burnFlag,barCycle,quality]=%d,%d,%s,%s,%d,%d,%d",
+ thread_id, sms_id, number, filePath, burnFlag,
+ barCycle, quality));
+ VerificationUtil.isImageFile(filePath);
+
+ if (!VerificationUtil.isNumber(number)) {
+ LogHelper.i("number field value error");
+ return;
+ }
+ if (!VerificationUtil.isBurnFlagCorrect(burnFlag)) {
+ LogHelper.i("burnFlag field must be 0 or 1");
+ return;
+ }
+ if (barCycle < 0) {
+ LogHelper.i("barCycle field must be a positive int");
+ return;
+ }
+ if (quality < 0 || quality > 100) {
+ LogHelper.i("quality field value must be between 0 to 100");
+ return;
+ }
+
+ if( quality == 100 ) {
+ VerificationUtil.isFileSizeToLarge(filePath, this.getImageFtMaxSize());
+ }
+
+ try {
+ myApi.sendImageFile(thread_id, sms_id, VerificationUtil.formatNumber(number), filePath, burnFlag,
+ barCycle, quality);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ }
+
+ public void sendAudioFile(long thread_id, long sms_id, String number,
+ String filePath, int recordTime, int burnFlag, int barCycle, boolean isRecord)
+ throws ServiceDisconnectedException, FileSuffixException, FileTransferException, FileDurationException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper
+ .i(String.format(
+ Locale.getDefault(),
+ "enter method sendAudioFile. [thread_id,sms_id,number,filePath,recordTime,burnFlag,barCycle,isRecord]=%d,%d,%s,%s,%d,%d,%d,%b",
+ thread_id, sms_id, number, filePath, recordTime,
+ burnFlag, barCycle, isRecord));
+ VerificationUtil.isAudioFile(filePath);
+ if(isRecord){
+ VerificationUtil.isAudioDurationToLong(context, filePath, this.getAudioMaxTime(), recordTime);//VerificationUtil.getAudioMaxTime(context)
+ }
+ VerificationUtil.isFileSizeToLarge(filePath, this.getVideoFtMaxSize());//VerificationUtil.getVideoFtMaxSize(context)
+ if (!VerificationUtil.isNumber(number)) {
+ LogHelper.i("number field value error");
+ return;
+ }
+ if (!VerificationUtil.isBurnFlagCorrect(burnFlag)) {
+ LogHelper.i("burnFlag field must be 0 or 1");
+ return;
+ }
+ if (barCycle < 0) {
+ LogHelper.i("barCycle field must be a positive int");
+ return;
+ }
+ try {
+ myApi.sendAudioFile(thread_id, sms_id, VerificationUtil.formatNumber(number), filePath,
+ recordTime, burnFlag, barCycle);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ }
+
+ public void sendVideoFile(long thread_id, long sms_id, String number,
+ String filePath, int length, int burnFlag, int barCycle, boolean isRecord)
+ throws ServiceDisconnectedException, FileSuffixException, FileTransferException, FileDurationException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper
+ .i(String.format(
+ Locale.getDefault(),
+ "enter method sendVideoFile. [thread_id,sms_id,number,filePath,length,burnFlag,barCycle,isRecord]=%d,%d,%s,%s,%d,%d,%d,%b",
+ thread_id, sms_id, number, filePath, length, burnFlag,
+ barCycle, isRecord));
+ VerificationUtil.isVideoFile(filePath);
+ if(isRecord){
+ VerificationUtil.isVedioDurationToLong(context, filePath, this.getVideoMaxTime(), length);//VerificationUtil.getVideoMaxTime(context)
+ }
+ VerificationUtil.isFileSizeToLarge(filePath, this.getVideoFtMaxSize());//VerificationUtil.getVideoFtMaxSize(context)
+ if (!VerificationUtil.isNumber(number)) {
+ LogHelper.i("number field value error");
+ return;
+ }
+ if (!VerificationUtil.isBurnFlagCorrect(burnFlag)) {
+ LogHelper.i("burnFlag field must be 0 or 1");
+ return;
+ }
+ if (barCycle < 0) {
+ LogHelper.i("barCycle field must be a positive int");
+ return;
+ }
+ try {
+ myApi.sendVideoFile(thread_id, sms_id, VerificationUtil.formatNumber(number), filePath, length,
+ burnFlag, barCycle);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ }
+
+ public void sendLocation(long thread_id, long sms_id, String number,
+ double lat, double lng, String text)
+ throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper
+ .i(String.format(
+ Locale.getDefault(),
+ "enter method sendLocation. [thread_id,sms_id,number,lat,lng,text]=%d,%d,%s,%f,%f,%s",
+ thread_id, sms_id, number, lat, lng, text));
+ if (!VerificationUtil.isNumber(number)) {
+ LogHelper.i("number field value error");
+ return;
+ }
+ try {
+ myApi.sendLocation(thread_id, sms_id, VerificationUtil.formatNumber(number), lat, lng, text);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ }
+
+ public void sendPaidEmo(long thread_id, long sms_id, String number,
+ String emoid, String emoImgFileName)
+ throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper
+ .i(String.format(
+ Locale.getDefault(),
+ "enter method sendPaidEmo. [thread_id,sms_id,number,emoid,emoImgFileName]=%d,%d,%s,%s,%s",
+ thread_id, sms_id, number, emoid, emoImgFileName));
+ if (!VerificationUtil.isNumber(number)) {
+ LogHelper.i("number field value error");
+ return;
+ }
+ try {
+ myApi.sendPaidEmo(thread_id, sms_id, number, emoid,
+ emoImgFileName);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ }
+
+ public void sendVCard(long thread_id, long sms_id, String number,
+ RCSContact rcsContact) throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper
+ .i(String.format(
+ Locale.getDefault(),
+ "enter method sendVCard. [thread_id,sms_id,number,rcsContact]=%d,%d,%s,%s",
+ thread_id, sms_id, number, rcsContact.toString()));
+ if (!VerificationUtil.isNumber(number)) {
+ LogHelper.i("number field value error");
+ return;
+ }
+ try {
+ myApi.sendVCard(thread_id, sms_id, number, rcsContact);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ }
+
+ public void sendVCard(long thread_id, long sms_id, String number,
+ String vcardFilePath) throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper
+ .i(String.format(
+ Locale.getDefault(),
+ "enter method sendVCard. [thread_id,sms_id,number,vcardFilePath]=%d,%d,%s,%s",
+ thread_id, sms_id, number, vcardFilePath));
+ if (!VerificationUtil.isNumber(number)) {
+ LogHelper.i("number field value error");
+ return;
+ }
+ try {
+ myApi.sendVCardByPath(thread_id, sms_id, VerificationUtil.formatNumber(number), vcardFilePath);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ }
+
+ public void sendOne2ManyTextMessage(long thread_id, List<String> numbers,
+ String text, int burnFlag, int barCycle)
+ throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ if ("".equals(text.trim())) {
+ LogHelper.i("text value is null/Space");
+ return;
+ }
+ LogHelper
+ .i(String.format(
+ Locale.getDefault(),
+ "enter method sendOne2ManyTextMessage. [thread_id,numbers,text,burnFlag,barCycle]=%d,%s,%s,%d,%d",
+ thread_id, numbers.toString(), text, burnFlag, barCycle));
+ if (!VerificationUtil.isAllNumber(numbers)) {
+ LogHelper.i("number field value error");
+ return;
+ }
+ if (!VerificationUtil.isBurnFlagCorrect(burnFlag)) {
+ LogHelper.i("burnFlag field must be 0 or 1");
+ return;
+ }
+ if (barCycle < 0) {
+ LogHelper.i("barCycle field must be a positive int");
+ return;
+ }
+ try {
+ myApi.sendOne2ManyTextMessage(thread_id, VerificationUtil.formatNumbers(numbers), text, burnFlag,
+ barCycle);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ }
+
+ public void sendOne2ManyImageFile(long thread_id, long sms_id,
+ List<String> numbers, String filePath, int burnFlag, int barCycle,
+ int quality) throws ServiceDisconnectedException, FileSuffixException, FileTransferException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper
+ .i(String.format(
+ Locale.getDefault(),
+ "enter method sendOne2ManyImageFile. [thread_id,sms_id,numbers,filePath,burnFlag,barCycle,quality]=%d,%d,%s,%s,%d,%d,%d",
+ thread_id, sms_id, numbers.toString(), filePath,
+ burnFlag, barCycle, quality));
+ VerificationUtil.isImageFile(filePath);
+ if (!VerificationUtil.isAllNumber(numbers)) {
+ LogHelper.i("number field value error");
+ return;
+ }
+ if (!VerificationUtil.isBurnFlagCorrect(burnFlag)) {
+ LogHelper.i("burnFlag field must be 0 or 1");
+ return;
+ }
+ if (barCycle < 0) {
+ LogHelper.i("barCycle field must be a positive int");
+ return;
+ }
+ if (quality < 0 || quality > 100) {
+ LogHelper.i("quality field value must be between 0 to 100");
+ return;
+ }
+
+ if( quality == 100 ) {
+ VerificationUtil.isFileSizeToLarge(filePath,
+ VerificationUtil.getImageFtMaxSize(context));
+ }
+
+ try {
+ myApi.sendOne2ManyImageFile(thread_id, sms_id, VerificationUtil.formatNumbers(numbers), filePath,
+ burnFlag, barCycle, quality);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ }
+
+ public void sendOne2ManyAudioFile(long thread_id, long sms_id,
+ List<String> numbers, String filePath, int recordTime,
+ int burnFlag, int barCycle, boolean isRecord) throws ServiceDisconnectedException, FileSuffixException, FileTransferException, FileDurationException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper
+ .i(String.format(
+ Locale.getDefault(),
+ "enter method sendOne2ManyAudioFile. [thread_id,sms_id,numbers,filePath,recordTime,burnFlag,barCycle,isRecord]=%d,%d,%s,%s,%d,%d,%d,%b",
+ thread_id, sms_id, numbers.toString(), filePath,
+ recordTime, burnFlag, barCycle, isRecord));
+ VerificationUtil.isAudioFile(filePath);
+ if(isRecord){
+ VerificationUtil.isAudioDurationToLong(context, filePath, VerificationUtil.getAudioMaxTime(context), recordTime);
+ }
+ VerificationUtil.isFileSizeToLarge(filePath,
+ VerificationUtil.getVideoFtMaxSize(context));
+ if (!VerificationUtil.isAllNumber(numbers)) {
+ LogHelper.i("number field value error");
+ return;
+ }
+ if (!VerificationUtil.isBurnFlagCorrect(burnFlag)) {
+ LogHelper.i("burnFlag field must be 0 or 1");
+ return;
+ }
+ if (barCycle < 0) {
+ LogHelper.i("barCycle field must be a positive int");
+ return;
+ }
+ try {
+ myApi.sendOne2ManyAudioFile(thread_id, sms_id, VerificationUtil.formatNumbers(numbers), filePath,
+ recordTime, burnFlag, barCycle);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ }
+
+ public void sendOne2ManyVideoFile(long thread_id, long sms_id,
+ List<String> numbers, String filePath, int length, int burnFlag,
+ int barCycle, boolean isRecord) throws ServiceDisconnectedException, FileSuffixException, FileTransferException, FileDurationException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper
+ .i(String.format(
+ Locale.getDefault(),
+ "enter method sendOne2ManyVideoFile. [thread_id,sms_id,numbers,filePath,length,burnFlag,barCycle,isRecord]=%d,%d,%s,%s,%d,%d,%d,%b",
+ thread_id, sms_id, numbers.toString(), filePath,
+ length, burnFlag, barCycle, isRecord));
+ VerificationUtil.isVideoFile(filePath);
+ if(isRecord){
+ VerificationUtil.isVedioDurationToLong(context, filePath, VerificationUtil.getVideoMaxTime(context), length);
+ }
+ VerificationUtil.isFileSizeToLarge(filePath,
+ VerificationUtil.getVideoFtMaxSize(context));
+ if (!VerificationUtil.isAllNumber(numbers)) {
+ LogHelper.i("number field value error");
+ return;
+ }
+ if (!VerificationUtil.isBurnFlagCorrect(burnFlag)) {
+ LogHelper.i("burnFlag field must be 0 or 1");
+ return;
+ }
+ if (barCycle < 0) {
+ LogHelper.i("barCycle field must be a positive int");
+ return;
+ }
+ try {
+ myApi.sendOne2ManyVideoFile(thread_id, sms_id, VerificationUtil.formatNumbers(numbers), filePath,
+ length, burnFlag, barCycle);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ }
+
+ public void sendOne2ManyLocation(long thread_id, long sms_id,
+ List<String> numbers, double lat, double lng, String text)
+ throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper
+ .i(String.format(
+ Locale.getDefault(),
+ "enter method sendOne2ManyLocation. [thread_id,sms_id,numbers,lat,lng,text]=%d,%d,%s,%f,%f,%s",
+ thread_id, sms_id, numbers.toString(), lat, lng, text));
+ if (!VerificationUtil.isAllNumber(numbers)) {
+ LogHelper.i("number field value error");
+ return;
+ }
+ try {
+ myApi.sendOne2ManyLocation(thread_id, sms_id, VerificationUtil.formatNumbers(numbers), lat, lng,
+ text);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ }
+
+ public void sendGroupMessage(long thread_id, String conversationId,
+ long sms_id, String msg, String groupId)
+ throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ if ("".equals(msg.trim())) {
+ LogHelper.i("msg value is null/Space");
+ return;
+ }
+ LogHelper
+ .i(String.format(
+ Locale.getDefault(),
+ "enter method sendGroupMessage. [thread_id,conversationId,sms_id,msg,groupId]=%d,%s,%d,%s,%s",
+ thread_id, conversationId, sms_id, msg, groupId));
+ try {
+ myApi.sendGroupMessage(thread_id, conversationId, sms_id, msg,
+ groupId);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ }
+
+ public void sendGroupImageFile(long thread_id, String conversationId,
+ long sms_id, String filepath, String groupId, int quality)
+ throws ServiceDisconnectedException, FileSuffixException, FileTransferException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper
+ .i(String.format(
+ Locale.getDefault(),
+ "enter method sendGroupImageFile. [thread_id,conversationId,sms_id,filepath,groupId,quality]=%d,%s,%d,%s,%s,%d",
+ thread_id, conversationId, sms_id, filepath, groupId,
+ quality));
+ VerificationUtil.isImageFile(filepath);
+ if (quality < 0 || quality > 100) {
+ LogHelper.i("quality field value must be between 0 to 100");
+ return;
+ }
+
+ if( quality == 100 ) {
+ VerificationUtil.isFileSizeToLarge(filepath,
+ VerificationUtil.getImageFtMaxSize(context));
+ }
+
+ try {
+ myApi.sendGroupImageFile(thread_id, conversationId, sms_id,
+ filepath, groupId, quality);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ }
+
+ public void sendGroupAudioFile(long thread_id, String conversationId,
+ long sms_id, String filepath, int recordTime, String groupId, boolean isRecord)
+ throws ServiceDisconnectedException, FileSuffixException, FileTransferException, FileDurationException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper
+ .i(String.format(
+ Locale.getDefault(),
+ "enter method sendGroupAudioFile. [thread_id,conversationId,sms_id,filepath,recordTime,groupId,isRecord]=%d,%s,%d,%s,%d,%s,%b",
+ thread_id, conversationId, sms_id, filepath,
+ recordTime, groupId, isRecord));
+ VerificationUtil.isAudioFile(filepath);
+ if(isRecord){
+ VerificationUtil.isAudioDurationToLong(context, filepath, VerificationUtil.getAudioMaxTime(context), recordTime);
+ }
+ VerificationUtil.isFileSizeToLarge(filepath,
+ VerificationUtil.getVideoFtMaxSize(context));
+ try {
+ myApi.sendGroupAudioFile(thread_id, conversationId, sms_id,
+ filepath, recordTime, groupId);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ }
+
+ public void sendGroupVideoFile(long thread_id, String conversationId,
+ long sms_id, String filepath, int length, String groupId, boolean isRecord)
+ throws ServiceDisconnectedException, FileSuffixException, FileTransferException, FileDurationException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper
+ .i(String.format(
+ Locale.getDefault(),
+ "enter method sendGroupVideoFile. [thread_id,conversationId,sms_id,filepath,length,groupId,isRecord]=%d,%s,%d,%s,%d,%s,%b",
+ thread_id, conversationId, sms_id, filepath, length,
+ groupId, isRecord));
+ VerificationUtil.isVideoFile(filepath);
+ if(isRecord){
+ VerificationUtil.isVedioDurationToLong(context, filepath, VerificationUtil.getVideoMaxTime(context), length);
+ }
+ VerificationUtil.isFileSizeToLarge(filepath,
+ VerificationUtil.getVideoFtMaxSize(context));
+ try {
+ myApi.sendGroupVideoFile(thread_id, conversationId, sms_id,
+ filepath, length, groupId);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ }
+
+ public void sendGroupLocation(long thread_id, String conversationId,
+ long sms_id, double lat, double lng, String text, String groupId)
+ throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper
+ .i(String.format(
+ Locale.getDefault(),
+ "enter method sendGroupLocation. [thread_id,conversationId,sms_id,lat,lng,text,groupId]=%d,%s,%d,%f,%f,%s,%s",
+ thread_id, conversationId, sms_id, lat, lng, text,
+ groupId));
+ try {
+ myApi.sendGroupLocation(thread_id, conversationId, sms_id, lat,
+ lng, text, groupId);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ }
+
+ public void sendGroupVCard(long thread_id, String conversationId,
+ long sms_id, RCSContact rcsContact, String groupId)
+ throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper
+ .i(String.format(
+ Locale.getDefault(),
+ "enter method sendGroupVCard. [thread_id,conversationId,sms_id,rcsContact,groupId]=%d,%s,%d,%s,%s",
+ thread_id, conversationId, sms_id,
+ rcsContact.toString(), groupId));
+ try {
+ myApi.sendGroupVCard(thread_id, conversationId, sms_id, rcsContact,
+ groupId);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ }
+
+ public void sendGroupVCard(long thread_id, String conversationId,
+ long sms_id, String vcardFilePath, String groupId)
+ throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper
+ .i(String.format(
+ Locale.getDefault(),
+ "enter method sendGroupVCard. [thread_id,conversationId,sms_id,vcardFilePath,groupId]=%d,%s,%d,%s,%s",
+ thread_id, conversationId, sms_id,
+ vcardFilePath, groupId));
+ try {
+ myApi.sendGroupVCardByPath(thread_id, conversationId, sms_id, vcardFilePath,
+ groupId);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ }
+
+ public void acceptFile(ChatMessage chatMessage) throws OperatorException,
+ ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format(Locale.getDefault(),
+ "enter method acceptFile. [chatMessage]=%s",
+ chatMessage.toString()));
+ try {
+ myApi.acceptFile(chatMessage);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ throw new OperatorException(ex.getMessage());
+ }
+ }
+
+ public boolean interruptFile(ChatMessage chatMessage)
+ throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format(Locale.getDefault(),
+ "enter method interruptFile. [chatMessage]=%s",
+ chatMessage.toString()));
+ boolean flag = false;
+ try {
+ return myApi.interruptFile(chatMessage);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ return flag;
+ }
+
+ public MessageSessionModel getMessageSessionByThreadId(long threadId)
+ throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format(Locale.getDefault(),
+ "enter method getMessageSessionByThreadId. [threadId]=%d",
+ threadId));
+ try {
+ return myApi.getMessageSessionByThreadId(threadId);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ return null;
+ }
+ }
+
+ public List<MessageSessionModel> getMessageSessionList(int offset,
+ int number) throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format(Locale.getDefault(),
+ "enter method getMessageSessionList. [offset,number]=%d,%d",
+ offset, number));
+ try {
+ return myApi.getMessageSessionList(offset, number);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ return null;
+ }
+ }
+
+ public List<ChatMessage> getChatMessageList(long threadId, boolean less,
+ int specifiedMsgId, int count) throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper
+ .i(String.format(
+ Locale.getDefault(),
+ "enter method getChatMessageList. [threadId,specifiedMsgId,count]=%d,%d,%d",
+ threadId, specifiedMsgId, count));
+ try {
+ return myApi.getChatMessageList(threadId, less, specifiedMsgId, count);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ return null;
+ }
+ }
+
+ public boolean removeMessageByThreadId(long threadId)
+ throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper
+ .i(String.format(Locale.getDefault(),
+ "enter method removeMessageByThreadId. [threadId]=%d",
+ threadId));
+ try {
+ myApi.removeMessageByThreadId(threadId);
+ return true;
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ return false;
+ }
+ }
+
+ public void removeOneMessage(String messageId)
+ throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format(Locale.getDefault(),
+ "enter method removeOneMessage. [messageId]=%s", messageId));
+ try {
+ myApi.removeOneMessage(messageId);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ }
+
+ public void removeAllMessage() throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format(Locale.getDefault(),
+ "enter method removeAllMessage. "));
+ try {
+ myApi.removeAllMessage();
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ }
+
+ public List<ChatMessage> searchMessageByText(String text, int offset,
+ int number, boolean timaAsc) throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ try {
+ return myApi.searchMessageByText(text, offset, number, timaAsc);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ return null;
+ }
+ }
+
+ public ChatMessage getTheLastMessage(long threadId)
+ throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format(Locale.getDefault(),
+ "enter method getTheLastMessage. [threadId]=%d", threadId));
+ try {
+ return myApi.getTheLastMessage(threadId);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ return null;
+ }
+ }
+
+ public String getThreadIdByNumber(List<String> numbers)
+ throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format(Locale.getDefault(),
+ "enter method getThreadIdByNumber. [numbers]=%s",
+ numbers.toString()));
+ if (!VerificationUtil.isAllNumber(numbers)) {
+ LogHelper.i("number field value error");
+ return null;
+ }
+ try {
+ return myApi.getThreadIdByNumber(VerificationUtil.formatNumbers(numbers));
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ return null;
+ }
+ }
+
+ public long getNewThreadId() throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format(Locale.getDefault(),
+ "enter method getNewThreadId. "));
+ try {
+ return myApi.getNewThreadId();
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ return -1;
+ }
+ }
+
+ public ChatMessage getMessageById(String rowId)
+ throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format(Locale.getDefault(),
+ "enter method getMessageById. [rowId]=%s", rowId));
+ try {
+ return myApi.getMessageById(rowId);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ return null;
+ }
+ }
+
+ public ChatMessage getMessageByMessageId(String messageId)
+ throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper
+ .i(String.format(Locale.getDefault(),
+ "enter method getMessageByMessageId. [messageId]=%s",
+ messageId));
+ try {
+ return myApi.getMessageByMessageId(messageId);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ return null;
+ }
+ }
+
+ public GroupChatModel getGroupChatById(String groupId)
+ throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ try {
+ return myApi.getGroupChatById(groupId);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ return null;
+ }
+ }
+
+ public GroupChatModel getGroupChatByThreadId(long threadId)
+ throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper
+ .i(String.format(Locale.getDefault(),
+ "enter method getGroupChatByThreadId. [threadId]=%d",
+ threadId));
+ try {
+ return myApi.getGroupChatByThreadId(threadId);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ return null;
+ }
+ }
+
+ public String getFilepath(ChatMessage message)
+ throws ServiceDisconnectedException {
+
+ //LogHelper.e("error log, enter method getFilepath. [message]=" + message.toString());
+
+ //System.out.println("========enter method getFilepath. [message]=" + message);
+
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format(Locale.getDefault(),
+ "enter method getFilepath. [message]=%s", message.toString()));
+ try {
+ return myApi.getFilepath(message);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ return null;
+ }
+ }
+
+ public String getThumbFilepath(ChatMessage message)
+ throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format(Locale.getDefault(),
+ "enter method getThumbFilepath. [message]=%s",
+ message.toString()));
+ try {
+ return myApi.getThumbFilepath(message);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ return null;
+ }
+ }
+
+ public void topMessage(long threadId) throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format(Locale.getDefault(),
+ "enter method topMessage. [threadId]=%d", threadId));
+ try {
+ myApi.topMessage(threadId);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ }
+
+ public void cancelTopMessage(long threadId)
+ throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format(Locale.getDefault(),
+ "enter method cancelTopMessage. [threadId]=%d", threadId));
+ try {
+ myApi.cancelTopMessage(threadId);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ }
+
+ public void backupAllMessage() throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format(Locale.getDefault(),
+ "enter method backupAllMessage. "));
+ try {
+ myApi.backupAllMessage();
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ }
+
+ public void restoreAllMessage() throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format(Locale.getDefault(),
+ "enter method restoreAllMessage. "));
+ try {
+ myApi.restoreAllMessage();
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ }
+
+ public void collectMessage(List<SimpleMsg> simpleMsgList)
+ throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format(Locale.getDefault(),
+ "enter method collectMessage. [simpleMsgList]=%s",
+ simpleMsgList.toString()));
+ try {
+ myApi.collectMessage(simpleMsgList);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ }
+
+ public List<TopMessageData> getTopMsgsInOrder(boolean asc)
+ throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format(Locale.getDefault(),
+ "enter method getTopMsgsInOrder. [threadId]=%b", asc));
+ try {
+ return myApi.getTopMsgsInOrder(asc);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ return null;
+ }
+
+ public void accuseMessage(final long thread_id, String id)
+ throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format(Locale.getDefault(),
+ "enter method accuseMessage. [thread_id,id]=%d,%s", thread_id,
+ id));
+ try {
+ myApi.accuseMessage(thread_id, id);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ }
+
+ public List<ChatMessage> qryNotifyArchiveMsgList()
+ throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format(Locale.getDefault(),
+ "enter method getMessageOfSpecialService. "));
+ try {
+ return myApi.getMessageOfSpecialService();
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ return null;
+ }
+
+ public List<ChatMessage> qryNonFriendMsgList()
+ throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format(Locale.getDefault(),
+ "enter method getMessageOfStrangeNumber. "));
+ try {
+ return myApi.getMessageOfStrangeNumber();
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ return null;
+ }
+
+ public List<MessageSessionModel> qryNonFriendMsgSessionList()
+ throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format(Locale.getDefault(),
+ "enter method qryNonFriendMsgSessionList. "));
+ try {
+ return myApi.qryNonFriendMsgSessionList();
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ return null;
+ }
+
+ public List<MessageSessionModel> qryNotifyArchiveMsgSessionList()
+ throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format(Locale.getDefault(),
+ "enter method qryNotifyArchiveMsgSessionList. "));
+ try {
+ return myApi.qryNotifyArchiveMsgSessionList();
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ return null;
+ }
+
+ public void sendGroupPaidEmo(long thread_id, String conversationId,
+ long sms_id, String emoid, String emoImgFileName, String groupId)
+ throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper
+ .i(String.format(
+ Locale.getDefault(),
+ "enter method:sendGroupPaidEmo. [thread_id,conversationId,sms_id,emoid,emoImgFileName,groupId]=%d,%s,%d,%s,%s,%s",
+ thread_id, conversationId, sms_id, emoid,
+ emoImgFileName, groupId));
+ try {
+ myApi.sendGroupPaidEmo(thread_id, conversationId, sms_id, emoid,
+ emoImgFileName, groupId);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ }
+
+ public void sendOne2ManyPaidEmoMessage(long thread_id, long sms_id,
+ List<String> numbers, String emoid, String emoImgFileName)
+ throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper
+ .i(String.format(
+ Locale.getDefault(),
+ "enter method:sendOne2ManyPaidEmoMessage. [thread_id,sms_id,numbers,emoid,emoImgFileName]=%d,%d,%s,%s,%s",
+ thread_id, sms_id, numbers.toString(), emoid,
+ emoImgFileName));
+ if (!VerificationUtil.isAllNumber(numbers)) {
+ LogHelper.i("number field value error");
+ return;
+ }
+ try {
+ myApi.sendOne2ManyPaidEmoMessage(thread_id, sms_id, VerificationUtil.formatNumbers(numbers), emoid,
+ emoImgFileName);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ }
+
+ public List<ChatMessage> getMsgListGreatOrLessThanSpecifiedForBlack(
+ long threadId, boolean less, int specifiedId, int number) throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper
+ .i(String.format(
+ Locale.getDefault(),
+ "enter method:getMsgListGreatThanSpecifiedForBlack. [threadId,less,specifiedId,number]=%d,%b,%d,%d",
+ threadId, less, specifiedId,number));
+ try {
+ return myApi.getMsgListGreatOrLessThanSpecifiedForBlack(threadId, less,
+ specifiedId, number);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ return null;
+ }
+
+ public MessageSessionModel getMessageSessionByThreadIdForBlack(
+ String threadId) throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper
+ .i(String.format(
+ Locale.getDefault(),
+ "enter method:getMessageSessionByThreadIdForBlack. [threadId]=%s",
+ threadId));
+ try {
+ return myApi.getMessageSessionByThreadIdForBlack(threadId);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ return null;
+ }
+
+ public List<MessageSessionModel> getMessageSessionListForBlack(int offset,
+ int number) throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper
+ .i(String.format(
+ Locale.getDefault(),
+ "enter method:getMessageSessionListForBlack. [thread_id,number]=%d,%d",
+ offset, number));
+ try {
+ return myApi.getMessageSessionListForBlack(offset, number);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ return null;
+ }
+
+ public ChatMessage getTheLastMsgOfThreadForBlack(long threadId)
+ throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format(Locale.getDefault(),
+ "enter method:getTheLastMsgOfThreadForBlack. [threadId]=%d",
+ threadId));
+ try {
+ return myApi.getTheLastMsgOfThreadForBlack(threadId);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ return null;
+ }
+
+ public void sendOne2ManyVCard(long thread_id, long sms_id,
+ List<String> numbers, RCSContact rcsContact)
+ throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper
+ .i(String.format(
+ Locale.getDefault(),
+ "enter method:sendOne2ManyVCard. [thread_id,sms_id,numbers,rcsContact]=%d,%d,%s,%s",
+ thread_id, sms_id, numbers.toString(),
+ rcsContact.toString()));
+ if (!VerificationUtil.isAllNumber(numbers)) {
+ LogHelper.i("number field value error");
+ return;
+ }
+ try {
+ myApi.sendOne2ManyVCard(thread_id, sms_id, VerificationUtil.formatNumbers(numbers), rcsContact);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ }
+
+ public void sendOne2ManyVCard(long thread_id, long sms_id,
+ List<String> numbers, String vcardFilePath)
+ throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper
+ .i(String.format(
+ Locale.getDefault(),
+ "enter method:sendOne2ManyVCard. [thread_id,sms_id,numbers,vcardFilePath]=%d,%d,%s,%s",
+ thread_id, sms_id, numbers.toString(),
+ vcardFilePath));
+ if (!VerificationUtil.isAllNumber(numbers)) {
+ LogHelper.i("number field value error");
+ return;
+ }
+ try {
+ myApi.sendOne2ManyVCardByPath(thread_id, sms_id, VerificationUtil.formatNumbers(numbers), vcardFilePath);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ }
+
+ public int recoveBlackMsgByMessageId(String messageId)
+ throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format(Locale.getDefault(),
+ "enter method:recoveBlackMsgByMessageId. [messageId]=%s",
+ messageId));
+ try {
+ return myApi.recoveBlackMsgByMessageId(messageId);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ return 0;
+ }
+
+ public int recoveBlackMsgByThreadId(long threadId)
+ throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format(Locale.getDefault(),
+ "enter method:recoveBlackMsgByThreadId. [threadId]=%d",
+ threadId));
+ try {
+ return myApi.recoveBlackMsgByThreadId(threadId);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ return 0;
+ }
+
+ public int recoveBlackMsgAll() throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format(Locale.getDefault(),
+ "enter method:recoveBlackMsgAll. "));
+ try {
+ return myApi.recoveBlackMsgAll();
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ return 0;
+ }
+
+ public void retransmitMessageById(String id)
+ throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper
+ .i(String.format(
+ Locale.getDefault(),
+ "enter method:retransmitMessageById. [id]=%s",
+ id));
+ try {
+ myApi.retransmitMessageById(id);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ }
+
+ public void sendDisplayNotification(final String conversationId,
+ final String number, final String messageId)
+ throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper
+ .i(String.format(
+ Locale.getDefault(),
+ "enter method:sendDisplayNotification. [conversationId, number, messageId]=%s,%s,%s",
+ conversationId, number, messageId));
+ if (!VerificationUtil.isNumber(number)) {
+ LogHelper.i("number field value error");
+ return;
+ }
+ try {
+ myApi.sendDisplayNotification(conversationId, VerificationUtil.formatNumber(number), messageId);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ }
+
+ public List<GroupChatModel> getAllGroupChat()
+ throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format(Locale.getDefault(),
+ "enter method:getAllGroupChat. "));
+ try {
+ return myApi.getAllGroupChat();
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ return null;
+ }
+
+ public void burnMessage(String id) throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format(Locale.getDefault(),
+ "enter method:burnMessage. [id]=%s", id));
+ try {
+ myApi.burnMessage(id);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ }
+
+ public void cancelCollectSimpleMsg(List<SimpleMsg> simpleMsgList)
+ throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format(Locale.getDefault(),
+ "enter method:cancelCollectSimpleMsg. [simpleMsgList]=%s",
+ simpleMsgList));
+ try {
+ myApi.cancelCollectSimpleMsg(simpleMsgList);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ }
+
+ public List<FavoriteMessage> getFavouriteMessageList()
+ throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format(Locale.getDefault(),
+ "enter method:getFavouriteMessageList. "));
+ try {
+ return myApi.getFavouriteMessageList();
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ return null;
+ }
+
+ public void burnMessageAtOnce(String id)
+ throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format(Locale.getDefault(),
+ "enter method:burnMessageAtOnce. [id]=%s", id));
+ try {
+ myApi.burnMessageAtOnce(id);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ }
+
+ public String getAccuseNumber() throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format(Locale.getDefault(),
+ "enter method:getAccuseNumber. "));
+ try {
+ return myApi.getAccuseNumber();
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ return null;
+ }
+
+ public byte[] getImageThumbnails(String filepath)
+ throws ServiceDisconnectedException {
+
+ //LogHelper.e("error log, enter method getImageThumbnails. [filepath]=" + filepath);
+
+ //System.out.println("========enter method getImageThumbnails. [filepath]=" + filepath);
+
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format(Locale.getDefault(),
+ "enter method:getImageThumbnails. "));
+ try {
+ return myApi.getImageThumbnails(filepath);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ return null;
+ }
+
+ public byte[] getVideoThumbnails(String filepath)
+ throws ServiceDisconnectedException {
+ //LogHelper.e("error log, enter method getVideoThumbnails. [filepath]=" + filepath);
+
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format(Locale.getDefault(),
+ "enter method:getVideoThumbnails. "));
+ try {
+ return myApi.getVideoThumbnails(filepath);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ return null;
+ }
+
+ public int getAllUnreadCount() throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format(Locale.getDefault(),
+ "enter method:getAllUnreadCount. "));
+ try {
+ return myApi.getAllUnreadCount();
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ return 0;
+ }
+
+ public int getUnreadMsgCountByThreadId(String threadId)
+ throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format(Locale.getDefault(),
+ "enter method:getUnreadMsgCountByThreadId. [threadId]=%s",
+ threadId));
+ try {
+ return myApi.getUnreadMsgCountByThreadId(threadId);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ return 0;
+ }
+
+ public void removeUnreadMessageByThreadId(String threadId)
+ throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format(Locale.getDefault(),
+ "enter method:removeUnreadMessageByThreadId. [threadId]=%s",
+ threadId));
+ try {
+ myApi.removeUnreadMessageByThreadId(threadId);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ }
+
+ public int getMsgSendPolicy() throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ try {
+ return myApi.getMsgSendPolicy();
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ return APIConstant.MSG_SEND_POLICY_AUTO;
+ }
+
+ public void setMsgSendPolicy(int policy) throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format(Locale.getDefault(),
+ "enter method:setMsgSendPolicy. [policy]=%s",
+ policy));
+
+ switch(policy) {
+ case APIConstant.MSG_SEND_POLICY_AUTO :
+ case APIConstant.MSG_SEND_POLICY_SMS :
+ case APIConstant.MSG_SEND_POLICY_IM :
+ try {
+ myApi.setMsgSendPolicy(policy);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ break ;
+
+ default :
+ LogHelper.d("method:setMsgSendPolicy input param not defined, param error.");
+ break ;
+ }
+ }
+
+ public int updateMessageRead(String id) throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format(Locale.getDefault(),
+ "enter method:updateMessageRead. [id]=%s", id));
+ try {
+ return myApi.updateMessageRead(id);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ return 0;
+ }
+
+ public void uploadFile(ChatMessage chatMessage)
+ throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format(Locale.getDefault(),
+ "enter method:uploadFile. [chatMessage]=%s",
+ chatMessage.toString()));
+ try {
+ myApi.uploadFile(chatMessage);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ }
+
+ public int getPlayTime(int msgType, String data) throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format(Locale.getDefault(),
+ "enter method:getPlayTime. [msgType,data]=%d,%s",
+ msgType, data));
+ try {
+ return myApi.getPlayTime(msgType, data);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ return 0;
+ }
+
+ public GroupChatModel getGroupChatByConversationId(String conversationId)
+ throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper
+ .i(String.format(
+ Locale.getDefault(),
+ "enter method:getGroupChatByConversationId. [conversationId]=%s",
+ conversationId));
+ try {
+ return myApi.getGroupChatByConversationId(conversationId);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ return null;
+ }
+
+ public void setSMSSentRemind(int policy) throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format(Locale.getDefault(),
+ "enter method:setSMSSentRemind. [policy]=%d", policy));
+ try {
+ myApi.setSMSSentRemind(policy);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ }
+
+ public int getSMSSentRemind() throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format(Locale.getDefault(),
+ "enter method:getSMSSentRemind. "));
+ try {
+ return myApi.getSMSSentRemind();
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ return 0;
+ }
+
+ public void burnAllMsgAtOnce() throws ServiceDisconnectedException {
+ LogHelper.i(String.format( Locale.getDefault(),"enter method:burnAllMsgAtOnce. "));
+ VerificationUtil.ApiIsNull(myApi);
+ try {
+ myApi.burnAllMsgAtOnce();
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ }
+
+ public void sendComposingMsg(long threadId, String contact, String contentType, int seconds) throws ServiceDisconnectedException {
+ LogHelper.i(String.format( Locale.getDefault(),"enter method:sendComposingMsg. [threadId,contact,contentType,seconds]=%d,%s,%s,%d", threadId,contact,contentType,seconds));
+ VerificationUtil.ApiIsNull(myApi);
+ if (!VerificationUtil.isNumber(contact)) {
+ LogHelper.i("number field value error");
+ return;
+ }
+ try {
+ myApi.sendComposingMsg(threadId, VerificationUtil.formatNumber(contact), contentType, seconds);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ }
+
+ public void sendCancelComposingMsg(long threadId, String contact, String contentType, long lastActive) throws ServiceDisconnectedException {
+ LogHelper.i(String.format( Locale.getDefault(),"enter method:sendCancelComposingMsg. [threadId,contact,contentType,lastActive]=%d,%s,%s,%d", threadId,contact,contentType,lastActive));
+ VerificationUtil.ApiIsNull(myApi);
+ if (!VerificationUtil.isNumber(contact)) {
+ LogHelper.i("number field value error");
+ return;
+ }
+ try {
+ myApi.sendCancelComposingMsg(threadId, VerificationUtil.formatNumber(contact), contentType, lastActive);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ }
+
+ public void sendComposingMsgToGroup(long threadId, int id, String contentType, int seconds) throws ServiceDisconnectedException {
+ LogHelper.i(String.format( Locale.getDefault(),"enter method:sendComposingMsgToGroup. [threadId,id,contentType,seconds]=%d,%d,%s,%d", threadId,id,contentType,seconds));
+ VerificationUtil.ApiIsNull(myApi);
+ try {
+ myApi.sendComposingMsgToGroup(threadId, id, contentType, seconds);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ }
+
+ public void sendCancelComposingMsgToGroup(long threadId, int id, String contentType, long lastActive) throws ServiceDisconnectedException {
+ LogHelper.i(String.format( Locale.getDefault(),"enter method:sendCancelComposingMsgToGroup. [threadId,id,contentType,lastActive]=%d,%d,%s,%d", threadId,id,contentType,lastActive));
+ VerificationUtil.ApiIsNull(myApi);
+ try {
+ myApi.sendCancelComposingMsgToGroup(threadId, id, contentType, lastActive);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ }
+
+ public void sendVCardList(final long thread_id, final long sms_id, final String number, final List<RCSContact> contactList, final int chatType) throws ServiceDisconnectedException {
+ LogHelper.i(String.format( Locale.getDefault(),"enter method:sendVCardList. [thread_id, sms_id, number, contactList, chatType]=%d,%d,%s,%s,%d", thread_id, sms_id, number, contactList.toString(), chatType));
+ VerificationUtil.ApiIsNull(myApi);
+ if (!VerificationUtil.isNumber(number)) {
+ LogHelper.i("number field value error");
+ return;
+ }
+ try {
+ myApi.sendVCardList(thread_id, sms_id, VerificationUtil.formatNumber(number), contactList, chatType);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ }
+
+ public void sendOne2ManyVCardList(final long thread_id, final long sms_id, final List<String> numbers, final List<RCSContact> contactList) throws ServiceDisconnectedException {
+ LogHelper.i(String.format( Locale.getDefault(),"enter method:sendOne2ManyVCardList. [thread_id, sms_id, numbers, contactList]=%d,%d,%s,%s", thread_id, sms_id, numbers.toString(), contactList.toString()));
+ VerificationUtil.ApiIsNull(myApi);
+ if (!VerificationUtil.isAllNumber(numbers)) {
+ LogHelper.i("number field value error");
+ return;
+ }
+ try {
+ myApi.sendOne2ManyVCardList(thread_id, sms_id, VerificationUtil.formatNumbers(numbers), contactList);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ }
+
+ public void sendGroupVCardList(final long thread_id, final String conversationId, final long sms_id, final List<RCSContact> contactList, final String groupId) throws ServiceDisconnectedException {
+ LogHelper.i(String.format( Locale.getDefault(),"enter method:sendGroupVCardList. [thread_id, conversationId, sms_id, contactList, groupId]=%d,%s,%d,%s,%s", thread_id, conversationId, sms_id, contactList.toString(), groupId));
+ VerificationUtil.ApiIsNull(myApi);
+ try {
+ myApi.sendGroupVCardList(thread_id, conversationId, sms_id, contactList, groupId);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ }
+
+ public long getImageFtMaxSize() throws ServiceDisconnectedException {
+ LogHelper.i(String.format( Locale.getDefault(),"enter method:getImageFtMaxSize. "));
+ VerificationUtil.ApiIsNull(myApi);
+ try {
+ return myApi.getImageFtMaxSize();
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ return 0;
+ }
+
+ public long getAudioMaxTime() throws ServiceDisconnectedException {
+ LogHelper.i(String.format( Locale.getDefault(),"enter method:getAudioMaxTime. "));
+ VerificationUtil.ApiIsNull(myApi);
+ try {
+ return myApi.getAudioMaxTime();
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ return 0;
+ }
+
+ public long getVideoMaxTime() throws ServiceDisconnectedException {
+ LogHelper.i(String.format( Locale.getDefault(),"enter method:getVideoMaxTime. "));
+ VerificationUtil.ApiIsNull(myApi);
+ try {
+ return myApi.getVideoMaxTime();
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ return 0;
+ }
+
+ public long getVideoFtMaxSize() throws ServiceDisconnectedException {
+ LogHelper.i(String.format( Locale.getDefault(),"enter method:getVideoFtMaxSize. "));
+ VerificationUtil.ApiIsNull(myApi);
+ try {
+ return myApi.getVideoFtMaxSize();
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ return 0;
+ }
+
+ public void removeMsgWithNotificationByThread(long threadId) throws ServiceDisconnectedException {
+ LogHelper.i(String.format( Locale.getDefault(),"enter method:removeMsgWithNotificationByThread. [threadId]=%d", threadId));
+ VerificationUtil.ApiIsNull(myApi);
+ try {
+ myApi.removeMsgWithNotificationByThread(threadId);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ }
+}
diff --git a/rcs_service_api/src/com/suntek/mway/rcs/client/api/im/impl/PaMessageApi.java b/rcs_service_api/src/com/suntek/mway/rcs/client/api/im/impl/PaMessageApi.java
new file mode 100644
index 0000000..ebc9497
--- /dev/null
+++ b/rcs_service_api/src/com/suntek/mway/rcs/client/api/im/impl/PaMessageApi.java
@@ -0,0 +1,350 @@
+/*
+ * Copyright (c) 2014 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.api.im.impl;
+
+import java.util.List;
+import java.util.Locale;
+
+import android.content.ComponentName;
+import android.content.ServiceConnection;
+import android.os.IBinder;
+import android.os.RemoteException;
+
+import com.suntek.mway.rcs.client.api.ClientApi;
+import com.suntek.mway.rcs.client.api.contacts.RCSContact;
+import com.suntek.mway.rcs.client.api.im.IPaMessageApi;
+import com.suntek.mway.rcs.client.api.util.FileDurationException;
+import com.suntek.mway.rcs.client.api.util.FileSuffixException;
+import com.suntek.mway.rcs.client.api.util.FileTransferException;
+import com.suntek.mway.rcs.client.api.util.ServiceDisconnectedException;
+import com.suntek.mway.rcs.client.api.util.VerificationUtil;
+import com.suntek.mway.rcs.client.api.util.log.LogHelper;
+
+public class PaMessageApi extends ClientApi{
+
+private static String serviceName = "com.suntek.mway.rcs.app.service.api.impl.im.PaMessageApiService";
+
+ IPaMessageApi myApi;
+
+ private ServiceConnection mConnection = new ServiceConnection() {
+ public void onServiceConnected(ComponentName className, IBinder service) {
+ LogHelper.d("IPaMessageApi api connect service");
+ myApi = IPaMessageApi.Stub.asInterface(service);
+ notifyServiceConnected();
+ }
+
+ public void onServiceDisconnected(ComponentName className) {
+ if(isNormallyClosed || reconnectionTimes > MAX_RECONECTION_TIMES) {
+ LogHelper.d("IPaMessageApi api disconnect service");
+ myApi = null;
+ notifyServiceDisconnected();
+ } else {
+ LogHelper.d("illegal call IPaMessageApi api disconnect service :"
+ + reconnectionTimes);
+ init(context, rcsListener);
+ if (!isBinded()) {
+ // app is uninstalled
+ myApi = null;
+ notifyServiceDisconnected();
+ }
+ reconnectionTimes++;
+ }
+ }
+ };
+
+ public PaMessageApi() {
+ super(serviceName);
+ super.initServiceConnect(mConnection);
+ }
+
+ /**
+ * Send a text message to the public accounts.
+ *
+ * @param thread_id the message threadId
+ * @param sms_id sms_id system SMS id, -1 if didn't use system SMS
+ * @param uuid the public account uuid
+ * @param text the message info
+ * @throws RemoteException the remote exception
+ */
+ public void sendTextMessage(long thread_id, long sms_id, String uuid, String text) throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format( Locale.getDefault(),"enter method sendTextMessage. [thread_id,sms_id,uuid,text]=%d,%d,%s,%s", thread_id,sms_id,uuid,text));
+ try{
+ myApi.sendTextMessage(thread_id, sms_id, uuid, text);
+ }catch(Exception e){
+ LogHelper.e(e.getMessage(), e);
+ }
+ }
+
+ /**
+ * Send a picture message to the public accounts.
+ *
+ * @param thread_id the message threadId
+ * @param sms_id sms_id system SMS id, -1 if didn't use system SMS
+ * @param uuid the public account uuid
+ * @param filepath path of picture file
+ * @param quality Hint to the compressor, 0-100. 0 meaning compress for small size, 100 meaning compress for max quality.
+ * @throws FileSuffixException
+ * @throws FileTransferException
+ * @throws RemoteException the remote exception
+ */
+ public void sendImageFile(long thread_id, long sms_id, String uuid , String filepath, int quality) throws ServiceDisconnectedException, FileSuffixException, FileTransferException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format( Locale.getDefault(),"enter method sendImageFile. [thread_id,sms_id,uuid,filepath,quality]=%d,%d,%s,%s,%d", thread_id,sms_id,uuid,filepath,quality));
+ VerificationUtil.isImageFile(filepath);
+// VerificationUtil.isFileSizeToLarge(filepath,
+// VerificationUtil.getImageFtMaxSize(context));
+ if (quality < 0 || quality > 100) {
+ LogHelper.i("quality field value must be between 0 to 100");
+ return;
+ }
+ if (quality == 100) {
+ VerificationUtil.isFileSizeToLarge(filepath, this.getImageFtMaxSize());
+ }
+
+ try{
+ myApi.sendImageFile(thread_id, sms_id, uuid , filepath, quality);
+ }catch(Exception e){
+ LogHelper.e(e.getMessage(), e);
+ }
+ }
+
+ /**
+ * Send a audio message to the public accounts.
+ *
+ * @param thread_id the message threadId
+ * @param sms_id sms_id system SMS id, -1 if didn't use system SMS
+ * @param uuid the public account uuid
+ * @param filepath path of audio file
+ * @param recordTime the length that audio playing
+ * @throws FileSuffixException
+ * @throws FileTransferException
+ * @throws FileDurationException
+ * @throws RemoteException the remote exception
+ */
+ public void sendAudioFile(long thread_id, long sms_id, String uuid, String filepath, int recordTime, boolean isRecord) throws ServiceDisconnectedException, FileSuffixException, FileTransferException, FileDurationException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format( Locale.getDefault(),"enter method sendAudioFile. [thread_id,sms_id,uuid,filepath,recordTime,isRecord]=%d,%d,%s,%s,%d,%b", thread_id,sms_id,uuid,filepath,recordTime,isRecord));
+ VerificationUtil.isAudioFile(filepath);
+ if(isRecord){
+ VerificationUtil.isAudioDurationToLong(context, filepath, this.getAudioMaxTime(), recordTime);
+ }
+ VerificationUtil.isFileSizeToLarge(filepath, this.getVideoFtMaxSize());
+// VerificationUtil.isFileSizeToLarge(filepath,
+// VerificationUtil.getVideoFtMaxSize(context));
+ try {
+ myApi.sendAudioFile(thread_id, sms_id, uuid, filepath, recordTime);
+ } catch (Exception e) {
+ LogHelper.e(e.getMessage(),e);
+ }
+ }
+
+ /**
+ * Send a vedio message to the public accounts.
+ *
+ * @param thread_id the message threadId
+ * @param sms_id sms_id system SMS id, -1 if didn't use system SMS
+ * @param uuid the public account uuid
+ * @param filepath path of vedio file
+ * @param length the length that video playing
+ * @throws FileSuffixException
+ * @throws FileTransferException
+ * @throws FileDurationException
+ * @throws RemoteException the remote exception
+ */
+ public void sendVideoFile(long thread_id, long sms_id, String uuid, String filepath, int length, boolean isRecord) throws ServiceDisconnectedException, FileSuffixException, FileTransferException, FileDurationException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format( Locale.getDefault(),"enter method sendVideoFile. [thread_id,sms_id,uuid,filepath,length,isRecord]=%d,%d,%s,%s,%d,%b", thread_id,sms_id,uuid,filepath,length,isRecord));
+ VerificationUtil.isVideoFile(filepath);
+ if(isRecord){
+ VerificationUtil.isVedioDurationToLong(context, filepath, this.getVideoMaxTime(), length);
+ }
+ VerificationUtil.isFileSizeToLarge(filepath, this.getVideoFtMaxSize());
+// VerificationUtil.isFileSizeToLarge(filepath,
+// VerificationUtil.getVideoFtMaxSize(context));
+ try {
+ myApi.sendVideoFile(thread_id, sms_id, uuid, filepath, length);
+ } catch (Exception e) {
+ LogHelper.e(e.getMessage(),e);
+ }
+ }
+
+ /**
+ * Send a location message to the public accounts.
+ *
+ * @param thread_id the message threadId
+ * @param sms_id sms_id system SMS id, -1 if didn't use system SMS
+ * @param uuid the public account uuid
+ * @param lat the longitude
+ * @param lng the latitude
+ * @param text the text of location
+ * @throws RemoteException the remote exception
+ */
+ public void sendLocation(long thread_id, long sms_id, String uuid, double lat, double lng, String text) throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format( Locale.getDefault(),"enter method sendLocation. [thread_id,sms_id,uuid,lat,lng,text]=%d,%d,%s,%f,%f,%s", thread_id,sms_id,uuid,lat,lng,text));
+ try {
+ myApi.sendLocation(thread_id, sms_id, uuid, lat, lng, text);
+ } catch (Exception e) {
+ LogHelper.e(e.getMessage(),e);
+ }
+ }
+
+ /**
+ * Send a business card message.
+ *
+ * @param thread_id the message threadId
+ * @param sms_id sms_id system SMS id, -1 if didn't use system SMS
+ * @param uuid the public account uuid
+ * @param rcsContact throws ApiIsNullException {
+ VerificationUtil.ApiIsNull(myApi);@link RCSContact} Object
+ * @throws RemoteException the remote exception
+ */
+ public void sendVCard(long thread_id, long sms_id, String uuid, RCSContact rcsContact) throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format( Locale.getDefault(),"enter method sendVCard. [thread_id,sms_id,uuid,rcsContact]=%d,%d,%s,%s", thread_id,sms_id,uuid,rcsContact.toString()));
+ try {
+ myApi.sendVCard(thread_id, sms_id, uuid, rcsContact);
+ } catch (Exception e) {
+ LogHelper.e(e.getMessage(),e);
+ }
+ }
+
+ /**
+ * Send a menu message to the public accounts.
+ *
+ * @param uuid the public account uuid
+ * @param text the message info
+ * @throws RemoteException the remote exception
+ */
+ public void sendMenuMessage(String uuid, String text) throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ try {
+ myApi.sendMenuMessage(uuid, text);
+ } catch (Exception e) {
+ LogHelper.e(e.getMessage(),e);
+ }
+ }
+
+ /**
+ * Send a business card message.
+ *
+ * @param thread_id the message threadId
+ * @param sms_id sms_id system SMS id, -1 if didn't use system SMS
+ * @param uuid the public account uuid
+ * @param vcardFilePath throws ApiIsNullException {
+ VerificationUtil.ApiIsNull(myApi);@link RCSContact} Object
+ * @throws RemoteException the remote exception
+ */
+ public void sendVCardByPath(long thread_id, long sms_id, String uuid, String vcardFilePath) throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format( Locale.getDefault(),"enter method vcardFilePath. [thread_id,sms_id,uuid,vcardFilePath]=%d,%d,%s,%s", thread_id,sms_id,uuid,vcardFilePath));
+ try {
+ myApi.sendVCardByPath(thread_id, sms_id, uuid, vcardFilePath);
+ } catch (Exception e) {
+ LogHelper.e(e.getMessage(),e);
+ }
+ }
+
+ public void deleteMessage(String messageId) throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ try {
+ myApi.deleteMessage(messageId);
+ } catch (Exception e) {
+ LogHelper.e(e.getMessage(), e);
+ }
+ }
+
+ public void deleteMessageByThreadId(long thread_id) throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ try {
+ myApi.deleteMessageByThreadId(thread_id);
+ } catch (Exception e) {
+ LogHelper.e(e.getMessage(), e);
+ }
+ }
+
+ public void deleteMessageByUuid(String uuid) throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ try {
+ myApi.deleteMessageByUuid(uuid);
+ } catch (Exception e) {
+ LogHelper.e(e.getMessage(), e);
+ }
+ }
+
+ public void sendVCardList(long thread_id, long sms_id, String uuid, List<RCSContact> contactList) throws ServiceDisconnectedException {
+ LogHelper.i(String.format( Locale.getDefault(),"enter method:sendVCardList. [thread_id,sms_id,uuid,contactList]=%d,%d,%s,%s", thread_id,sms_id,uuid,contactList.toString()));
+ VerificationUtil.ApiIsNull(myApi);
+ try {
+ myApi.sendVCardList(thread_id, sms_id, uuid, contactList);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ }
+
+ public long getImageFtMaxSize() throws ServiceDisconnectedException {
+ LogHelper.i(String.format( Locale.getDefault(),"enter method:getImageFtMaxSize. "));
+ VerificationUtil.ApiIsNull(myApi);
+ try {
+ return myApi.getImageFtMaxSize();
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ return 0;
+ }
+
+ public long getAudioMaxTime() throws ServiceDisconnectedException {
+ LogHelper.i(String.format( Locale.getDefault(),"enter method:getAudioMaxTime. "));
+ VerificationUtil.ApiIsNull(myApi);
+ try {
+ return myApi.getAudioMaxTime();
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ return 0;
+ }
+
+ public long getVideoMaxTime() throws ServiceDisconnectedException {
+ LogHelper.i(String.format( Locale.getDefault(),"enter method:getVideoMaxTime. "));
+ VerificationUtil.ApiIsNull(myApi);
+ try {
+ return myApi.getVideoMaxTime();
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ return 0;
+ }
+
+ public long getVideoFtMaxSize() throws ServiceDisconnectedException {
+ LogHelper.i(String.format( Locale.getDefault(),"enter method:getVideoFtMaxSize. "));
+ VerificationUtil.ApiIsNull(myApi);
+ try {
+ return myApi.getVideoFtMaxSize();
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ return 0;
+ }
+}
diff --git a/rcs_service_api/src/com/suntek/mway/rcs/client/api/impl/callback/ConferenceCallback.java b/rcs_service_api/src/com/suntek/mway/rcs/client/api/impl/callback/ConferenceCallback.java
new file mode 100644
index 0000000..db53e7e
--- /dev/null
+++ b/rcs_service_api/src/com/suntek/mway/rcs/client/api/impl/callback/ConferenceCallback.java
@@ -0,0 +1,41 @@
+/*
+ * Copyright (c) 2014 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.api.impl.callback;
+
+import android.os.RemoteException;
+
+import com.suntek.mway.rcs.client.api.plugin.callback.IConferenceCallback;
+import com.suntek.mway.rcs.client.api.plugin.entity.profile.Avatar;
+
+public abstract class ConferenceCallback extends IConferenceCallback.Stub {
+ public ConferenceCallback() {
+ }
+
+ @Override
+ public void onRefreshAvatar(Avatar avatar, int resultCode, String resultDesc)
+ throws RemoteException {
+ // TODO Auto-generated method stub
+
+ }
+}
diff --git a/rcs_service_api/src/com/suntek/mway/rcs/client/api/impl/groupchat/ConfApi.java b/rcs_service_api/src/com/suntek/mway/rcs/client/api/impl/groupchat/ConfApi.java
new file mode 100644
index 0000000..5b249be
--- /dev/null
+++ b/rcs_service_api/src/com/suntek/mway/rcs/client/api/impl/groupchat/ConfApi.java
@@ -0,0 +1,388 @@
+/*
+ * Copyright (c) 2014 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.api.impl.groupchat;
+
+import java.util.List;
+import java.util.Locale;
+
+import android.content.ComponentName;
+import android.content.ServiceConnection;
+import android.os.IBinder;
+import android.os.RemoteException;
+
+import com.suntek.mway.rcs.client.api.ClientApi;
+import com.suntek.mway.rcs.client.api.exception.MemberFullException;
+import com.suntek.mway.rcs.client.api.im.IGroupManagerApi;
+import com.suntek.mway.rcs.client.api.impl.callback.ConferenceCallback;
+import com.suntek.mway.rcs.client.api.provider.model.GroupChatModel;
+import com.suntek.mway.rcs.client.api.provider.model.GroupChatUser;
+import com.suntek.mway.rcs.client.api.util.ServiceDisconnectedException;
+import com.suntek.mway.rcs.client.api.util.VerificationUtil;
+import com.suntek.mway.rcs.client.api.util.log.LogHelper;
+public class ConfApi extends ClientApi {
+ private static String serviceName = "com.suntek.mway.rcs.app.service.api.impl.im.GroupManagerApiService";
+
+ IGroupManagerApi myApi;
+ private ServiceConnection mConnection = new ServiceConnection() {
+ public void onServiceConnected(ComponentName className, IBinder service) {
+ LogHelper.d("client api connect service");
+ myApi = IGroupManagerApi.Stub.asInterface(service);
+ notifyServiceConnected();
+ }
+
+
+ public void onServiceDisconnected(ComponentName className) {
+ if(isNormallyClosed || reconnectionTimes > MAX_RECONECTION_TIMES) {
+ LogHelper.d("client api disconnect service");
+ myApi = null;
+ notifyServiceDisconnected();
+ } else {
+ LogHelper.d("illegal call client api disconnect service :"
+ + reconnectionTimes);
+ init(context, rcsListener);
+ if (!isBinded()) {
+ // app is uninstalled
+ myApi = null;
+ notifyServiceDisconnected();
+ }
+ reconnectionTimes++;
+ }
+ }
+ };
+
+ public ConfApi() {
+ // TODO Auto-generated constructor stub
+ super(serviceName);
+ super.initServiceConnect(mConnection);
+ }
+
+ public String createGroupChat(String subject,List<String> users) throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format( Locale.getDefault(),"enter method createGroupChat. [subject,users]=%s,%s", subject,users.toString()));
+ try {
+ return myApi.createGroupChat(subject, users);
+ } catch (Exception ex) {
+ // TODO Auto-generated catch block
+ LogHelper.e(ex.getMessage(),ex);
+ }
+ return null;
+ }
+
+ public void agreeToJoinGroup(String conversationId ,String contributionId ,String chatUri ,
+ String subject , String numberData, long inviteTime) throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format( Locale.getDefault(),"enter method agreeToJoinGroup. [conversationId,contributionId,chatUri,subject,numberData,inviteTime]=%s,%s,%s,%s,%s,%d", conversationId,contributionId,chatUri,subject,numberData,inviteTime));
+ try {
+ myApi.agreeToJoinGroup(conversationId, contributionId, chatUri, subject, numberData, inviteTime);
+ } catch (Exception ex) {
+ // TODO Auto-generated catch block
+ LogHelper.e(ex.getMessage(),ex);
+ }
+ }
+
+ public void refuseToJoinGroup(String conversationId) throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format( Locale.getDefault(),"enter method refuseToJoinGroup. [conversationId]=%s", conversationId));
+ try {
+ myApi.refuseToJoinGroup(conversationId);
+ } catch (Exception ex) {
+ // TODO Auto-generated catch block
+ LogHelper.e(ex.getMessage(),ex);
+ }
+ }
+
+ public void updateGroupSubject(String groupId,String newSubject) throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format( Locale.getDefault(),"enter method updateGroupSubject. [groupId,newSubject]=%s,%s", groupId,newSubject));
+ try {
+ myApi.updateGroupSubject(groupId, newSubject);
+ } catch (Exception ex) {
+ // TODO Auto-generated catch block
+ LogHelper.e(ex.getMessage(),ex);
+ }
+ }
+
+ public void modifyGroupMemo(String groupId,String memo) throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format( Locale.getDefault(),"enter method modifyGroupMemo. [groupId,memo]=%s,%s", groupId,memo));
+ try {
+ myApi.modifyGroupMemo(groupId, memo);
+ } catch (Exception ex) {
+ // TODO Auto-generated catch block
+ LogHelper.e(ex.getMessage(),ex);
+ }
+ }
+
+ public void disbandGroupChat(String groupId) throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format( Locale.getDefault(),"enter method disbandGroupChat. [groupId]=%s", groupId));
+ try {
+ myApi.disbandGroupChat(groupId);
+ } catch (Exception ex) {
+ // TODO Auto-generated catch block
+ LogHelper.e(ex.getMessage(),ex);
+ }
+ }
+
+ public void kickedOutOfGroupChat(String groupId,String number) throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format( Locale.getDefault(),"enter method kickedOutOfGroupChat. [groupId,number]=%s,%s", groupId,number));
+ try {
+ myApi.kickedOutOfGroupChat(groupId, number);
+ } catch (Exception ex) {
+ // TODO Auto-generated catch block
+ LogHelper.e(ex.getMessage(),ex);
+ }
+ }
+
+ public void assignGroupChairman(String groupId,String number) throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format( Locale.getDefault(),"enter method assignGroupChairman. [groupId,number]=%s,%s", groupId,number));
+ try {
+ myApi.assignGroupChairman(groupId, number);
+ } catch (Exception ex) {
+ // TODO Auto-generated catch block
+ LogHelper.e(ex.getMessage(),ex);
+ }
+ }
+ public void quitGroupChat(String groupId,String number) throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format( Locale.getDefault(),"enter method quitGroupChat. [groupId,number]=%s,%s", groupId,number));
+ try {
+ myApi.quitGroupChat(groupId, number);
+ } catch (Exception ex) {
+ // TODO Auto-generated catch block
+ LogHelper.e(ex.getMessage(),ex);
+ }
+ }
+
+ @Deprecated
+ public void quitGroupChatEx(String groupId,String oldChairman,String newChairman) throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format( Locale.getDefault(),"enter method quitGroupChat. [groupId,oldChairman,newChairman]=%s,%s,%s", groupId,oldChairman,newChairman));
+ try {
+ myApi.quitGroupChatEx(groupId, oldChairman, newChairman);
+ } catch (Exception ex) {
+ // TODO Auto-generated catch block
+ LogHelper.e(ex.getMessage(),ex);
+ }
+ }
+
+ public void setMyAlias(String groupId,String alias) throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format( Locale.getDefault(),"enter method setMyAlias. [groupId,alias]=%s,%s", groupId,alias));
+ try {
+ myApi.setMyAlias(groupId, alias);
+ } catch (Exception ex) {
+ // TODO Auto-generated catch block
+ LogHelper.e(ex.getMessage(),ex);
+ }
+ }
+ public String getGroupChatMemberDisplayName(String groupId,String number) throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format( Locale.getDefault(),"enter method getGroupChatMemberDisplayName. [groupId,number]=%s,%s", groupId,number));
+ try {
+ return myApi.getGroupChatMemberDisplayName(groupId, number);
+ } catch (Exception ex) {
+ // TODO Auto-generated catch block
+ LogHelper.e(ex.getMessage(),ex);
+ }
+ return null;
+ }
+
+ public GroupChatUser getGroupChairman(String groupId) throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format( Locale.getDefault(),"enter method getGroupChairman. [groupId]=%s", groupId));
+ try {
+ return myApi.getGroupChairman(groupId);
+ } catch (Exception ex) {
+ // TODO Auto-generated catch block
+ LogHelper.e(ex.getMessage(),ex);
+ }
+ return null;
+ }
+ public void inviteToJoinGroupChat(String groupId, String number) throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format( Locale.getDefault(),"enter method inviteToJoinGroupChat. [groupId,number]=%s,%s", groupId,number));
+ try {
+ myApi.inviteOneMemberToGroupChat(groupId, number);
+ } catch (RemoteException ex) {
+ // TODO Auto-generated catch block
+ LogHelper.e(ex.getMessage(),ex);
+ }
+ }
+
+ public void inviteToJoinGroupChat(String groupId, List<String> numbers) throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format( Locale.getDefault(),"enter method inviteToJoinGroupChat. [groupId,numbers]=%s,%s", groupId,numbers.toString()));
+ try {
+ myApi.inviteToJoinGroupChat(groupId, numbers);
+ } catch (RemoteException ex) {
+ // TODO Auto-generated catch block
+ LogHelper.e(ex.getMessage(),ex);
+ }
+ }
+
+ public void queryMemberHeadPic(String groupId, String number,int pixel, ConferenceCallback confCallback) throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format( Locale.getDefault(),"enter method queryMemberHeadPic. [groupId,number]=%s,%s", groupId,number));
+ try {
+ myApi.queryMemberHeadPic(groupId, number,pixel, confCallback);
+ } catch (Exception ex) {
+ // TODO Auto-generated catch block
+ LogHelper.e(ex.getMessage(),ex);
+ }
+ }
+
+ public void refreshMemberHeadPic(String groupId, String number,int pixel, ConferenceCallback confCallback) throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format( Locale.getDefault(),"enter method refreshMemberHeadPic. [groupId,number]=%s,%s", groupId,number));
+ try {
+ myApi.refreshMemberHeadPic(groupId, number,pixel, confCallback);
+ } catch (Exception ex) {
+ // TODO Auto-generated catch block
+ LogHelper.e(ex.getMessage(),ex);
+ }
+
+ }
+ public GroupChatModel getLastGroupModel()throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format( Locale.getDefault(),"enter method getAllGroupId"));
+ try {
+ GroupChatModel gcm = myApi.getLastGroupModel();
+ return gcm;
+ } catch (Exception ex) {
+ // TODO Auto-generated catch block
+ LogHelper.e(ex.getMessage(),ex);
+ }
+ return null;
+ }
+
+ public void updateGroupPolicy(String groupId, int policy) throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ try {
+ myApi.updateGroupPolicy(groupId, policy);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ }
+
+ public List<GroupChatUser> getGroupChatUsersAllowChairman(String groupId)
+ throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format(Locale.getDefault(),
+ "enter method:getGroupChatUsersAllowChairman. [groupId]=%s",
+ groupId));
+ try {
+ return myApi.getGroupChatUsersAllowChairman(groupId);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ return null;
+ }
+
+ public List<GroupChatUser> getGroupChatUsersByGroupId(String groupId)
+ throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format(Locale.getDefault(),
+ "enter method:getGroupChatUsersByGroupId. [groupId]=%s",
+ groupId));
+ try {
+ return myApi.getGroupChatUsersByGroupId(groupId);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ return null;
+ }
+
+ public GroupChatModel getGroupChatByThreadId(String threadId)
+ throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper
+ .i(String.format(Locale.getDefault(),
+ "enter method:getGroupChatByThreadId. [threadId]=%s",
+ threadId));
+ try {
+ return myApi.getGroupChatByThreadId(threadId);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ return null;
+ }
+
+ public GroupChatModel getGroupChatByChatUri(String chatUri)
+ throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format(Locale.getDefault(),
+ "enter method:getGroupChatByChatUri. [chatUri]=%s", chatUri));
+ try {
+ return myApi.getGroupChatByChatUri(chatUri);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ return null;
+ }
+
+ public String getGroupChatDomainName() throws ServiceDisconnectedException {
+ LogHelper.i(String.format( Locale.getDefault(),"enter method:getGroupChatDomainName. "));
+ VerificationUtil.ApiIsNull(myApi);
+ try {
+ return myApi.getGroupChatDomainName();
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ return null;
+ }
+
+ public String getPublicAccountDomainName() throws ServiceDisconnectedException {
+ LogHelper.i(String.format( Locale.getDefault(),"enter method:getPublicAccountDomainName. "));
+ VerificationUtil.ApiIsNull(myApi);
+ try {
+ return myApi.getPublicAccountDomainName();
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ return null;
+ }
+
+ public void refuseAssigedAsChairman(String chatUri, long inviteTime, String conversationId, String contributionId) throws ServiceDisconnectedException {
+ LogHelper.i(String.format( Locale.getDefault(),"enter method:refuseAssigedAsChairman. [chatUri,inviteTime,conversationId,contributionId]=%s,%d,%s,%s", chatUri,inviteTime,conversationId,contributionId));
+ VerificationUtil.ApiIsNull(myApi);
+ try {
+ myApi.refuseAssigedAsChairman(chatUri, inviteTime, conversationId, contributionId);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ }
+
+ public void acceptAssignedAsChairman(String chatUri, long inviteTime, String conversationId, String contributionId) throws ServiceDisconnectedException {
+ LogHelper.i(String.format( Locale.getDefault(),"enter method:acceptAssignedAsChairman. [chatUri,inviteTime,conversationId,contributionId]=%s,%d,%s,%s", chatUri,inviteTime,conversationId,contributionId));
+ VerificationUtil.ApiIsNull(myApi);
+ try {
+ myApi.acceptAssignedAsChairman(chatUri, inviteTime, conversationId, contributionId);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ }
+}
diff --git a/rcs_service_api/src/com/suntek/mway/rcs/client/api/login/impl/LoginApi.java b/rcs_service_api/src/com/suntek/mway/rcs/client/api/login/impl/LoginApi.java
new file mode 100644
index 0000000..5b8be6e
--- /dev/null
+++ b/rcs_service_api/src/com/suntek/mway/rcs/client/api/login/impl/LoginApi.java
@@ -0,0 +1,97 @@
+/*
+ * Copyright (c) 2014 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.api.login.impl;
+
+import java.util.Locale;
+
+import android.content.ComponentName;
+import android.content.ServiceConnection;
+import android.os.IBinder;
+
+import com.suntek.mway.rcs.client.api.ClientApi;
+import com.suntek.mway.rcs.client.api.login.ILoginApi;
+import com.suntek.mway.rcs.client.api.setting.LoginUser;
+import com.suntek.mway.rcs.client.api.util.ServiceDisconnectedException;
+import com.suntek.mway.rcs.client.api.util.VerificationUtil;
+import com.suntek.mway.rcs.client.api.util.log.LogHelper;
+
+
+public class LoginApi extends ClientApi{
+ /** The service name. */
+ private static String serviceName = "com.suntek.mway.rcs.app.service.api.impl.login.LoginApiService";
+ /** The api. */
+ private static ILoginApi myApi;
+
+ /** The service connection. */
+ private ServiceConnection mConnection = new ServiceConnection() {
+ public void onServiceConnected(ComponentName className, IBinder service) {
+ myApi = ILoginApi.Stub.asInterface(service);
+ notifyServiceConnected();
+ LogHelper.d("ILoginApi have success connect, api="+myApi);
+ }
+
+ public void onServiceDisconnected(ComponentName className) {
+ if(isNormallyClosed || reconnectionTimes > MAX_RECONECTION_TIMES) {
+ LogHelper.d("ILoginApi api disconnect service");
+ myApi = null;
+ notifyServiceDisconnected();
+ } else {
+ LogHelper.d("illegal call ILoginApi api disconnect service :"
+ + reconnectionTimes);
+ init(context, rcsListener);
+ if (!isBinded()) {
+ // app is uninstalled
+ myApi = null;
+ notifyServiceDisconnected();
+ }
+ reconnectionTimes++;
+ }
+ }
+ };
+
+ public LoginApi() {
+ super(serviceName);
+ super.initServiceConnect(mConnection);
+ }
+
+ public void login(LoginUser loginUser, LoginEventListener listener)throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format( Locale.getDefault(),"enter method login.loginUser=" + loginUser.toString()));
+ try{
+ myApi.login(loginUser, listener);
+ }catch(Exception ex){
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ }
+
+ public void logout() throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format( Locale.getDefault(),"enter method logout"));
+ try{
+ myApi.logout();
+ }catch(Exception ex){
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ }
+}
diff --git a/rcs_service_api/src/com/suntek/mway/rcs/client/api/login/impl/LoginEventListener.java b/rcs_service_api/src/com/suntek/mway/rcs/client/api/login/impl/LoginEventListener.java
new file mode 100644
index 0000000..9bd1723
--- /dev/null
+++ b/rcs_service_api/src/com/suntek/mway/rcs/client/api/login/impl/LoginEventListener.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (c) 2014 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.api.login.impl;
+import com.suntek.mway.rcs.client.api.login.ILoginEventListener;
+public abstract class LoginEventListener extends ILoginEventListener.Stub{
+ public LoginEventListener(){}
+}
diff --git a/rcs_service_api/src/com/suntek/mway/rcs/client/api/mcloud/McloudFileApi.java b/rcs_service_api/src/com/suntek/mway/rcs/client/api/mcloud/McloudFileApi.java
new file mode 100644
index 0000000..f7de0a8
--- /dev/null
+++ b/rcs_service_api/src/com/suntek/mway/rcs/client/api/mcloud/McloudFileApi.java
@@ -0,0 +1,188 @@
+/*
+ * Copyright (c) 2014 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.api.mcloud;
+
+import java.util.List;
+import java.util.Locale;
+
+import android.content.ComponentName;
+import android.content.ServiceConnection;
+import android.os.IBinder;
+
+import com.suntek.mway.rcs.client.api.ClientApi;
+import com.suntek.mway.rcs.client.api.plugin.entity.mcloudfile.FileNode;
+import com.suntek.mway.rcs.client.api.plugin.entity.mcloudfile.TransNode;
+import com.suntek.mway.rcs.client.api.util.ServiceDisconnectedException;
+import com.suntek.mway.rcs.client.api.util.VerificationUtil;
+import com.suntek.mway.rcs.client.api.util.log.LogHelper;
+
+public class McloudFileApi extends ClientApi {
+ private static String serviceName = "com.suntek.mway.rcs.app.service.api.impl.mcloud.McloudApiService";
+ IMcloudFileApi myApi;
+
+ private ServiceConnection mConnection = new ServiceConnection() {
+ public void onServiceConnected(ComponentName className, IBinder service) {
+ LogHelper.d("client api connect service");
+ myApi = IMcloudFileApi.Stub.asInterface(service);
+ notifyServiceConnected();
+ }
+
+ public void onServiceDisconnected(ComponentName className) {
+ if(isNormallyClosed || reconnectionTimes > MAX_RECONECTION_TIMES) {
+ LogHelper.d("client api disconnect service");
+ myApi = null;
+ notifyServiceDisconnected();
+ } else {
+ LogHelper.d("illegal call client api disconnect service :"
+ + reconnectionTimes);
+ init(context, rcsListener);
+ if (!isBinded()) {
+ // app is uninstalled
+ myApi = null;
+ notifyServiceDisconnected();
+ }
+ reconnectionTimes++;
+ }
+ }
+ };
+
+ public McloudFileApi() {
+ super(serviceName);
+ super.initServiceConnect(mConnection);
+ }
+
+ public void downloadFileFromUrl(String remoteUrl, String fileName, TransNode.TransOper transOper) throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format(Locale.getDefault(),
+ "enter method:downloadFileFromUrl. [remoteUrl,fileName,transOper]=%s,%d", remoteUrl, fileName, transOper.ordinal()));
+ try {
+ myApi.downloadFileFromUrl(remoteUrl, fileName, transOper.ordinal());
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ }
+
+ public void getShareFileList(int beginIndex, int endIndex) throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format(Locale.getDefault(),
+ "enter method:getShareFileList. [beginIndex,endIndex]=%d,%d",
+ beginIndex, endIndex));
+ try {
+ myApi.getShareFileList(beginIndex, endIndex);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ }
+
+ public void putFile(String localPath, String remotePath, TransNode.TransOper transOper) throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format(Locale.getDefault(),
+ "enter method:putFile. [localPath,remotePath,transOper]=%s,%s,%d",
+ localPath, remotePath, transOper.ordinal()));
+ try {
+ myApi.putFile(localPath, remotePath, transOper.ordinal());
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ }
+
+ public void shareFile(String fullPathInID, String shareDesc) throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format(Locale.getDefault(),
+ "enter method:shareFile. [fullPathInID,shareDesc]=%s,%s",
+ fullPathInID, shareDesc));
+ try {
+ myApi.shareFile(fullPathInID, shareDesc);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ }
+
+ public void shareFileAndSend(String fullPathInID, String shareDesc,
+ String contact, long threadId, String beforeText, String afterText)
+ throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper
+ .i(String.format(
+ Locale.getDefault(),
+ "enter method:shareFileAndSend. [fullPathInID,shareDesc,contact,threadId,beforeText,afterText]=%s,%s,%s,%d,%s,%s",
+ fullPathInID, shareDesc, contact, threadId, beforeText,
+ afterText));
+ try {
+ myApi.shareFileAndSend(fullPathInID, shareDesc, contact, threadId,
+ beforeText, afterText);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ }
+
+ public void shareFileAndSendGroup(String fullPathInID, String shareDesc,
+ long threadId, String conversationId, String groupId,
+ String beforeText, String afterText)
+ throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper
+ .i(String.format(
+ Locale.getDefault(),
+ "enter method:shareFileAndSendGroup. [fullPathInID,shareDesc,threadId,conversationId,groupId,beforeText,afterText]=%s,%s,%d,%s,%s,%s,%s",
+ fullPathInID, shareDesc, threadId, conversationId,
+ groupId, beforeText, afterText));
+ try {
+ myApi.shareFileAndSendGroup(fullPathInID, shareDesc, threadId,
+ conversationId, groupId, beforeText, afterText);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ }
+
+ public void shareFileAndSendOne2Many(String fullPathInID, String shareDesc,
+ List<String> contacts, long threadId, String beforeText,
+ String afterText) throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper
+ .i(String.format(
+ Locale.getDefault(),
+ "enter method:shareFileAndSendOne2Many. [fullPathInID,shareDesc,contacts,threadId,beforeText,afterText]=%s,%s,%s,%d,%s,%s",
+ fullPathInID, shareDesc, contacts.toString(), threadId,
+ beforeText, afterText));
+ try {
+ myApi.shareFileAndSendOne2Many(fullPathInID, shareDesc, contacts,
+ threadId, beforeText, afterText);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ }
+
+ public void getRemoteFileList(String remotePath, int beginIndex, int endIndex, FileNode.Order fileOrder) throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format(Locale.getDefault(),
+ "enter method:getRemoteFileList. [remotePath,beginIndex,endIndex,fileOrder]=%s,%d,%d,%d",
+ remotePath, beginIndex, endIndex, fileOrder.ordinal()));
+ try {
+ myApi.getRemoteFileList(remotePath, beginIndex, endIndex, fileOrder.ordinal());
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ }
+}
diff --git a/rcs_service_api/src/com/suntek/mway/rcs/client/api/mcontact/McontactApi.java b/rcs_service_api/src/com/suntek/mway/rcs/client/api/mcontact/McontactApi.java
new file mode 100644
index 0000000..d7324e0
--- /dev/null
+++ b/rcs_service_api/src/com/suntek/mway/rcs/client/api/mcontact/McontactApi.java
@@ -0,0 +1,213 @@
+/*
+ * Copyright (c) 2014 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.api.mcontact;
+
+import java.util.Locale;
+
+import android.content.ComponentName;
+import android.content.ServiceConnection;
+import android.os.IBinder;
+
+import com.suntek.mway.rcs.client.api.ClientApi;
+import com.suntek.mway.rcs.client.api.plugin.callback.IMContactSyncListener;
+import com.suntek.mway.rcs.client.api.plugin.entity.mcontact.IntervalAction;
+import com.suntek.mway.rcs.client.api.plugin.entity.mcontact.SyncAction;
+import com.suntek.mway.rcs.client.api.util.ServiceDisconnectedException;
+import com.suntek.mway.rcs.client.api.util.VerificationUtil;
+import com.suntek.mway.rcs.client.api.util.log.LogHelper;
+
+public class McontactApi extends ClientApi {
+ private static String serviceName = "com.suntek.mway.rcs.app.service.api.impl.mcontact.McontactApiService";
+ IMcontactApi myApi;
+
+ private ServiceConnection mConnection = new ServiceConnection() {
+ public void onServiceConnected(ComponentName className, IBinder service) {
+ LogHelper.d("client api connect service");
+ myApi = IMcontactApi.Stub.asInterface(service);
+ notifyServiceConnected();
+ }
+
+ public void onServiceDisconnected(ComponentName className) {
+ if (isNormallyClosed || reconnectionTimes > MAX_RECONECTION_TIMES) {
+ LogHelper.d("client api disconnect service");
+ myApi = null;
+ notifyServiceDisconnected();
+ } else {
+ LogHelper.d("illegal call client api disconnect service :"
+ + reconnectionTimes);
+ init(context, rcsListener);
+ if (!isBinded()) {
+ // app is uninstalled
+ myApi = null;
+ notifyServiceDisconnected();
+ }
+ reconnectionTimes++;
+ }
+ }
+ };
+
+ public McontactApi() {
+ super(serviceName);
+ super.initServiceConnect(mConnection);
+ }
+
+ public void cancelIntervalSync() throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format(Locale.getDefault(),
+ "enter method:downloadFileFromUrl. "));
+ try {
+ myApi.cancelIntervalSync();
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ }
+
+ public boolean getEnableAutoSync() throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format(Locale.getDefault(),
+ "enter method:getEnableAutoSync. "));
+ try {
+ return myApi.getEnableAutoSync();
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ return false;
+ }
+
+ public int getLocalContactCounts() throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format(Locale.getDefault(),
+ "enter method:getLocalContactCounts. "));
+ try {
+ return myApi.getLocalContactCounts();
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ return 0;
+ }
+
+ public boolean getOnlySyncEnableViaWifi()
+ throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format(Locale.getDefault(),
+ "enter method:getOnlySyncEnableViaWifi. "));
+ try {
+ return myApi.getOnlySyncEnableViaWifi();
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ return false;
+ }
+
+ public int getRemoteContactCounts() throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format(Locale.getDefault(),
+ "enter method:getRemoteContactCounts. "));
+ try {
+ return myApi.getRemoteContactCounts();
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ return 0;
+ }
+
+ public void setOnlySyncEnableViaWifi(boolean status)
+ throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format(Locale.getDefault(),
+ "enter method:setOnlySyncEnableViaWifi. [status]=%b", status));
+ try {
+ myApi.setOnlySyncEnableViaWifi(status);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ }
+
+ public void doSync(SyncAction action, IMContactSyncListener listener)
+ throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format(Locale.getDefault(),
+ "enter method:doSync. [action]=%d", action.ordinal()));
+ try {
+ myApi.doSync(action.ordinal(), listener);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ }
+
+ public SyncAction getAutoSync() throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format(Locale.getDefault(),
+ "enter method:getAutoSync. "));
+ try {
+ return SyncAction.valueOf(myApi.getAutoSync());
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ return null;
+ }
+
+ public void setEnableAutoSync(boolean status, SyncAction syncAction)
+ throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format(Locale.getDefault(),
+ "enter method:setEnableAutoSync. [status, syncAction]=%b,%d",
+ status, syncAction.ordinal()));
+ try {
+ myApi.setEnableAutoSync(status, syncAction.ordinal());
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ }
+
+ public void startIntervalSync(SyncAction syncAction,
+ IntervalAction intervalAction, long time)
+ throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper
+ .i(String.format(
+ Locale.getDefault(),
+ "enter method:startIntervalSync. [syncAction, intervalAction, time]=%d,%d,%d",
+ syncAction.ordinal(), intervalAction.ordinal(), time));
+ try {
+ myApi.startIntervalSync(syncAction.ordinal(),
+ intervalAction.ordinal(), time);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ }
+
+ public IntervalAction getIntervalSyncMode() throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format(Locale.getDefault(),
+ "enter method:getIntervalSyncMode. "));
+ try {
+ return IntervalAction.valueOf(myApi.getIntervalSyncMode());
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ return null;
+ }
+
+}
diff --git a/rcs_service_api/src/com/suntek/mway/rcs/client/api/plugincenter/PluginCenterApi.java b/rcs_service_api/src/com/suntek/mway/rcs/client/api/plugincenter/PluginCenterApi.java
new file mode 100644
index 0000000..5a60e22
--- /dev/null
+++ b/rcs_service_api/src/com/suntek/mway/rcs/client/api/plugincenter/PluginCenterApi.java
@@ -0,0 +1,85 @@
+/*
+ * Copyright (c) 2014 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.api.plugincenter;
+
+import java.util.Locale;
+
+import android.content.ComponentName;
+import android.content.ServiceConnection;
+import android.os.IBinder;
+
+import com.suntek.mway.rcs.client.api.ClientApi;
+import com.suntek.mway.rcs.client.api.support.RcsSupportApi;
+import com.suntek.mway.rcs.client.api.util.ServiceDisconnectedException;
+import com.suntek.mway.rcs.client.api.util.VerificationUtil;
+import com.suntek.mway.rcs.client.api.util.log.LogHelper;
+
+public class PluginCenterApi extends ClientApi {
+ private static String serviceName = "com.suntek.mway.rcs.app.service.api.impl.plugincenter.PluginCenterApiService";
+ IPluginCenterApi myApi;
+
+ private ServiceConnection mConnection = new ServiceConnection() {
+ public void onServiceConnected(ComponentName className, IBinder service) {
+ LogHelper.d("client api connect service");
+ myApi = IPluginCenterApi.Stub.asInterface(service);
+ notifyServiceConnected();
+ }
+
+ public void onServiceDisconnected(ComponentName className) {
+ if (isNormallyClosed || reconnectionTimes > MAX_RECONECTION_TIMES) {
+ LogHelper.d("client api disconnect service");
+ myApi = null;
+ notifyServiceDisconnected();
+ } else {
+ LogHelper.d("illegal call client api disconnect service :"
+ + reconnectionTimes);
+ init(context, rcsListener);
+ if (!isBinded()) {
+ // app is uninstalled
+ myApi = null;
+ notifyServiceDisconnected();
+ }
+ reconnectionTimes++;
+ }
+ }
+ };
+
+ public PluginCenterApi() {
+ super(serviceName);
+ super.initServiceConnect(mConnection);
+ }
+
+ public void intentApk() throws ServiceDisconnectedException {
+ if (RcsSupportApi.isRcsPluginCenterInstalled(context)) {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format(Locale.getDefault(),
+ "enter method:intentApk. "));
+ try {
+ myApi.intentApk();
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ }
+ }
+}
diff --git a/rcs_service_api/src/com/suntek/mway/rcs/client/api/profile/callback/ProfileListener.java b/rcs_service_api/src/com/suntek/mway/rcs/client/api/profile/callback/ProfileListener.java
new file mode 100644
index 0000000..a8f963c
--- /dev/null
+++ b/rcs_service_api/src/com/suntek/mway/rcs/client/api/profile/callback/ProfileListener.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2014 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.api.profile.callback;
+
+import com.suntek.mway.rcs.client.api.plugin.callback.IProfileListener;
+import com.suntek.mway.rcs.client.api.plugin.entity.profile.QRCardImg;
+import com.suntek.mway.rcs.client.api.util.log.LogHelper;
+
+public abstract class ProfileListener extends IProfileListener.Stub {
+
+ /**
+ * The default implementation of this interface, the method did not want to expose upward.
+ */
+ public void onQRImgGet( QRCardImg qrImgObj, int resultCode, String resultDesc ) {
+ LogHelper.d("onQRImgGet(): resultCode --> "+resultCode + "resultDesc = " + resultDesc);;
+ }
+}
diff --git a/rcs_service_api/src/com/suntek/mway/rcs/client/api/profile/callback/QRImgListener.java b/rcs_service_api/src/com/suntek/mway/rcs/client/api/profile/callback/QRImgListener.java
new file mode 100644
index 0000000..0357f3c
--- /dev/null
+++ b/rcs_service_api/src/com/suntek/mway/rcs/client/api/profile/callback/QRImgListener.java
@@ -0,0 +1,61 @@
+/*
+ * Copyright (c) 2014 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.api.profile.callback;
+
+import com.suntek.mway.rcs.client.api.plugin.callback.IProfileListener;
+import com.suntek.mway.rcs.client.api.plugin.entity.profile.Avatar;
+import com.suntek.mway.rcs.client.api.plugin.entity.profile.Profile;
+import com.suntek.mway.rcs.client.api.util.log.LogHelper;
+
+public abstract class QRImgListener extends IProfileListener.Stub {
+
+ /**
+ * The default implementation of this interface, the method did not want to expose upward.
+ */
+ public void onProfileUpdated( int resultCode, String resultDesc ) {
+ LogHelper.d("onProfileUpdated(): resultCode --> "+resultCode + "resultDesc = " + resultDesc);
+ }
+
+ /**
+ * The default implementation of this interface, the method did not want to expose upward.
+ */
+ public void onAvatarUpdated( int resultCode, String resultDesc ) {
+ LogHelper.d("onAvatarUpdated(): resultCode --> "+resultCode + "resultDesc = " + resultDesc);
+ }
+
+ /**
+ * The default implementation of this interface, the method did not want to expose upward.
+ */
+ public void onAvatarGet( Avatar avatar, int resultCode, String resultDesc ) {
+ LogHelper.d("onAvatarGet(): resultCode --> "+resultCode + "resultDesc = " + resultDesc);
+ }
+
+ /**
+ * The default implementation of this interface, the method did not want to expose upward.
+ */
+ public void onProfileGet( Profile profile, int resultCode, String resultDesc ) {
+ LogHelper.d("onProfileGet(): resultCode --> "+resultCode + "resultDesc = " + resultDesc);
+ }
+
+}
diff --git a/rcs_service_api/src/com/suntek/mway/rcs/client/api/profile/impl/ProfileApi.java b/rcs_service_api/src/com/suntek/mway/rcs/client/api/profile/impl/ProfileApi.java
new file mode 100644
index 0000000..e8d2373
--- /dev/null
+++ b/rcs_service_api/src/com/suntek/mway/rcs/client/api/profile/impl/ProfileApi.java
@@ -0,0 +1,256 @@
+/*
+ * Copyright (c) 2014 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.api.profile.impl;
+
+import java.util.Locale;
+
+import android.content.ComponentName;
+import android.content.ServiceConnection;
+import android.os.IBinder;
+import android.os.RemoteException;
+
+import com.suntek.mway.rcs.client.api.ClientApi;
+import com.suntek.mway.rcs.client.api.plugin.IProfileApi;
+import com.suntek.mway.rcs.client.api.plugin.callback.IProfileListener;
+import com.suntek.mway.rcs.client.api.plugin.entity.profile.Avatar;
+import com.suntek.mway.rcs.client.api.plugin.entity.profile.Profile;
+import com.suntek.mway.rcs.client.api.profile.callback.ProfileListener;
+import com.suntek.mway.rcs.client.api.profile.callback.QRImgListener;
+import com.suntek.mway.rcs.client.api.util.ServiceDisconnectedException;
+import com.suntek.mway.rcs.client.api.util.VerificationUtil;
+import com.suntek.mway.rcs.client.api.util.log.LogHelper;
+
+/**
+ * <p>Title: ProfileApi class</p>
+ * <p>
+ * Description: The class <code>ProfileApi</code> offers the functions of
+ * operating the profile information.
+ * In order to use ProfileApi, one must to initialize the API
+ * in the method onCreate() in UI(Activity for example).<p></p>
+ * Here is the pseudo code example:<p></p>
+ * profileApi = new ProfileApi();<br/>
+ * profileApi.init(this);
+ * </p>
+ * <p>
+ * Copyright: Copyright (c) 2014
+ * </p>
+ * <p>
+ * Company: pci-suntek
+ * </p>
+ * @author YE JIE MING
+ * @version 1.0
+ *
+ */
+public class ProfileApi extends ClientApi {
+
+ /** The service name. */
+ private static String serviceName = "com.suntek.mway.rcs.app.service.api.impl.profile.ProfileApiService";
+
+ /** The api. */
+ private static IProfileApi myApi;
+
+ /** The service connection. */
+ private ServiceConnection mConnection = new ServiceConnection() {
+ public void onServiceConnected(ComponentName className, IBinder service) {
+ myApi = IProfileApi.Stub.asInterface(service);
+ notifyServiceConnected();
+ LogHelper.d("IProfileApi have success connect, api="+myApi);
+ }
+
+ public void onServiceDisconnected(ComponentName className) {
+ if(isNormallyClosed || reconnectionTimes > MAX_RECONECTION_TIMES) {
+ LogHelper.d("IProfileApi api disconnect service");
+ myApi = null;
+ notifyServiceDisconnected();
+ } else {
+ LogHelper.d("illegal call IProfileApi api disconnect service :"
+ + reconnectionTimes);
+ init(context, rcsListener);
+ if (!isBinded()) {
+ // app is uninstalled
+ myApi = null;
+ notifyServiceDisconnected();
+ }
+ reconnectionTimes++;
+ }
+ }
+ };
+
+ /**
+ * Instantiates a new profile api.
+ */
+ public ProfileApi() {
+ super(serviceName);
+ super.initServiceConnect(mConnection);
+ }
+
+ /**
+ * Sets the my profile.
+ *
+ * @param profile the profile
+ * @param listener the listener
+ */
+ public void setMyProfile(Profile profile, ProfileListener listener) throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format( Locale.getDefault(),"enter method setMyProfile. [profile]=%s", profile.toString()));
+ try {
+ myApi.setMyProfile(profile, listener);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(),ex);
+ }
+ }
+
+ /**
+ * Sets the my head pic.
+ *
+ * @param imgObj the img obj
+ * @param listener the listener
+ */
+ public void setMyHeadPic(Avatar imgObj,ProfileListener listener) throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format( Locale.getDefault(),"enter method setMyHeadPic. [imgObj]=%s", imgObj.toString()));
+ try {
+ myApi.setMyHeadPic(imgObj, listener);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(),ex);
+ }
+ }
+
+ /**
+ * Gets the my profile.
+ *
+ * @param listener the listener
+ * @return the my profile
+ */
+ public void getMyProfile(ProfileListener listener) throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format( Locale.getDefault(),"enter method getMyProfile. "));
+ try {
+ myApi.getMyProfile( listener);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(),ex);
+ }
+ }
+
+ /**
+ * Gets the my head pic.
+ *
+ * @param listener the listener
+ * @return the my head pic
+ */
+ public void getMyHeadPic(ProfileListener listener) throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format( Locale.getDefault(),"enter method getMyHeadPic. "));
+ try {
+ myApi.getMyHeadPic( listener);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(),ex);
+ }
+ }
+
+ /**
+ * Gets the head pic by contact.
+ *
+ * @param contactId the contact id
+ * @param listener the listener
+ * @return the head pic by contact
+ */
+ public void getHeadPicByContact(long contactId,ProfileListener listener) throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format( Locale.getDefault(),"enter method getHeadPicByContact. [contactId]=%d", contactId));
+ try {
+ myApi.getHeadPicByContact(contactId, listener);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(),ex);
+ }
+ }
+
+ /**
+ * Gets the head pic by number.
+ *
+ * @param number the number
+ * @param listener the listener
+ * @return the head pic by number
+ */
+ public void getHeadPicByNumber(String number,int pixel,ProfileListener listener) throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format( Locale.getDefault(),"enter method getHeadPicByNumber. [number]=%s", number));
+ if (!VerificationUtil.isNumber(number)) {
+ LogHelper.i("number field value error");
+ return;
+ }
+ try {
+ myApi.getHeadPicByNumber(VerificationUtil.formatNumber(number), pixel, listener);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(),ex);
+ }
+ }
+
+ /**
+ * Refresh my qr img.
+ *
+ * @param profile the profile
+ * @param includeEInfo the include e info
+ * @param listener the listener
+ */
+ public void refreshMyQRImg(Profile profile, boolean includeEInfo,QRImgListener listener) throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format( Locale.getDefault(),"enter method refreshMyQRImg. [profile,includeEInfo]=%s,%b", profile.toString(),includeEInfo));
+ try {
+ myApi.refreshMyQRImg(profile,includeEInfo, listener);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(),ex);
+ }
+ }
+
+ /**
+ * update the the contacts head photo at fixed time every day.
+ *
+ * @param hhmm The timing of the trigger. the time format is HH:mm in 24-hour time system
+ * @param listener a callback whose method named onAvatarGet will be called
+ * @return
+ */
+ public void updateContactsHeadPicAtFixedRateEveryDay(String hhmm,
+ IProfileListener listener) throws ServiceDisconnectedException{
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format( Locale.getDefault(),"enter method updateContactsHeadPicAtFixedRateEveryDay. [hhmm]=%s", hhmm));
+ try {
+ myApi.updateContactsHeadPicAtFixedRateEveryDay(hhmm, listener);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(),ex);
+ }
+ }
+
+ public String getUpdateTimeOfContactsHeadPic() throws ServiceDisconnectedException{
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format( Locale.getDefault(),"enter method getUpdateTimeOfContactsHeadPic"));
+ try {
+ return myApi.getUpdateTimeOfContactsHeadPic();
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(),ex);
+ }
+ return null;
+ }
+
+}
diff --git a/rcs_service_api/src/com/suntek/mway/rcs/client/api/publicaccount/callback/PublicAccountCallback.java b/rcs_service_api/src/com/suntek/mway/rcs/client/api/publicaccount/callback/PublicAccountCallback.java
new file mode 100644
index 0000000..9f6dfd4
--- /dev/null
+++ b/rcs_service_api/src/com/suntek/mway/rcs/client/api/publicaccount/callback/PublicAccountCallback.java
@@ -0,0 +1,145 @@
+/*
+ * Copyright (c) 2014 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.api.publicaccount.callback;
+
+import java.util.List;
+
+import android.os.RemoteException;
+
+import com.suntek.mway.rcs.client.api.plugin.callback.IPublicAccountCallbackAPI;
+import com.suntek.mway.rcs.client.api.plugin.entity.pubacct.MenuInfo;
+import com.suntek.mway.rcs.client.api.plugin.entity.pubacct.MsgContent;
+import com.suntek.mway.rcs.client.api.plugin.entity.pubacct.PublicAccounts;
+import com.suntek.mway.rcs.client.api.plugin.entity.pubacct.PublicAccountsDetail;
+
+public abstract class PublicAccountCallback extends IPublicAccountCallbackAPI.Stub{
+
+
+// public void PublicAccountCallback() {
+//
+// }
+// @Override
+// public void respAddSubscribe(boolean arg0) throws RemoteException {
+// // TODO Auto-generated method stub
+//
+// }
+
+ @Override
+ public void respAddSubscribeAccount(boolean arg0, PublicAccounts arg1)
+ throws RemoteException {
+ // TODO Auto-generated method stub
+
+ }
+
+// @Override
+// public void respCancelSubscribe(boolean arg0) throws RemoteException {
+// // TODO Auto-generated method stub
+//
+// }
+
+ @Override
+ public void respCancelSubscribeAccount(boolean arg0, PublicAccounts arg1)
+ throws RemoteException {
+ // TODO Auto-generated method stub
+
+ }
+
+// @Override
+// public void respComplainPublic(boolean result) throws RemoteException {
+// // TODO Auto-generated method stub
+// LogHelper.d("result --> "+result );
+// }
+
+ @Override
+ public void respComplainPublicAccount(boolean result, PublicAccounts arg1)
+ throws RemoteException {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void respGetPreMessage(boolean arg0, List<MsgContent> arg1)
+ throws RemoteException {
+ // TODO Auto-generated method stub
+
+ }
+
+// @Override
+// public void respGetPreMessageAccount(boolean result, PublicAccounts pAccount)
+// throws RemoteException {
+// // TODO Auto-generated method stub
+// LogHelper.d("result --> "+result + "PublicAccounts = " + pAccount.getPaUuid()+" , "+pAccount.getSipUri());
+// }
+
+ @Override
+ public void respGetPublicDetail(boolean arg0, PublicAccountsDetail arg1)
+ throws RemoteException {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void respGetPublicList(boolean arg0, List<PublicAccounts> arg1)
+ throws RemoteException {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void respGetPublicMenuInfo(boolean result, List<MenuInfo> menuList)
+ throws RemoteException {
+ // TODO Auto-generated method stub
+
+ }
+
+// @Override
+// public void respGetPublicMenuInfoAccount(boolean result, PublicAccounts pAccount)
+// throws RemoteException {
+// // TODO Auto-generated method stub
+// LogHelper.d("result --> "+result + "PublicAccounts = " + pAccount.getPaUuid()+" , "+pAccount.getSipUri());
+//
+// }
+
+// @Override
+// public void respGetPublicMenuInfoString(boolean result, String info)
+// throws RemoteException {
+// // TODO Auto-generated method stub
+// LogHelper.d("result --> "+result + "info = " + info);
+//
+// }
+
+ @Override
+ public void respGetUserSubscribePublicList(boolean result,
+ List<PublicAccounts> pubAcctList) throws RemoteException {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void respGetPublicRecommend(boolean arg0, List<PublicAccounts> arg1)
+ throws RemoteException {
+ // TODO Auto-generated method stub
+
+ }
+}
diff --git a/rcs_service_api/src/com/suntek/mway/rcs/client/api/publicaccount/callback/PublicAccountCallbackImpl.java b/rcs_service_api/src/com/suntek/mway/rcs/client/api/publicaccount/callback/PublicAccountCallbackImpl.java
new file mode 100644
index 0000000..333607a
--- /dev/null
+++ b/rcs_service_api/src/com/suntek/mway/rcs/client/api/publicaccount/callback/PublicAccountCallbackImpl.java
@@ -0,0 +1,150 @@
+/*
+ * Copyright (c) 2014 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.api.publicaccount.callback;
+
+import java.util.List;
+
+import android.os.RemoteException;
+
+import com.suntek.mway.rcs.client.api.plugin.entity.pubacct.MenuInfo;
+import com.suntek.mway.rcs.client.api.plugin.entity.pubacct.MsgContent;
+import com.suntek.mway.rcs.client.api.plugin.entity.pubacct.PublicAccounts;
+import com.suntek.mway.rcs.client.api.plugin.entity.pubacct.PublicAccountsDetail;
+
+public class PublicAccountCallbackImpl extends PublicAccountCallback {
+
+ public PublicAccountCallbackImpl() {
+ // TODO Auto-generated constructor stub
+ }
+
+// @Override
+// public void respAddSubscribe(boolean arg0) throws RemoteException {
+// // TODO Auto-generated method stub
+//
+// }
+
+ @Override
+ public void respAddSubscribeAccount(boolean arg0, PublicAccounts arg1)
+ throws RemoteException {
+ // TODO Auto-generated method stub
+
+ }
+
+// @Override
+// public void respCancelSubscribe(boolean arg0) throws RemoteException {
+// // TODO Auto-generated method stub
+//
+// }
+
+ @Override
+ public void respCancelSubscribeAccount(boolean arg0, PublicAccounts arg1)
+ throws RemoteException {
+ // TODO Auto-generated method stub
+
+ }
+
+// @Override
+// public void respComplainPublic(boolean arg0) throws RemoteException {
+// // TODO Auto-generated method stub
+//
+// }
+
+ @Override
+ public void respComplainPublicAccount(boolean arg0, PublicAccounts arg1)
+ throws RemoteException {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void respGetPreMessage(boolean arg0, List<MsgContent> arg1)
+ throws RemoteException {
+ // TODO Auto-generated method stub
+
+ }
+
+// @Override
+// public void respGetPreMessageAccount(boolean arg0, PublicAccounts arg1)
+// throws RemoteException {
+// // TODO Auto-generated method stub
+//
+// }
+
+ @Override
+ public void respGetPublicDetail(boolean arg0, PublicAccountsDetail arg1)
+ throws RemoteException {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void respGetPublicList(boolean arg0, List<PublicAccounts> arg1)
+ throws RemoteException {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void respGetPublicMenuInfo(boolean arg0, List<MenuInfo> arg1)
+ throws RemoteException {
+ // TODO Auto-generated method stub
+
+ }
+
+// @Override
+// public void respGetPublicMenuInfoAccount(boolean arg0, PublicAccounts arg1)
+// throws RemoteException {
+// // TODO Auto-generated method stub
+//
+// }
+
+// @Override
+// public void respGetPublicMenuInfoString(boolean arg0, String arg1)
+// throws RemoteException {
+// // TODO Auto-generated method stub
+//
+// }
+
+ @Override
+ public void respGetUserSubscribePublicList(boolean arg0,
+ List<PublicAccounts> arg1) throws RemoteException {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void respGetPublicRecommend(boolean arg0, List<PublicAccounts> arg1)
+ throws RemoteException {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void respSetAcceptStatus(boolean result, String uuid)
+ throws RemoteException {
+ // TODO Auto-generated method stub
+
+ }
+
+}
diff --git a/rcs_service_api/src/com/suntek/mway/rcs/client/api/publicaccount/impl/PublicAccountApi.java b/rcs_service_api/src/com/suntek/mway/rcs/client/api/publicaccount/impl/PublicAccountApi.java
new file mode 100644
index 0000000..68ef5c5
--- /dev/null
+++ b/rcs_service_api/src/com/suntek/mway/rcs/client/api/publicaccount/impl/PublicAccountApi.java
@@ -0,0 +1,254 @@
+/*
+ * Copyright (c) 2014 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.api.publicaccount.impl;
+
+import java.util.List;
+import java.util.Locale;
+
+import android.content.ComponentName;
+import android.content.ServiceConnection;
+import android.os.IBinder;
+import android.os.RemoteException;
+
+import com.suntek.mway.rcs.client.api.ClientApi;
+import com.suntek.mway.rcs.client.api.plugin.IPublicAccountAPI;
+import com.suntek.mway.rcs.client.api.plugin.entity.pubacct.PublicAccounts;
+import com.suntek.mway.rcs.client.api.plugin.entity.pubacct.PublicAccountsDetail;
+import com.suntek.mway.rcs.client.api.publicaccount.callback.PublicAccountCallback;
+import com.suntek.mway.rcs.client.api.util.ServiceDisconnectedException;
+import com.suntek.mway.rcs.client.api.util.VerificationUtil;
+import com.suntek.mway.rcs.client.api.util.log.LogHelper;
+
+public class PublicAccountApi extends ClientApi {
+
+ private static String serviceName = "com.suntek.mway.rcs.app.service.pubacct.plugin.service.PublicAccountPluginService";
+
+ IPublicAccountAPI myApi;
+ PublicAccountCallback theCallback;
+
+ private ServiceConnection mConnection = new ServiceConnection() {
+ public void onServiceConnected(ComponentName className, IBinder service) {
+ LogHelper.d("client api connect service");
+ myApi = IPublicAccountAPI.Stub.asInterface(service);
+ notifyServiceConnected();
+ }
+
+ public void onServiceDisconnected(ComponentName className) {
+ if(isNormallyClosed || reconnectionTimes > MAX_RECONECTION_TIMES) {
+ LogHelper.d("client api disconnect service...");
+ try {
+ if (myApi != null && theCallback != null) myApi.unregisterCallback(theCallback);
+ } catch (Exception ex) {
+ // TODO Auto-generated catch block
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ theCallback = null;
+ myApi = null;
+ notifyServiceDisconnected();
+ } else {
+ LogHelper.d("illegal call client api disconnect service :"
+ + reconnectionTimes);
+ init(context, rcsListener);
+ if (!isBinded()) {
+ // app is uninstalled
+ myApi = null;
+ notifyServiceDisconnected();
+ }
+ reconnectionTimes++;
+ }
+ }
+ };
+
+ public PublicAccountApi() {
+ super(serviceName);
+ super.initServiceConnect(mConnection);
+ }
+
+
+ public void unregisterCallback(PublicAccountCallback callback)throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ try {
+ myApi.unregisterCallback(callback);
+ } catch (RemoteException ex) {
+ // TODO Auto-generated catch block
+ LogHelper.e(ex.getMessage(),ex);
+ }
+ }
+
+ public void getUserSubscribePublicList(int order,int pageSize,int pageNum,PublicAccountCallback callback) throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format( Locale.getDefault(),"enter method getUserSubscribePublicList. [order,pageSize,pageNum]=%d,%d,%d", order,pageSize,pageNum));
+ if (order != 0 && order != 1) {
+ LogHelper.i("order field value must be 0 or 1");
+ return;
+ }
+ try {
+ myApi.registerCallback(callback);
+ myApi.getUserSubscribePublicList(order, pageSize, pageNum);
+ } catch (Exception ex) {
+ // TODO Auto-generated catch block
+ LogHelper.e(ex.getMessage(),ex);
+ }
+ }
+
+ public void getPublicMenuInfo(String uuid,PublicAccountCallback callback) throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format( Locale.getDefault(),"enter method getPublicMenuInfo. [uuid]=%s", uuid));
+ try {
+ myApi.registerCallback(callback);
+ myApi.getPublicMenuInfo(uuid);
+ } catch (Exception ex) {
+ // TODO Auto-generated catch block
+ LogHelper.e(ex.getMessage(),ex);
+ }
+ }
+
+ public void getPublicDetail(String uuid,PublicAccountCallback callback) throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format( Locale.getDefault(),"enter method getPublicDetail. [uuid]=%s", uuid));
+ try {
+ myApi.registerCallback(callback);
+ myApi.getPublicDetail(uuid);
+ } catch (Exception ex) {
+ // TODO Auto-generated catch block
+ LogHelper.e(ex.getMessage(),ex);
+ }
+ }
+
+ public void addSubscribe(String uuid,PublicAccountCallback callback) throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format( Locale.getDefault(),"enter method addSubscribe. [uuid]=%s", uuid));
+ try {
+ myApi.registerCallback(callback);
+ myApi.addSubscribe(uuid);
+ } catch (Exception ex) {
+ // TODO Auto-generated catch block
+ LogHelper.e(ex.getMessage(),ex);
+ }
+ }
+
+
+ public void cancelSubscribe(String uuid,PublicAccountCallback callback) throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format( Locale.getDefault(),"enter method cancelSubscribe. [uuid]=%s", uuid));
+ try {
+ myApi.registerCallback(callback);
+ myApi.cancelSubscribe(uuid);
+ } catch (Exception ex) {
+ // TODO Auto-generated catch block
+ LogHelper.e(ex.getMessage(),ex);
+ }
+ }
+
+ public boolean complainPublic(String uuid,String reason, String description, int type, String data ,PublicAccountCallback callback) throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format( Locale.getDefault(),"enter method complainPublic. [uuid,reason,description,type,data]=%s,%s,%s,%d,%s", uuid,reason,description,type,data));
+ boolean flag = false;
+ try {
+ myApi.registerCallback(callback);
+ flag = myApi.complainPublic(uuid, reason, description, type, data);
+ } catch (Exception ex) {
+ // TODO Auto-generated catch block
+ LogHelper.e(ex.getMessage(),ex);
+ }
+ return flag;
+ }
+
+ public boolean getPreMessage(String uuid, String timestamp, int order, int pageSize, int pageNum,
+ PublicAccountCallback callback) throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ boolean flag = false;
+ try {
+ myApi.registerCallback(callback);
+ flag = myApi.getPreMessage(uuid, timestamp, order, pageSize, pageNum);
+ } catch (Exception ex) {
+ // TODO Auto-generated catch block
+ LogHelper.e(ex.getMessage(),ex);
+ }
+ return flag;
+ }
+
+ public boolean getPublicList(String keywords, int pageSize, int pageNum, int order,
+ PublicAccountCallback callback) throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ LogHelper.i(String.format( Locale.getDefault(),"enter method getPublicList. [keywords,pageSize,pageNum,order]=%s,%d,%d,%d", keywords,pageSize,pageNum,order));
+ boolean flag = false;
+ try {
+ myApi.registerCallback(callback);
+ flag = myApi.getPublicList(keywords, pageSize, pageNum, order);
+ } catch (Exception ex) {
+ // TODO Auto-generated catch block
+ LogHelper.e(ex.getMessage(),ex);
+ }
+ return flag;
+ }
+
+ public PublicAccountsDetail getPublicDetailCache(String uuid) throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ try {
+ return myApi.getPublicDetailCache(uuid);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(),ex);
+ return null;
+ }
+ }
+
+ public List<PublicAccounts> getUserSubscribePublicListCache(int order, int pageSize, int pageNum) throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ try {
+ return myApi.getUserSubscribePublicListCache(order, pageSize, pageNum);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(),ex);
+ return null;
+ }
+ }
+
+ public boolean getRecommendPublic(int type, int pageSize, int pageNum)
+ throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ if (pageSize <= 0 || pageNum <= 0) {
+ LogHelper.i("params is not valid");
+ return false;
+ }
+
+ boolean flag = false;
+ try {
+ flag = myApi.getRecommendPublic(type, pageSize, pageNum);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(),ex);
+ }
+ return flag;
+ }
+
+ public boolean setAcceptStatus(String uuid, int acceptStatus)
+ throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ try {
+ return myApi.setAcceptStatus(uuid, acceptStatus);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ return isNormallyClosed;
+ }
+}
diff --git a/rcs_service_api/src/com/suntek/mway/rcs/client/api/specialnumber/impl/SpecialServiceNumApi.java b/rcs_service_api/src/com/suntek/mway/rcs/client/api/specialnumber/impl/SpecialServiceNumApi.java
new file mode 100644
index 0000000..e8edc44
--- /dev/null
+++ b/rcs_service_api/src/com/suntek/mway/rcs/client/api/specialnumber/impl/SpecialServiceNumApi.java
@@ -0,0 +1,169 @@
+/*
+ * Copyright (c) 2014 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.api.specialnumber.impl;
+
+import java.util.List;
+
+import android.content.ComponentName;
+import android.content.ServiceConnection;
+import android.os.IBinder;
+
+import com.suntek.mway.rcs.client.api.ClientApi;
+import com.suntek.mway.rcs.client.api.specialnumber.ISpecialServiceNumApi;
+import com.suntek.mway.rcs.client.api.util.ServiceDisconnectedException;
+import com.suntek.mway.rcs.client.api.util.VerificationUtil;
+import com.suntek.mway.rcs.client.api.util.log.LogHelper;
+
+public class SpecialServiceNumApi extends ClientApi{
+
+ private static String serviceName = "com.suntek.mway.rcs.app.service.api.impl.specialnumber.SpecialServiceNumApiService";
+
+ ISpecialServiceNumApi myApi;
+
+ private ServiceConnection mConnection = new ServiceConnection() {
+ public void onServiceConnected(ComponentName className, IBinder service) {
+ LogHelper.d("ISpecialServiceNumApi api connect service");
+ myApi = ISpecialServiceNumApi.Stub.asInterface(service);
+ notifyServiceConnected();
+ }
+
+ public void onServiceDisconnected(ComponentName className) {
+ if(isNormallyClosed || reconnectionTimes > MAX_RECONECTION_TIMES) {
+ LogHelper.d("ISpecialServiceNumApi api disconnect service");
+ myApi = null;
+ notifyServiceDisconnected();
+ } else {
+ LogHelper.d("illegal call ISpecialServiceNumApi api disconnect service :"
+ + reconnectionTimes);
+ init(context, rcsListener);
+ if (!isBinded()) {
+ // app is uninstalled
+ myApi = null;
+ notifyServiceDisconnected();
+ }
+ reconnectionTimes++;
+ }
+ }
+ };
+
+ public SpecialServiceNumApi() {
+ super(serviceName);
+ super.initServiceConnect(mConnection);
+ }
+
+ /**
+ * Add special number.
+ *
+ * @param number the number
+ */
+ public void add(String number)throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ try {
+ myApi.add(number);
+ } catch (Exception e) {
+ LogHelper.e(e.getMessage(),e);
+ }
+ }
+
+ /**
+ * Close function, Set status to close.
+ */
+ public void closeFunction()throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ try {
+ myApi.closeFunction();
+ } catch (Exception e) {
+ LogHelper.e(e.getMessage(),e);
+ }
+ }
+
+ /**
+ * Delete special number prefix.
+ *
+ * @param number the number
+ * @return the string
+ */
+ public String delSpecialPreNum(String telephone)throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ try {
+ return myApi.delSpecialPreNum(telephone);
+ } catch (Exception e) {
+ LogHelper.e(e.getMessage(),e);
+ return "";
+ }
+ }
+
+ /**
+ * Gets the list of special numbers.
+ *
+ * @return the list
+ */
+ public List<String> getList()throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ try {
+ return myApi.getList();
+ } catch (Exception e) {
+ LogHelper.e(e.getMessage(),e);
+ return null;
+ }
+ }
+
+ /**
+ * Open function, Set status to open.
+ */
+ public void openFunction()throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ try {
+ myApi.openFunction();
+ } catch (Exception e) {
+ LogHelper.e(e.getMessage(),e);
+ }
+ }
+
+ /**
+ * Removes a special number.
+ *
+ * @param number the number
+ */
+ public void remove(String number)throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ try {
+ myApi.remove(number);
+ } catch (Exception e) {
+ LogHelper.e(e.getMessage(),e);
+ }
+ }
+
+ /**
+ * Removes all special number.
+ */
+ public void removeAll()throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ try {
+ myApi.removeAll();
+ } catch (Exception e) {
+ LogHelper.e(e.getMessage(),e);
+ }
+ }
+}
diff --git a/rcs_service_api/src/com/suntek/mway/rcs/client/api/support/RcsSupportApi.java b/rcs_service_api/src/com/suntek/mway/rcs/client/api/support/RcsSupportApi.java
new file mode 100644
index 0000000..163b2e9
--- /dev/null
+++ b/rcs_service_api/src/com/suntek/mway/rcs/client/api/support/RcsSupportApi.java
@@ -0,0 +1,147 @@
+/*
+ * Copyright (c) 2014 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.api.support;
+
+import android.content.Context;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageManager;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Dynamically detect the installation status of RCS components during runtime.
+ *
+ * @author lrb
+ *
+ */
+public class RcsSupportApi {
+ /**
+ * The package name of RcsService module.
+ */
+ private static final String RCS_SERVICE_PACKAGE_NAME = "com.suntek.mway.rcs.app.service";
+
+ /**
+ * The package name of RcsPlugin module.
+ */
+ private static final String RCS_PLUGIN_PACKAGE_NAME = "com.suntek.mway.rcs.app.plugin";
+
+ private static final String RCS_PLUGIN_CENTER_PACKAGE_NAME = "com.cmri.rcs.plugincenter";
+
+ /**
+ * The Profile plug-in that provided by CMCC.
+ */
+ public static final int PLUGIN_PROFILE = 0;
+
+ /**
+ * The Public Account plug-in that provided by CMCC.
+ */
+ public static final int PLUGIN_PUBLIC_ACCOUNT = 1;
+
+ /**
+ * The QR-Code plug-in that provided by CMCC.
+ */
+ public static final int PLUGIN_QR_CODE = 2;
+
+ /**
+ * The Enhance Call Screen plug-in that provided by CMCC.
+ */
+ public static final int PLUGIN_ENHANCE_CALL_SCREEN = 3;
+
+ /**
+ * The Cloud File Sharing plug-in that provided by CMCC.
+ */
+ public static final int PLUGIN_CLOUD_FILE_SHARING = 4;
+
+ /**
+ * The Emotions Store plug-in that provided by CMCC.
+ */
+ public static final int PLUGIN_EMOTIONS_STORE = 5;
+
+ /**
+ * The Plug-in Center plug-in that provided by CMCC.
+ */
+ public static final int PLUGIN_PLUGIN_CENTER = 6;
+
+ /**
+ * Check that the RcsService module is been installed.
+ *
+ * @param context
+ * @return true if RcsService module is installed.
+ */
+ public static boolean isRcsServiceInstalled(Context context) {
+ return isPackageInstalled(context, RCS_SERVICE_PACKAGE_NAME);
+ }
+
+ /**
+ * Check that the RcsService module is been installed.
+ *
+ * @param context
+ * @return true if RcsService module is installed.
+ */
+ public static boolean isRcsPluginInstalled(Context context) {
+ return isPackageInstalled(context, RCS_PLUGIN_PACKAGE_NAME);
+ }
+
+ public static boolean isRcsPluginCenterInstalled(Context context) {
+ return isPackageInstalled(context, RCS_PLUGIN_CENTER_PACKAGE_NAME);
+ }
+
+ private static boolean isPackageInstalled(Context context, String packageName) {
+ PackageManager pm = context.getPackageManager();
+ List<ApplicationInfo> installedApps = pm
+ .getInstalledApplications(PackageManager.GET_UNINSTALLED_PACKAGES);
+
+ for (ApplicationInfo info : installedApps) {
+ if (packageName.equals(info.packageName)) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * Dynamically detect the supported plug-in.
+ *
+ * @param context
+ * @return The plug-in list that is supported.
+ */
+ public static List<Integer> getSupportedPlugins(Context context) {
+ List<Integer> supportedPluginIds = new ArrayList<Integer>();
+
+ if (isRcsPluginInstalled(context)) {
+ // TODO 增加检测插件安装的机制,动态返回可用的插件
+ supportedPluginIds.add(PLUGIN_PROFILE);
+ supportedPluginIds.add(PLUGIN_PUBLIC_ACCOUNT);
+ supportedPluginIds.add(PLUGIN_QR_CODE);
+ supportedPluginIds.add(PLUGIN_ENHANCE_CALL_SCREEN);
+ supportedPluginIds.add(PLUGIN_CLOUD_FILE_SHARING);
+ supportedPluginIds.add(PLUGIN_EMOTIONS_STORE);
+ supportedPluginIds.add(PLUGIN_PLUGIN_CENTER);
+ }
+
+ return supportedPluginIds;
+ }
+}
diff --git a/rcs_service_api/src/com/suntek/mway/rcs/client/api/util/FileDurationException.java b/rcs_service_api/src/com/suntek/mway/rcs/client/api/util/FileDurationException.java
new file mode 100644
index 0000000..8eab4e5
--- /dev/null
+++ b/rcs_service_api/src/com/suntek/mway/rcs/client/api/util/FileDurationException.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2014 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.api.util;
+
+public class FileDurationException extends Exception {
+
+ private static final long serialVersionUID = 1L;
+
+ public FileDurationException() {
+ super();
+ }
+
+ public FileDurationException(String detailMessage, Throwable throwable) {
+ super(detailMessage, throwable);
+ }
+
+ public FileDurationException(String detailMessage) {
+ super(detailMessage);
+ }
+
+ public FileDurationException(Throwable throwable) {
+ super(throwable);
+ }
+
+}
diff --git a/rcs_service_api/src/com/suntek/mway/rcs/client/api/util/FileSuffixException.java b/rcs_service_api/src/com/suntek/mway/rcs/client/api/util/FileSuffixException.java
new file mode 100644
index 0000000..c6c203a
--- /dev/null
+++ b/rcs_service_api/src/com/suntek/mway/rcs/client/api/util/FileSuffixException.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2014 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.api.util;
+
+public class FileSuffixException extends Exception {
+
+ private static final long serialVersionUID = 1L;
+
+ public FileSuffixException() {
+ super();
+ }
+
+ public FileSuffixException(String detailMessage, Throwable throwable) {
+ super(detailMessage, throwable);
+ }
+
+ public FileSuffixException(String detailMessage) {
+ super(detailMessage);
+ }
+
+ public FileSuffixException(Throwable throwable) {
+ super(throwable);
+ }
+
+}
diff --git a/rcs_service_api/src/com/suntek/mway/rcs/client/api/util/FileTransferException.java b/rcs_service_api/src/com/suntek/mway/rcs/client/api/util/FileTransferException.java
new file mode 100644
index 0000000..7d3bce0
--- /dev/null
+++ b/rcs_service_api/src/com/suntek/mway/rcs/client/api/util/FileTransferException.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2014 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.api.util;
+
+public class FileTransferException extends Exception {
+
+ private static final long serialVersionUID = 1L;
+
+ public FileTransferException() {
+ super();
+ }
+
+ public FileTransferException(String detailMessage, Throwable throwable) {
+ super(detailMessage, throwable);
+ }
+
+ public FileTransferException(String detailMessage) {
+ super(detailMessage);
+ }
+
+ public FileTransferException(Throwable throwable) {
+ super(throwable);
+ }
+
+}
diff --git a/rcs_service_api/src/com/suntek/mway/rcs/client/api/util/ServiceDisconnectedException.java b/rcs_service_api/src/com/suntek/mway/rcs/client/api/util/ServiceDisconnectedException.java
new file mode 100644
index 0000000..122f243
--- /dev/null
+++ b/rcs_service_api/src/com/suntek/mway/rcs/client/api/util/ServiceDisconnectedException.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2014 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.api.util;
+
+public class ServiceDisconnectedException extends Exception {
+ public ServiceDisconnectedException() {
+ }
+
+ public ServiceDisconnectedException(String message) {
+ super(message);
+ }
+}
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
new file mode 100644
index 0000000..45b1a76
--- /dev/null
+++ b/rcs_service_api/src/com/suntek/mway/rcs/client/api/util/VerificationUtil.java
@@ -0,0 +1,226 @@
+/*
+ * Copyright (c) 2014 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.api.util;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+
+import android.content.Context;
+
+import com.suntek.mway.rcs.client.api.constant.MediaConstants;
+import com.suntek.mway.rcs.client.api.provider.SuntekMessageData;
+import com.suntek.mway.rcs.client.api.utils.MediaUtils;
+import com.suntek.mway.rcs.client.api.utils.SettingUtils;
+
+public class VerificationUtil {
+ private static final String SIP_PREFIX = "sip:";
+ private static final String TEL_PREFIX = "tel:";
+
+ public static void ApiIsNull(Object api) throws ServiceDisconnectedException {
+ if (api == null) {
+ throw new ServiceDisconnectedException("Service unavailable, myApi is null");
+ }
+ }
+
+ public static boolean isNumber(String number) {
+ if (number == null) {
+ return false;
+ }
+ return VerificationUtil
+ .formatWithout86(VerificationUtil.getNumberFromUri(number))
+ .replaceAll(" ", "").replaceAll("-", "").matches("\\d+");
+ }
+
+ public static boolean isAllNumber(List<String> numbers) {
+ boolean sign = true;
+ for (String number : numbers) {
+ if (!isNumber(number)) {
+ sign = false;
+ }
+ }
+ return sign;
+ }
+
+ public static String formatNumber(String number) {
+ return number.replaceAll(" ", "").replaceAll("-", "");
+ }
+
+ public static List<String> formatNumbers(List<String> numbers) {
+ List<String> re = new ArrayList<String>();
+ for (String number : numbers) {
+ re.add(formatNumber(number));
+ }
+ return re;
+ }
+
+ public static boolean isBurnFlagCorrect(int burnFlag) {
+ return burnFlag == SuntekMessageData.MSG_BURN_AFTER_READ_FLAG
+ || burnFlag == SuntekMessageData.MSG_BURN_AFTER_READ_NOT;
+ }
+
+ public static void isImageFile(String filename) throws FileSuffixException {
+ if (!MediaUtils.isImageFile(filename)) {
+ throw new FileSuffixException(
+ "File extension is incorrect, the correct extension is '"
+ + MediaConstants.IMAGE_SUFFIX + "'");
+ }
+ }
+
+ public static void isAudioFile(String filename) throws FileSuffixException {
+ if (!MediaUtils.isAudioFile(filename)) {
+ throw new FileSuffixException(
+ "File extension is incorrect, the correct extension is '"
+ + MediaConstants.AUDIO_SUFFIX + "'");
+ }
+ }
+
+ public static void isVideoFile(String filename) throws FileSuffixException {
+ if (!MediaUtils.isVideoFile(filename)) {
+ throw new FileSuffixException(
+ "File extension is incorrect, the correct extension is '"
+ + MediaConstants.VIDEO_SUFFIX + "'");
+ }
+ }
+
+ public static void isFileSizeToLarge(String filename, long maxSize)
+ throws FileTransferException {
+ File file = new File(filename);
+ if (file.exists() && file.isFile() && file.length() > (maxSize * 1024)) {
+ throw new FileTransferException("File too large "
+ + (file.length() / 1024)
+ + " KB. Max size of file to be transfer is " + maxSize
+ + " KB.");
+ }
+ }
+
+ public static void isAudioDurationToLong(Context context, String filename, long maxDuration, int recordTime)
+ throws FileDurationException {
+ File file = new File(filename);
+ if (file.exists() && file.isFile()){
+ int duration = MediaUtils.getAmrFileDuration(context, file);
+ if(duration > maxDuration * 1000 || recordTime > maxDuration){
+ throw new FileDurationException("File duration too long "
+ + duration
+ + " s. Max duration is " + maxDuration
+ + " s.");
+ }
+ }
+ }
+
+ public static void isVedioDurationToLong(Context context, String filename, long maxDuration, int recordTime)
+ throws FileDurationException {
+ File file = new File(filename);
+ if (file.exists() && file.isFile()){
+ int duration = MediaUtils.getVideoFileDuration(context, file);
+ if(duration > maxDuration * 1000 || recordTime > maxDuration){
+ throw new FileDurationException("File duration too long "
+ + duration
+ + " s. Max duration is " + maxDuration
+ + " s.");
+ }
+ }
+ }
+
+ public static final String DMS_FT_MAX_SIZE = "ftMaxSize";
+
+ public static long getFtMaxSize(Context context) {
+ return SettingUtils.getSetting(context, DMS_FT_MAX_SIZE,
+ MediaConstants.FT_MAX_SIZE);
+ }
+
+ public static final String DMS_IMAGE_FT_MAX_SIZE = "imageFtMaxSize";
+
+ public static long getImageFtMaxSize(Context context) {
+ return SettingUtils.getSetting(context, DMS_IMAGE_FT_MAX_SIZE,
+ MediaConstants.IMAGE_FT_MAX_SIZE);
+ }
+
+ public static final String DMS_VIDEO_FT_MAX_SIZE = "videoFtMaxSize";
+
+ public static long getVideoFtMaxSize(Context context) {
+ return SettingUtils.getSetting(context, DMS_VIDEO_FT_MAX_SIZE, MediaConstants.VIDEO_FT_MAX_SIZE);
+ }
+
+ public static final String DMS_VIDEO_MAX_TIME = "videoMaxTime";
+
+ public static long getVideoMaxTime(Context context) {
+ return SettingUtils.getSetting(context, DMS_VIDEO_MAX_TIME, MediaConstants.VIDEO_MAX_TIME);
+ }
+
+ public static final String DMS_AUDIO_MAX_TIME = "audioMaxTime";
+
+ public static long getAudioMaxTime(Context context) {
+ return SettingUtils.getSetting(context, DMS_AUDIO_MAX_TIME, MediaConstants.AUDIO_MAX_TIME);
+ }
+
+ public static String formatWithout86(String mobile) {
+ String formatStr = mobile;
+ if (formatStr != null) {
+ formatStr = formatStr.replaceAll(" ", "");
+ if (formatStr.startsWith("+86")) {
+ formatStr = formatStr.substring(3);
+ }
+ if (formatStr.startsWith("86")) {
+ formatStr = formatStr.substring(2);
+ }
+ if (formatStr.startsWith(" 86")) {
+ formatStr = formatStr.substring(3);
+ }
+ }
+ if (formatStr == null) {
+ formatStr = "";
+ }
+ return formatStr.trim();
+ }
+
+ public static String getNumberFromUri(String uriStr) {
+ if (uriStr == null) {
+ return "";
+ }
+ int index = uriStr.lastIndexOf("<");
+ if (index != -1) {
+ int index2 = uriStr.indexOf(">");
+ if (index2 != -1) {
+ uriStr = uriStr.substring(index + 1, index2);
+ } else {
+ uriStr = uriStr.substring(index + 1);
+ }
+ }
+ if (uriStr.endsWith(">")) {
+ uriStr = uriStr.substring(0, uriStr.length() - 1);
+ }
+ if (uriStr.startsWith(TEL_PREFIX)) {
+ uriStr = uriStr.substring(4);
+ } else if (uriStr.startsWith(SIP_PREFIX)) {
+ uriStr = uriStr.substring(4, uriStr.indexOf("@"));
+ }
+
+ int pos = uriStr.indexOf("@");
+ if(pos != -1){
+ uriStr = uriStr.substring(0, pos);
+ }
+ return uriStr;
+ }
+}
diff --git a/rcs_service_api/src/com/suntek/mway/rcs/client/api/util/log/LogHelper.java b/rcs_service_api/src/com/suntek/mway/rcs/client/api/util/log/LogHelper.java
new file mode 100644
index 0000000..0baba01
--- /dev/null
+++ b/rcs_service_api/src/com/suntek/mway/rcs/client/api/util/log/LogHelper.java
@@ -0,0 +1,264 @@
+/*
+ * Copyright (c) 2014 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.api.util.log;
+
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileWriter;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+import android.os.Environment;
+import android.util.Log;
+
+/**
+ * <p>Title: LogHelper.java</p>
+ * <p>Description: The Class LogHelper.</p>
+ * <p>Copyright: Copyright (c) 2010</p>
+ * <p>Company: pci-suntek</p>
+ *
+ * @author hhao
+ * @version 1.0
+ */
+public final class LogHelper {
+
+ /** The Constant OPEN_DEBUG. */
+ public static final String OPEN_DEBUG = "_SETTING_SERVICE_OPEN_DEBUG";
+
+ /** Is debug mode. */
+ private static boolean mIsDebugMode = true;
+
+ /** Will the log write to file. */
+ private static Boolean MYLOG_WRITE_TO_FILE = true;
+
+ /** The log tag name. */
+ private static String TAG = "RCS_Service_API";
+
+ /** The Constant CLASS_METHOD_LINE_FORMAT. */
+ private static final String CLASS_METHOD_LINE_FORMAT = "%s.%s() Line:%d (%s)";
+
+ /** The logfile dir path in sdcard. */
+ public static String MYLOG_PATH_SDCARD_DIR = Environment.getExternalStorageDirectory().getPath() + "/Android/data/com.suntek.mway.rcs.service.api/logs";
+
+ /** The log file's name. */
+ private static String MYLOGFILEName = "rcs_service_api_log";
+
+ /** My log format style. */
+ private static SimpleDateFormat myLogSdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
+
+ /** The log format style. */
+ private static SimpleDateFormat logfile = new SimpleDateFormat("yyyy-MM-dd");
+
+ /** The log's level. */
+ private final static int logLevel = Log.VERBOSE;
+
+ private static boolean isSensitiveLog = false;
+
+ /**
+ * Log.
+ *
+ * @param str the str
+ * @param level the level
+ */
+ private static void log(String str, int level) {
+ log(str, level, null);
+ }
+
+ /**
+ * Log.
+ *
+ * @param str the str
+ * @param level the level
+ * @param throwable the throwable
+ */
+ private static void log(String str, int level, Throwable throwable) {
+ if (mIsDebugMode) {
+ if (logLevel <= level) {
+ //Get the method name from the stackTrace.
+ StackTraceElement[] array = Thread.currentThread().getStackTrace();
+ StackTraceElement traceElement = (array!=null && array.length > 5 ? array[5]: array[array.length-1]);
+ String logText = String.format(CLASS_METHOD_LINE_FORMAT,
+ traceElement.getClassName(),
+ traceElement.getMethodName(),
+ traceElement.getLineNumber(),
+ traceElement.getFileName());
+ // ERROR, WARN, INFO, DEBUG, VERBOSE
+ String logTag = "";
+ if (level == Log.VERBOSE) {
+ Log.v(TAG, logText + "->" + str);
+ logTag = "[VERBOSE]";
+ } else if (level == Log.DEBUG) {
+ Log.d(TAG, logText + "->" + str);
+ logTag = "[DEBUG]";
+ } else if (level == Log.INFO) {
+ Log.i(TAG, logText + "->" + str);
+ logTag = "[INFO ]";
+ } else if (level == Log.WARN) {
+ Log.w(TAG, logText + "->" + str);
+ logTag = "[WARN ]";
+ } else if (level == Log.ERROR) {
+ if (throwable != null) {
+ Log.e(TAG, logText + "->" + str, throwable);
+ } else {
+ Log.e(TAG, logText + "->" + str);
+ }
+ logTag = "[ERROR]";
+ }
+ if (MYLOG_WRITE_TO_FILE
+ && android.os.Environment.getExternalStorageState()
+ .equals(android.os.Environment.MEDIA_MOUNTED)) {
+ if (throwable != null) {
+ str += "\n" + Log.getStackTraceString(throwable);
+ }
+ writeLogtoFile(MYLOGFILEName, TAG + " " + logTag, logText
+ + "->" + str);
+ }
+ }
+
+ }
+ }
+
+ /**
+ * Trace.
+ *
+ * @param str the str
+ */
+ public static void trace(String str) {
+ log(str, Log.DEBUG);
+ }
+
+ /**
+ * VERBOSE.
+ *
+ * @param str the str
+ */
+ public static void v(String str) {
+ log(str, Log.VERBOSE);
+ }
+
+ /**
+ * DEBUG.
+ *
+ * @param str the str
+ */
+ public static void d(String str) {
+ log(str, Log.DEBUG);
+ }
+
+ /**
+ * WARN.
+ *
+ * @param str the str
+ */
+ public static void w(String str) {
+ log(str, Log.WARN);
+ }
+
+ /**
+ * INFO.
+ *
+ * @param str the str
+ */
+ public static void i(String str) {
+ log(str, Log.INFO);
+ }
+
+ /**
+ * ERROR.
+ *
+ * @param str the str
+ */
+ public static void e(String str) {
+ log(str, Log.ERROR);
+ }
+
+ /**
+ * ERROR.
+ *
+ * @param str the str
+ * @param throwable the throwable
+ */
+ public static void e(String str, Throwable throwable) {
+ log(str, Log.ERROR, throwable);
+ }
+
+ public static String sensitive(String str) {
+ if (isSensitiveLog) {
+ return "*****";
+ } else {
+ return str;
+ }
+ }
+
+ /**
+ * Open and write the logfile
+ * @param filename the filename
+ * @param tag the tag
+ * @param text the text
+ * @return *
+ */
+ private synchronized static void writeLogtoFile(String filename,
+ String tag, String text) {
+ File filePath = new File(MYLOG_PATH_SDCARD_DIR);
+ if (!filePath.exists()) {
+ filePath.mkdirs();
+ }
+ Date nowtime = new Date();
+ String needWriteFiel = logfile.format(nowtime);
+ String needWriteMessage = myLogSdf.format(nowtime) + " " + tag
+ + " " + text;
+ File file = new File(MYLOG_PATH_SDCARD_DIR, filename + "_"
+ + needWriteFiel + ".log");
+ FileWriter filerWriter = null;
+ BufferedWriter bufWriter = null;
+ try {
+ //Append the content to the file.
+ filerWriter = new FileWriter(file, true);
+ bufWriter = new BufferedWriter(filerWriter);
+ bufWriter.write(needWriteMessage);
+ bufWriter.newLine();
+ } catch (Exception e) {
+ printStackTrace(e);
+ }finally {
+ try {
+ if(bufWriter!=null) bufWriter.close();
+ }catch(Exception ex) {}
+ try {
+ if(filerWriter!=null) filerWriter.close();
+ }catch(Exception ex) {}
+ }
+ }
+
+ /**
+ * Prints the stack trace.
+ *
+ * @param throwable the throwable
+ */
+ public static void printStackTrace(Throwable throwable) {
+ if (mIsDebugMode) {
+ Log.w(TAG, "", throwable);
+ }
+ }
+
+}
diff --git a/rcs_service_api/src/com/suntek/mway/rcs/client/api/voip/impl/RichScreenApi.java b/rcs_service_api/src/com/suntek/mway/rcs/client/api/voip/impl/RichScreenApi.java
new file mode 100644
index 0000000..c40652b
--- /dev/null
+++ b/rcs_service_api/src/com/suntek/mway/rcs/client/api/voip/impl/RichScreenApi.java
@@ -0,0 +1,285 @@
+/*
+ * Copyright (c) 2014 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.api.voip.impl;
+
+import java.util.ArrayList;
+import java.util.Locale;
+
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.ServiceConnection;
+import android.os.IBinder;
+
+import com.suntek.mway.rcs.client.api.ClientApi;
+import com.suntek.mway.rcs.client.api.RCSServiceListener;
+import com.suntek.mway.rcs.client.api.plugin.IRichScreenApi;
+import com.suntek.mway.rcs.client.api.plugin.entity.richscrn.PhoneList;
+import com.suntek.mway.rcs.client.api.plugin.entity.richscrn.ResultInfo;
+import com.suntek.mway.rcs.client.api.plugin.entity.richscrn.ResultUtil;
+import com.suntek.mway.rcs.client.api.plugin.entity.richscrn.RichScrnShowing;
+import com.suntek.mway.rcs.client.api.util.ServiceDisconnectedException;
+import com.suntek.mway.rcs.client.api.util.VerificationUtil;
+import com.suntek.mway.rcs.client.api.util.log.LogHelper;
+
+public class RichScreenApi extends ClientApi {
+ /** The service name. */
+ private static String serviceName = "com.suntek.mway.rcs.app.service.api.impl.richscreen.RichScreenApiService";
+
+ /** The api. */
+ private IRichScreenApi myApi;
+
+ /** The service connection. */
+ private ServiceConnection mConnection = new ServiceConnection() {
+ public void onServiceConnected(ComponentName className, IBinder service) {
+ myApi = IRichScreenApi.Stub.asInterface(service);
+ notifyServiceConnected();
+ LogHelper.d("RichScreenApi have success connect, api="+myApi);
+ }
+
+ public void onServiceDisconnected(ComponentName className) {
+ if(isNormallyClosed || reconnectionTimes > MAX_RECONECTION_TIMES) {
+ LogHelper.d("IRichScreenApi api disconnect service");
+ myApi = null;
+ notifyServiceDisconnected();
+ } else {
+ LogHelper.d("illegal call IRichScreenApi api disconnect service :"
+ + reconnectionTimes);
+ init(context, rcsListener);
+ if (!isBinded()) {
+ // app is uninstalled
+ myApi = null;
+ notifyServiceDisconnected();
+ }
+ reconnectionTimes++;
+ }
+ }
+ };
+
+ public RichScreenApi(String theService) {
+ super(serviceName);
+ super.initServiceConnect(mConnection);
+ }
+
+ @Override
+ public void init(Context context, RCSServiceListener listener) {
+ LogHelper.i(String.format( Locale.getDefault(),"enter method:init. [context]=%s", context.toString()));
+ // TODO Auto-generated constructor stub
+ super.init(context, listener);
+//
+// // success bind service and then go to init richScreen plugin service:
+// try {
+// if (super.isBinded()) myApi.init(100);
+// } catch (Exception ex) {
+// // TODO Auto-generated catch block
+// LogHelper.e(ex.getMessage(), ex);
+// }
+ }
+
+ /**
+ * Gets the rich screen object.
+ *
+ * @param missdn
+ * the missdn of peer , When a call event occurs.
+ * @param phoneEvent
+ * the phone call event
+ * @return the rich screen object
+ */
+ public RichScrnShowing getRichScrnObj( String missdn, String phoneEvent ) throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ RichScrnShowing richScrnShowingObject = null;
+ try {
+ ResultUtil resultObj = myApi.getRichScrnObj(missdn, phoneEvent);
+
+ //sdk local could't get the RichScrnShowingObject
+ if(null == resultObj || !resultObj.isResultFlag() || null == resultObj.getResultObj()) {
+ //go to download new RichScrnObj....
+ if(downloadRichScrnObj(missdn, phoneEvent)) {
+ resultObj = myApi.getRichScrnObj(missdn, phoneEvent);
+ }
+ }
+
+ if(resultObj!=null && resultObj.isResultFlag()) {
+ LogHelper.i("success get the richScrnShowingObject about number:"+missdn+" at phone call event "+phoneEvent);
+ richScrnShowingObject = (RichScrnShowing)resultObj.getResultObj();
+ }
+ else {
+ LogHelper.w("could not get the richScrnShowingObject about number:"+missdn+" at phone call event "+phoneEvent);
+ }
+ } catch (Exception ex) {
+ // TODO Auto-generated catch block
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ return richScrnShowingObject;
+ }
+
+ /**
+ * Download rich screen object.
+ *
+ * @param missdn
+ * the missdn
+ * @param phoneEvent
+ * the phone event
+ * @return the result info
+ */
+ public boolean downloadRichScrnObj( String missdn, String phoneEvent ) {
+ boolean flag = false;
+ try {
+ ResultInfo downlodRlt = myApi.downloadRichScrnObj(missdn, phoneEvent);
+
+ if(downlodRlt != null && downlodRlt.isSuccess()) {
+ LogHelper.i("success download the richScrnShowingObject about number:"+missdn+" at phone call event "+phoneEvent);
+ flag = true;
+ }
+ else LogHelper.w("could not download the richScrnShowingObject about number:"+missdn+" at phone call event "+phoneEvent);
+ } catch (Exception ex) {
+ // TODO Auto-generated catch block
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ return flag;
+ }
+
+ /**
+ * Clear rich screen local cache.
+ *
+ * @param phoneEvent
+ * the phone event
+ * @return the result info
+ */
+ public boolean clearRichScrnLocalCache( String phoneEvent ) throws ServiceDisconnectedException {
+ VerificationUtil.ApiIsNull(myApi);
+ boolean flag = false;
+ try {
+ ResultInfo result = myApi.clearRichScrnLocalCache(phoneEvent);
+ if(result != null && result.isSuccess()) {
+ LogHelper.i("success clear the richScrnShowingObject at phone call event "+phoneEvent);
+ flag = true;
+ }
+ else LogHelper.w("could not clear the richScrnShowingObject at phone call event "+phoneEvent);
+ } catch (Exception ex) {
+ // TODO Auto-generated catch block
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ return flag;
+ }
+
+ public ResultInfo collectRichScrnObj(String sourceType, String cId) throws ServiceDisconnectedException {
+ LogHelper.i(String.format( Locale.getDefault(),"enter method:collectRichScrnObj. [sourceType,cId]=%s,%s", sourceType,cId));
+ VerificationUtil.ApiIsNull(myApi);
+ try {
+ return myApi.collectRichScrnObj(sourceType, cId);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ return null;
+ }
+
+ public ResultInfo downloadHomeLocRules(final String phoneEvent) throws ServiceDisconnectedException {
+ LogHelper.i(String.format( Locale.getDefault(),"enter method:downloadHomeLocRules. [phoneEvent]=%s", phoneEvent));
+ VerificationUtil.ApiIsNull(myApi);
+ try {
+ return myApi.downloadHomeLocRules(phoneEvent);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ return null;
+ }
+
+ public ResultInfo init(int cacheSize) throws ServiceDisconnectedException {
+ LogHelper.i(String.format( Locale.getDefault(),"enter method:init. [cacheSize]=%d", cacheSize));
+ VerificationUtil.ApiIsNull(myApi);
+ try {
+ return myApi.init(cacheSize);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ return null;
+ }
+
+ public ResultInfo richScrnCMCCSSOLogin() throws ServiceDisconnectedException {
+ LogHelper.i(String.format( Locale.getDefault(),"enter method:richScrnCMCCSSOLogin. "));
+ VerificationUtil.ApiIsNull(myApi);
+ try {
+ return myApi.richScrnCMCCSSOLogin();
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ return null;
+ }
+
+ public ResultInfo richScrnChangeNetWork() throws ServiceDisconnectedException {
+ LogHelper.i(String.format( Locale.getDefault(),"enter method:richScrnChangeNetWork. "));
+ VerificationUtil.ApiIsNull(myApi);
+ try {
+ return myApi.richScrnChangeNetWork();
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ return null;
+ }
+
+ public void startSiteApk(ArrayList<String> mobile) throws ServiceDisconnectedException {
+ LogHelper.i(String.format( Locale.getDefault(),"enter method:startSiteApk. [mobile]=%s", mobile));
+ VerificationUtil.ApiIsNull(myApi);
+ try {
+ PhoneList phoneList = new PhoneList();
+ phoneList.setPhoneList(mobile);
+ myApi.startSiteApk(phoneList);
+ } catch (Exception ex) {
+ LogHelper.e(ex.getMessage(), ex);
+ }
+ }
+
+ public enum PhoneEventEnum {
+ INITIATE_A_VOICE_CALL("111 00 00000"), // Initiate a voice call
+ INCOMING_VOICE_CALL_THE_TERMINAL_STARTS_RINGING("122 00 18000"), // Incoming voice call, the terminal starts ringing
+ SWITCHED_VOICE_CALLS_CALLINGSIDE("113 00 20000"), // Switched voice calls (calling side)
+ SWITCHED_VOICE_CALLS_CALLED_SIDE("123 00 20000"), // Switched voice calls (called side)
+ VOICE_CALL_HANG_UP_CALLING_SIDE("114 00 20000"), // Voice call hang up (calling side)
+ VOICE_CALL_HANG_UP_CALLED_SIDE("124 00 20000"), // Voice call hang up (called side)
+ OUTGOING_VIDEO_CALL("211 00 00000"), // Outgoing video call
+ VIDEO_CALL_COMES_IN_THE_TERMINAL_STARTS_RINGING("222 00 00000"), // Video call comes in, the terminal starts ringing
+ VIDEO_CALL_IS_CONNECTED_CALLING_SIDE("213 00 20000"), // Video call is connected (calling side)
+ VIDEO_CALL_IS_CONNECTED_CALLED_SIDE_SELECT_THE_VIDEO_CALL(
+ "223 00 20000"), // Video call is connected (called side, select the video call)
+ VIDEO_CALL_HANG_UP_CALLING_SIDE("214 00 20000"), // Video call hang up (calling side)
+ VIDEO_CALL_HANG_UP_CALLED_SIDE("224 00 20000"), // Video call hang up (called side)
+ ADDRESS_BOOK_IS_BING_VIEWED_VIEW_ENHANCED_SCREEN("933 10 11000"), // Terminal communication record, is being viewed, the owner asked to see the enhanced screen
+ ADDRESS_BOOK_IS_BING_VIEWED_ENHANCED_OSD_SETTINGS("933 10 12000"), // Terminal communication record, is being viewed, the owner requires setting the enhanced screen
+ ADDRESS_BOOK_HAVE_BEEN_UPDATED("934 10 20000"), // Terminal communication record have been updated (such as new or revised a contact)
+ COMPLETED_RESTORE_FACTORY_SETTINGS("934 90 30000"), //Terminal has been completed to restore factory settings
+ SIM_CARD_HAS_BEEN_REPLACED("944 90 40000"), // SIM card terminal has been replaced
+ NON_SPECIFIC_EVENTS("000 00 00000"), // Non-specific events
+ ;
+ private String phoneEvent;
+
+ private PhoneEventEnum(String phoneEvent) {
+ this.phoneEvent = phoneEvent;
+ }
+
+ public String getPhoneEvent() {
+ return phoneEvent;
+ }
+ }
+
+}