com.qihoo.livecloud.plugin

## Class ILiveCloudPlugin

- java.lang.Object
- - com.qihoo.livecloud.plugin.ILiveCloudPlugin

- All Implemented Interfaces:
    LiveCloudPluginConstant
  Direct Known Subclasses:
    ILiveCloudPluginEx

      public abstract class ILiveCloudPlugin
      extends java.lang.Object
      implements LiveCloudPluginConstant

  插件接口基类
  Created by LeiXiaojun on 2017/8/28.

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static interface` | `ILiveCloudPlugin.PluginCallback` 插件安装或升级回调接口
    `static interface` | `ILiveCloudPlugin.PluginDownloadCallback` 插件下载回调接口
    `static interface` | `ILiveCloudPlugin.PluginDownloadListener` 插件下载监听接口

  - ### Field Summary

    - ### Fields inherited from interface com.qihoo.livecloud.plugin.LiveCloudPluginConstant

      `DT_INSTALL, DT_UPDATE, ERROR_CANCEL, ERROR_CONFIG_DOWNLOAD_FAILED, ERROR_CONFIG_PARSE_FAILED, ERROR_DEPENDENT_PLUGIN_LOAD_FAILED, ERROR_DEPENDENT_PLUGIN_NOT_INSTALL, ERROR_INSTALL_RUNNING, ERROR_LOCAL_UPDATE_FAILED, ERROR_LOCAL_UPDATE_OLD_LOADED, ERROR_NO_SPACES, ERROR_NOT_INSTALL, ERROR_PLUGIN_DELETE_FAILED, ERROR_PLUGIN_LOAD_FAILED, ERROR_SUCCESS, ERROR_UNKNOWN, ERROR_ZIP_DOWNLOAD_FAILED, ERROR_ZIP_FILE_DISMATCH, ERROR_ZIP_MD5_DISMATCH, ERROR_ZIP_UNZIP_FAILED, TAG, V_2_0_1, V_2_0_2, V_2_0_9, V_2_1_1, V_2_2_0`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods Deprecated Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `backgroundInstallOrUpdatePlugin()` 将正在安装或升级的插件转入后台运行，安装或升级完成后不再触发原事件
    `void` | `cancelInstallOrUpdatePlugin()` 取消安装或升级插件
    `int` | `checkInstallOrUpdatePlugin(Context context, ILiveCloudPlugin.PluginCallback callback)` Deprecated. 请调用`#checkInstallPlugin()`
    `int` | `checkInstallOrUpdatePlugin(Context context, ILiveCloudPlugin.PluginDownloadListener listener, ILiveCloudPlugin.PluginCallback callback)` Deprecated. 请调用`#checkInstallPlugin()`
    `int` | `checkInstallPlugin(Context context, ILiveCloudPlugin.PluginCallback callback)` 安装插件
    `int` | `checkInstallPlugin(Context context, ILiveCloudPlugin.PluginDownloadListener listener, ILiveCloudPlugin.PluginCallback callback)` 安装插件
    `void` | `checkUninstallPlugin()` 删除旧版本插件
    `int` | `checkUpdatePlugin(Context context, ILiveCloudPlugin.PluginDownloadListener listener)` 升级插件，若新插件已下载，执行本地升级逻辑；否则后台静默下载新插件，待APP下次启动时再次执行本地升级逻辑 注意： 1.该接口需要在`setDefaultPluginInstalled(boolean)`接口后且`loadPlugin()`接口前调用 2.为避免插件下载占用网络带宽进而影响当前业务，建议设置`ILiveCloudPlugin.PluginDownloadListener`参数自行选择时机下载插件
    `long` | `getPluginSize()` 获取插件大小
    `java.lang.String` | `getPluginVersion()` 获取插件版本号
    `java.lang.String` | `getTag()`
    `boolean` | `isDefaultPluginInstalled()` 检测是否自带插件
    `boolean` | `isPluginInstalled()` 检测插件是否已安装
    `boolean` | `isPluginLoaded()` 插件是否已加载
    `boolean` | `isPluginValid()` 插件是否有效，分两种情况： 1.系统自带 2.动态下载且加载成功
    `int` | `loadPlugin()` 加载已安装的插件
    `int` | `removePlugin()` 移除插件
    `void` | `setDefaultPluginInstalled(boolean defaultPluginInstalled)` 设置是否自带插件
    `void` | `setPluginDownloadListener(ILiveCloudPlugin.PluginDownloadListener listener)` 设置插件后台静默升级下载监听接口 注意：插件会后台自动升级，业务方可设置该监听接口以便管理下载时机。

    - ### Methods inherited from class java.lang.Object

      `equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Method Detail

    - #### getTag

          public java.lang.String getTag()

    - #### setDefaultPluginInstalled

          public void setDefaultPluginInstalled(boolean defaultPluginInstalled)

      设置是否自带插件
      Parameters:
        `defaultPluginInstalled` - true自带，false不自带

    - #### isDefaultPluginInstalled

          public boolean isDefaultPluginInstalled()

      检测是否自带插件
      Returns:
        true自带，false不自带

    - #### isPluginInstalled

          public boolean isPluginInstalled()

      检测插件是否已安装
      Returns:
        true已安装，false未安装

    - #### isPluginValid

          public boolean isPluginValid()

      插件是否有效，分两种情况：
      1.系统自带
      2.动态下载且加载成功
      Returns:
        true有效，false无效

    - #### loadPlugin

          public int loadPlugin()

      加载已安装的插件
      Returns:
        错误码，参见`LiveCloudPluginConstant.ERROR_UNKNOWN`等

    - #### isPluginLoaded

          public boolean isPluginLoaded()

      插件是否已加载
      Returns:
        true已加载，false未加载

    - #### getPluginVersion

          public java.lang.String getPluginVersion()

      获取插件版本号
      Returns:
        已安装时返回版本号，否则返回NULL

    - #### checkUninstallPlugin

          public void checkUninstallPlugin()

      删除旧版本插件

    - #### checkInstallOrUpdatePlugin

          public int checkInstallOrUpdatePlugin(Context context,
                                                ILiveCloudPlugin.PluginCallback callback)

      Deprecated. 请调用`#checkInstallPlugin()`
      安装或升级插件
      Parameters:
        `context` - context
        `callback` - 回调接口
      Returns:
        错误码，`LiveCloudPluginConstant.ERROR_INSTALL_RUNNING`表示插件正在后台安装或升级， `LiveCloudPluginConstant.ERROR_SUCCESS`表示插件开始安装或升级

    - #### checkInstallOrUpdatePlugin

          public int checkInstallOrUpdatePlugin(Context context,
                                                ILiveCloudPlugin.PluginDownloadListener listener,
                                                ILiveCloudPlugin.PluginCallback callback)

      Deprecated. 请调用`#checkInstallPlugin()`
      安装或升级插件
      Parameters:
        `context` - context
        `listener` - 下载监听接口，若业务方需要自行实现插件下载功能，需要实现该接口
        `callback` - 回调接口
      Returns:
        错误码，`LiveCloudPluginConstant.ERROR_INSTALL_RUNNING`表示插件正在后台安装或升级， `LiveCloudPluginConstant.ERROR_SUCCESS`表示插件开始安装或升级

    - #### checkInstallPlugin

          public int checkInstallPlugin(Context context,
                                        ILiveCloudPlugin.PluginCallback callback)

      安装插件
      Parameters:
        `context` - context
        `callback` - 回调接口
      Returns:
        错误码，`LiveCloudPluginConstant.ERROR_INSTALL_RUNNING`表示插件正在后台安装或升级， `LiveCloudPluginConstant.ERROR_SUCCESS`表示插件开始安装或升级

    - #### checkInstallPlugin

          public int checkInstallPlugin(Context context,
                                        ILiveCloudPlugin.PluginDownloadListener listener,
                                        ILiveCloudPlugin.PluginCallback callback)

      安装插件
      Parameters:
        `context` - context
        `listener` - 下载监听接口，若业务方需要自行实现插件下载功能，需要实现该接口
        `callback` - 回调接口
      Returns:
        错误码，`LiveCloudPluginConstant.ERROR_INSTALL_RUNNING`表示插件正在后台安装或升级， `LiveCloudPluginConstant.ERROR_SUCCESS`表示插件开始安装或升级

    - #### checkUpdatePlugin

          public int checkUpdatePlugin(Context context,
                                       ILiveCloudPlugin.PluginDownloadListener listener)

      升级插件，若新插件已下载，执行本地升级逻辑；否则后台静默下载新插件，待APP下次启动时再次执行本地升级逻辑
      注意：
      1.该接口需要在`setDefaultPluginInstalled(boolean)`接口后且`loadPlugin()`接口前调用
      2.为避免插件下载占用网络带宽进而影响当前业务，建议设置`ILiveCloudPlugin.PluginDownloadListener`参数自行选择时机下载插件
      Parameters:
        `context` - context
        `listener` - 下载监听接口，若业务方需要自行实现插件下载功能，需要实现该接口
      Returns:
        错误码，参见`LiveCloudPluginConstant.ERROR_UNKNOWN`等

    - #### cancelInstallOrUpdatePlugin

          public void cancelInstallOrUpdatePlugin()

      取消安装或升级插件

    - #### backgroundInstallOrUpdatePlugin

          public void backgroundInstallOrUpdatePlugin()

      将正在安装或升级的插件转入后台运行，安装或升级完成后不再触发原事件

    - #### removePlugin

          public int removePlugin()

      移除插件
      Returns:
        错误码，参见`LiveCloudPluginConstant.ERROR_UNKNOWN`等

    - #### setPluginDownloadListener

          public void setPluginDownloadListener(ILiveCloudPlugin.PluginDownloadListener listener)

      设置插件后台静默升级下载监听接口
      注意：插件会后台自动升级，业务方可设置该监听接口以便管理下载时机。
      Parameters:
        `listener` - 下载监听接口，若业务方需要自行实现插件下载功能，需要实现该接口

    - #### getPluginSize

          public long getPluginSize()

      获取插件大小
      Returns:
        插件大小，单位Byte