# 插件上下文(MTPluginContext)

插件上下文会在大部分接口初始化时作为参数传入,通过插件上下文可以获取当前插件ID、版本信息、配置文件、当前语言环境、资源文件输入流等内容,还可以输出日志、记录错误信息等。

# 获取插件信息

/**
 * 获取插件ID
 */
String getPluginId();

/**
 * 获取插件版本号
 */
int getPluginVersionCode();

/**
 * 获取插件版本名称
 */
String getPluginVersionName();

# 获取配置文件

/**
 * 配置数据,可以自由增删查改,当卸载插件时数据会被删除
 */
SharedPreferences getPreferences();

其中 SharedPreferences 是 Android 原有的接口,用法完全一样。

# 例子

SharedPreferences preferences = context.getPreferences();

// 获取配置信息
int i = preferences.getInt("key_int", 0);
long l = preferences.getLong("key_long", 0L);
float f = preferences.getFloat("key_float", 0f);
boolean b = preferences.getBoolean("key_bool", false);
String string = preferences.getString("key_str", "默认值");
Set<String> strings = preferences.getStringSet("key_str_set", null);

// 编辑配置信息
preferences.edit()
    .putInt("key_int", 1)
    .putLong("key_long", 1L)
    .putFloat("key_float", 1f)
    .putBoolean("key_bool", true)
    .putString("key_str", "abc")
    .remove("key_str_set")
    .apply();

# 获取语言环境

/**
 * 获取本地语言代码,如zh、en、ru
 */
String getLanguage();

/**
 * 获取国家/地区代码,如CN,可能为空字符串
 */
String getCountry();

/**
 * 合并Language和Country
 * 例如Language为zh,Country为CN,返回zh-CN
 * 例如Language为en,Country为空,返回en
 */
String getLanguageCountry();

# 获取本地化文本

相关内容:本地化文本

/**
 * 相当于getAssetLocalString("String")
 */
LocalString getLocalString();

/**
 * 获取插件 assets 文件夹中的语言包
 * 具体见本地化文本说明
 */
LocalString getAssetLocalString(String name);

/**
 * 获取 dir 目录下的语言包
 * 具体见本地化文本说明
 */
LocalString getFileLocalString(File dir, String name);

/**
 * 获取 MT 自带的一个全球语言名称的本地化文本,主要用于翻译引擎
 * auto  -> 自动检测
 * en    -> 英文
 * zh-CN -> 简体中文
 * ...
 * 完整映射关系见「本地化文本」>>「全球语言名称」
 */
LocalString getLanguageNameLocalString();

# 获取资源文件输入流

/**
 * 获取插件安装包assets文件夹内的文件输入流
 * 例如文件路径为assets/d/a.txt,则参数name为d/a.txt
 * 文件不存在返回null
 */
InputStream getAssetsAsStream(String name);

# 获取插件私用目录

/**
 * 返回插件专用的文件目录,该目录会随着插件的卸载而被删除,建议
 * 文件都写到这个目录,可防止卸载后有残留文件。
 */
File getFilesDir();

# 写出日志

MTPluginContext 提供了三个方法用于写出日志,日志内容可以在 MT 插件管理界面点击右上角查看。

/**
 * 写出日志,可在插件管理界面查看
 */
void log(String msg);

/**
 * 写出日志,可在插件管理界面查看
 */
void log(String msg, Throwable e);

/**
 * 写出日志,可在插件管理界面查看
 */
void log(Throwable e);

# 弹出文本提示

/**
 * 弹出一个Toast,显示停留时间较短
 */
void showToast(String msg);

/**
 * 弹出一个Toast,显示停留时间较长
 */
void showToastL(String msg);