有道编辑器SDK是有道开放平台提供的云服务之一,是有道编辑器接口的一种实现。拥有多年产品化实践经验,服务于有道云笔记千万用户。
通过SDK接入优势:
开始集成SDK之前开发者需要登录有道开放平台(http://ai.youdao.com),创建应用获取应用ID(或者通过运营人员获取应用ID),以便使用编辑器sdk服务,编辑器SDK只支持Android5.0及以后的系统。
编辑器sdk有以下几个部分组成:
文件 | 说明 | |
---|---|---|
editorsdk-release.aar | 可用于集成的sdk aar文件 | |
YoudaoEditorSdk.zip | sdk使用demo |
SDK
使用的是aar
引入方式,需要把对应的editorsdk.aar
导入到libs
目录下,然后在build.gradle
中添加对应的设置:
repositories {
flatDir {
dirs 'libs'
}
}
dependencies {
...
compile(name: 'editorsdk', ext: 'aar')
...
}
详细配置请参见NDK官方配置文档
在AndroidManifest.xml中添加权限:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
所有的编辑器功能都需要初始化key,只执行初始化一次即可。建议用户在新建MyApplication
中的onCreate
中初始化key。
package com.youdao.ynote.editorsdk;
import android.app.Application;
import com.youdao.youdao_editor_sdk.YNoteEditorApi;
public class MyApplication extends Application {
private static final String APP_KEY = "appkey";
@Override
public void onCreate() {
super.onCreate();
YNoteEditorApi.init(this, APP_KEY);
}
}
在代码中使用时,可直接将YNoteEditor
作为一个自定义视图使用,添加到自己的layout
之中,用于内容编辑。如我们可以在layout/activity_main.xml
中添加:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<com.youdao.youdao_editor_sdk.YNoteEditor
android:id="@+id/note_editor"
android:layout_width="match_parent"
android:layout_height="match_parent">
</com.youdao.youdao_editor_sdk.YNoteEditor>
</LinearLayout>
这样的话,就在MainActivity
添加了编辑器组件,可以进行内容的编辑。
5.1. public class YNoteEditorAPI
:
作为主要的API类,用于定义SDK全局的属性和方法。
初始化
/**
* 初始化编辑器sdk,没有初始化会导致后续使用异常
* 初次初始化需要联网,否则会导致App校验不通过,无法使用编辑器功能
* context需要传入ApplicationContext
* APP_KEY为当前App指定的Key
*/
YNoteEditorAPI.init(Context context, String appKey);
设置调试模式
boolean isDebugging = false;
5.2. public class YNoteEditor
:
主要的自定义空间类,用于编辑内容。
设置编辑器回调
/**
* 设置编辑器回调
* @param callBack 编辑器回调对象
*/
public void setEditorCallBack(EditorCallBack callBack)
设置笔记内容
/**
* API接口,设置笔记内容
* @param noteContent 笔记内容,xml格式
*/
protected void setNoteContent(String noteContent)
设置笔记内容
/**
* 设置笔记内容
* @param noteContent 笔记内容
* @param contentType 内容格式,支持xml和json
*/
public void setNoteContent(String noteContent, YNoteContentType
contentType);
插入图片
/**
* API接口,插入图片
* @param source 图片路径,支持网络或本地文件路径
*/
protected void insertImage(@NonNull String source)
获取笔记内容
/**
* 获取笔记内容,内容在回调对象的onFetchNoteContent中返回
*/
protected void getNoteContent()
获取笔记内容
/**
* 获取笔记内容
* @param contentType 内容类型,内容在回调对象的onFetchNoteContent中返回
*/
public void getNoteContent(YNoteContentType contentType);
判断笔记内容是否有修改
/**
* 内容是否有修改
* @return
*/
public boolean isContentChanged()
5.3. public interface EditorCallBack
EditorCallBack
接口的实例对象用于设置编辑器回调中设置,
获取当前Activity
public @NonNull Activity currentActivity();
获取笔记内容回调
/**
* 获取笔记内容的回调接口
* @param noteContent 当前编辑器内的笔记内容
*/
protected abstract void onFetchNoteContent(String noteContent);
点击拍照按钮回调
/**
* 点击拍照按钮
*/
protected abstract void onPressTakePhoto();
点击选择图片回调
/**
* 点击选图按钮
*/
protected abstract void onPressPickPhoto();
点击编辑器内图片回调
/**
* 点击图片
* @param resourceUrl 图片地址
*/
protected abstract void onClickImage(String resourceUrl);
点击编辑器内附件回调
/**
* 点击附件
* @param fileName 附件文件名
* @param resourceUrl 附件下载路径
*/
protected abstract void onClickAttachment(String fileName,
String resourceUrl);
粘贴板处理的回调
/***
* 获取复制到粘贴板的真实内容,如果不需要处理,可直接返回null。
* @param html 从笔记中的复制的原内容
*/
public String getClipboardContent(String html);
错误回调
/***
* 错误回调
* errorCode会返回错误原因
* PERMISSION_DENTED:权限错误(APP_KEY不匹配或网络连接错误)
* OTHER:其他错误
*/
public void onError(ErrorCode errorCode)
请检查是否正确配置了NDK。
请检查APP_KEY和包名是否匹配。另外,第一次进入APP需要联网校验该APP是否授权,请检查是否联网。
错误代码 | 定义常量 | 错误原因 |
---|---|---|
10000 | ErrorCode.OTHER | 未知错误 |
10001 | ErrorCode.PERMISSION_DENIED | 当前App没有权限 |
上线日期 | 版本号 | 更新内容 |
---|---|---|
2018.4.26 | v1.0.0 | 有道编辑器SDK Android版上线,支持富文本编辑 |
2018.11.9 | v1.1.0 | 增加纯文本和html格式输出 |