CustomPresenceMapping.java
上传用户:szyujian
上传日期:2016-09-20
资源大小:320k
文件大小:3k
源码类别:

android开发

开发平台:

C/C++

  1. /*
  2.  * Copyright (C) 2008 Esmertec AG.
  3.  * Copyright (C) 2008 The Android Open Source Project
  4.  *
  5.  * Licensed under the Apache License, Version 2.0 (the "License");
  6.  * you may not use this file except in compliance with the License.
  7.  * You may obtain a copy of the License at
  8.  *
  9.  *      http://www.apache.org/licenses/LICENSE-2.0
  10.  *
  11.  * Unless required by applicable law or agreed to in writing, software
  12.  * distributed under the License is distributed on an "AS IS" BASIS,
  13.  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14.  * See the License for the specific language governing permissions and
  15.  * limitations under the License.
  16.  */
  17. package com.android.im.imps;
  18. import com.android.im.engine.ImException;
  19. import com.android.im.plugin.IPresenceMapping;
  20. import com.android.im.plugin.ImPluginConstants;
  21. import dalvik.system.PathClassLoader;
  22. import android.os.RemoteException;
  23. import java.util.Map;
  24. public class CustomPresenceMapping implements PresenceMapping {
  25.     private IPresenceMapping mPresenceMapping;
  26.     public CustomPresenceMapping(String pluginPath, String implClass) throws ImException {
  27.         PathClassLoader classLoader = new PathClassLoader(pluginPath,
  28.                 getClass().getClassLoader());
  29.         try {
  30.             Class cls = classLoader.loadClass(implClass);
  31.             mPresenceMapping = (IPresenceMapping)cls.newInstance();
  32.         } catch (ClassNotFoundException e) {
  33.             throw new ImException(e);
  34.         } catch (IllegalAccessException e) {
  35.             throw new ImException(e);
  36.         } catch (InstantiationException e) {
  37.             throw new ImException(e);
  38.         }
  39.     }
  40.     public Map<String, Object> getExtra(int status) {
  41.         try {
  42.             return mPresenceMapping.getExtra(status);
  43.         } catch (RemoteException e) {
  44.             return null;
  45.         }
  46.     }
  47.     public boolean getOnlineStatus(int status) {
  48.         try {
  49.             return mPresenceMapping.getOnlineStatus(status);
  50.         } catch (RemoteException e) {
  51.             return false;
  52.         }
  53.     }
  54.     public int getPresenceStatus(boolean onlineStatus, String userAvailability,
  55.             Map<String, Object> allValues) {
  56.         try {
  57.             return mPresenceMapping.getPresenceStatus(onlineStatus, userAvailability, allValues);
  58.         } catch (RemoteException e) {
  59.             return ImPluginConstants.PRESENCE_OFFLINE;
  60.         }
  61.     }
  62.     public int[] getSupportedPresenceStatus() {
  63.         try {
  64.             return mPresenceMapping.getSupportedPresenceStatus();
  65.         } catch (RemoteException e) {
  66.             return new int[0];
  67.         }
  68.     }
  69.     public String getUserAvaibility(int status) {
  70.         try {
  71.             return mPresenceMapping.getUserAvaibility(status);
  72.         } catch (RemoteException e) {
  73.             return ImPluginConstants.PA_NOT_AVAILABLE;
  74.         }
  75.     }
  76.     public boolean requireAllPresenceValues() {
  77.         try {
  78.             return mPresenceMapping.requireAllPresenceValues();
  79.         } catch (RemoteException e) {
  80.             return false;
  81.         }
  82.     }
  83. }