1. OPPO keychain SDK接口文档
1.1. 初始化
| 方法 | OppoKeyChainSdk.init(Context context) | 
|---|---|
| 说明 | 调用SDK接口前需保证已初始化,方法内部是内存级别操作,无耗时逻辑,无 需子线程异步,调用即完成初始化 | 
| 返回值 | 无 | 
1.2. 添加/更新
| 方法 | updateItem(Context context, HashMap | |
|---|---|---|
| 说明 | ·添加或更新Item ·如果Item不存在,执行添加操作;存在则更新 ·必须在非UI线程调用 | |
| 参数 | item | ·添加或更新Item集合,item为字典结构 {"key": "xxx", "data":"yyy"},类型为 Map,“key”、“data”字段名固定且必须, 目前只支持“key”和“data”两个字段,key为 item的唯一标识 ·示例: HashMap item = new HashMap(); item.put("key", "test_key1"); item.put("data", "test_data1"); | 
| listener | ·方法回调 public interface OnResultListener { void onResult(Result result); } Result.code为0表示操作成功,其他失败, code详细定义见下文。 | |
| 返回值 | 无 | 
1.3. 查询
| 方法 | queryItem(Context context, HashMap item, OnResultListener listener) | |
|---|---|---|
| 说明 | ·查询Item ·必须在非UI线程调用 | |
| 参数 | item | ·需要查询的Item,只填“key”一个字段 ·示例: HashMap item = new HashMap(); item.put("key", "test_key1"); item.put("data", "test_data1"); | 
| listener | ·方法回调 public interface OnResultListener { void onResult(Result result); } Result.code为0表示操作成功,Result.item为 查询结果,类型为Map。 | |
| 返回值 | 无 | 
1.4. 删除
| 方法 | delItem(Context context, String key, OnResultListener listener) | |
|---|---|---|
| 说明 | ·删除Item ·必须在非UI线程调用 | |
| 参数 | item | ·需要删除的Item,只填“key”一个字段 ·示例: HashMap item = new HashMap(); item.put("key", "test_key1"); | 
| listener | ·方法回调 public interface OnResultListener { void onResult(Result result); } Result.code为0表示操作成功,其他失败。 | |
| 返回值 | 无 | 
1.5. 清除
| 方法 | clearItems(Context context, OnResultListener listener) | |
|---|---|---|
| 说明 | ·清除调用方应用所有Item ·必须在非UI线程调用 | |
| 参数 | listener | ·方法回调 public interface OnResultListener { void onResult(Result result); } Result.code为0表示操作成功,其他失败。 | 
| 返回值 | 无 | 
1.6. 判断本机是否支持keychain能力
| 方法 | boolean isSupportKeyChain(Context context) | 
|---|---|
| 说明 | ·判断本机是否支持keychain能力 如果业务调用接口前不做判断,且当前本机安装的移动服务版本较低,则会触发“自动跳转软件商店下载更新最新版本”(需另外依赖implementation "com.heytap.msp.sdk:msp-guide-sdk:1.0.0.1"),业务自 行评估体验 | 
| 返回值 | 支持,true;否则,false | 
1.7. Result类说明
public class Result{
        //本次接口调用结果
        private int code;
        //结果描述
        private String message;
        //执行query时返回查询结果字典,其他调用该字段值是空
        private HashMap item;
        public void setCode(intcode){
            This.code=code;
        }
        public void setMessage(Stringmessage){
            this.message=message;
        }
        public void setItem(HashMapitem){
            this.item=item;
        }
        public int getCode(){
            return code;
        }
        public String getMessage(){
            return message;
        }
        public HashMa pgetItem(){
            return item;
        }
        @Override
        public String toString(){
            return "Result{"+
            "code = '"+ code +'\''+
            ", message= '"+ message +'\''+
            ",item = '"+(item != null?item.toString():null)+'\''
        '}';
    }
}
1.8. Result.code(目前已定义5个,以最终交付版为准)
| cod | message | 说明 | 
|---|---|---|
| 0 | success | 调用成功 | 
| -1 | calling package check failed | 调用方包名与callingUid不匹配 | 
| -2 | empty items | items参数为空 | 
| -3 | empty key or data | key或者data参数为空 | 
| -4 | authfailed | 鉴权失败 | 
| 其他 | IPC底层通信错误 | 
1.9. 联调
- 业务App侧集成keychain-sdk
- 在oppo手机安装MspCoreApp
- 调用keychain-sdk接口,callback回调结果
 
    