跳到主要内容

安卓设备上的移动集成

文档编辑器可以通过 WebView 组件嵌入到 Android 应用中。完整的演示项目可在 GitHub 上获取。

基于 ONLYOFFICE 测试示例的集成

本示例演示如何将 ONLYOFFICE 移动端网页编辑器与 ONLYOFFICE 测试或 DMS 示例集成。

通过测试示例的 Android 集成

打开 ONLYOFFICE 编辑器

  1. 下载并安装ONLYOFFICE 文档企业版开发者版

  2. GitHub 下载 Android 移动演示示例。

  3. 使用 Android Studio 打开项目。

  4. 在模块级 build.gradle 文件中,将 DOCUMENT_SERVER_URL 属性设置为您的 ONLYOFFICE 文档实例地址:

    buildConfigField("String", "DOCUMENT_SERVER_URL", "https://documentserver/")

    其中 documentserver 是已安装 ONLYOFFICE 文档的服务器名称。

    提示

    还没有文档服务器?注册免费的 ONLYOFFICE 文档云,并使用实例的公共 IP 地址或公共 DNS 名称作为 documentserver。您可以在云控制台的实例部分找到它们。

    DOCUMENT_SERVER_URL 为空,应用将显示错误对话框,而非加载文档管理器页面:

    private fun showDialog() {
    AlertDialog.Builder(requireContext())
    .setMessage("Document server url is empty.\nYou must specify the address in build.gradle")
    .setPositiveButton("Ok") { dialog, _ ->
    dialog.dismiss()
    requireActivity().finish()
    }
    .create()
    .show()
    }
    Android error Android document manager
  5. MainFragment.kt 控制器负责从文档管理器文档编辑器的导航。当用户点击文档时,控制器拦截 URL,检查是否包含 "editor" 字符串,若包含则导航到编辑器 fragment:

    private class MainWebViewClient(private val navController: NavController) : WebViewClient() {

    override fun shouldOverrideUrlLoading(view: WebView?, request: WebResourceRequest?): Boolean {
    val url = request?.url
    if (url != null) {
    val path = url.path
    if (path?.contains("editor") == true) {
    navController.navigate(R.id.action_mainFragment_to_editorFragment, Bundle(1).apply {
    putString("document_url", url.toString())
    })
    return true
    }
    return false
    }
    return super.shouldOverrideUrlLoading(view, request)
    }

    }

    MainFragment.kt 完整代码请参见此处

  6. EditorFragment.kt 控制器通过 WebView 组件显示文档编辑器。按如下方式配置 WebView 设置和布局:

    @SuppressLint("SetJavaScriptEnabled")
    private fun setSettings() {
    webView?.settings?.apply {
    javaScriptEnabled = true
    javaScriptCanOpenWindowsAutomatically = true
    loadWithOverviewMode = true
    cacheMode = WebSettings.LOAD_NO_CACHE
    domStorageEnabled = true
    }
    webView?.webViewClient = EditorWebViewClient(findNavController())
    }

    load() 方法将 type 参数设置为 "mobile",以优化触摸屏的编辑器界面:

    private fun load() {
    url?.let {
    val loadUrl = it.toString()
    if (it.query?.contains("docxf") == true) {
    webView?.loadUrl(loadUrl)
    } else {
    webView?.loadUrl(loadUrl.replace("type=desktop", "type=mobile"))
    }
    }
    }
  7. 在 Android Studio 工具栏中选择应用和目标设备,然后点击运行按钮构建并启动应用。

  8. 应用将打开文档管理器页面。选择文档即可在文档编辑器中打开。

关闭 ONLYOFFICE 编辑器

EditorFragment.kt 控制器同时负责退出编辑器。当用户离开编辑器(URL 不再包含 "editor")时,控制器将返回文档管理器

private class EditorWebViewClient(private val navController: NavController) : WebViewClient() {

override fun shouldOverrideUrlLoading(view: WebView?, request: WebResourceRequest?): Boolean {
request?.url?.let { url ->
if (!url.toString().contains("editor")) {
navController.popBackStack()
return true
}
}
return super.shouldOverrideUrlLoading(view, request)
}

}

EditorFragment.kt 完整代码请参见此处