Интеграция мобильных веб-редакторов Р7 на платформе ANDROID

Чтобы получить доступ к функциям редактора в своем мобильном приложении, интегрируйте его с редакторами Р7 через компонент WebView — системный компонент, отвечающий за открытие веб-страниц в приложениях. После этого пользователи смогут просматривать, создавать и редактировать текстовые документы, электронные таблицы и презентации, заполнять формы и читать PDF-файлы прямо на своих устройствах iOS или Android.

В этом разделе мы рассмотрим процесс интеграции через WebView на примере мобильного демо-образца для Android.

Интеграция на базе тестового образца Р7

Этот пример демонстрирует, как интегрировать мобильные веб-редакторы Р7 с тестом Р7  или тестом DMS.

Интеграция мобильных веб-редакторов Р7 на платформе ANDROID

Открытие редакторов Р7

  1. Загрузите и установите Р7 Document Server.
  2. Откройте файл build.gradle верхнего уровня в Android Studio, чтобы изменить фрагменты кода этого примера, чтобы ваша DMS работала правильно.
  3. Для отображения главной страницы вашего DMS укажите адрес веб-интерфейса Сервера документов в значении свойства DOCUMENT_SERVER_URL в файле build.gradle уровня модуля:
    buildConfigField("String", "DOCUMENT_SERVER_URL", "https://documentserver/")
    

    где documentserver — это имя сервера, на котором установлен Сервер документов Р7.

    Если указан DOCUMENT_SERVER_URL, загружается главная страница DMS. В противном случае возникает ошибка:

    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()
    }
    

    Интеграция мобильных веб-редакторов Р7 на платформе ANDROIDDocumentServerURL не указан

    Интеграция мобильных веб-редакторов Р7 на платформе ANDROID

    Указан DocumentServerURL

  4. Используйте контроллер MainFragment.kt, чтобы корректно открывать редакторы на устройствах Android. В этом контроллере определите функцию для открытия документа через компонент WebView. Запросите URL-адрес и проверьте, содержит ли он строку «редактор», указывающую, что документ будет открыт:
    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)
        }
    
    }
    
  5. Чтобы начать работу с документами, откройте редактор Р7 на мобильном устройстве через компонент WebView. Для этого настройте WebView и макет в контроллере EditorFragment.kt следующим образом:
    @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())
    }
    
  6. На панели инструментов Android Studio выберите свое приложение и устройство, на котором оно будет запущено. После этого нажмите кнопку «Запустить» на панели инструментов проекта, чтобы создать и запустить код.
  7. Приложение откроется, чтобы продемонстрировать пример интеграции мобильных веб-редакторов Р7 с тестовой версией Р7 или образцом DMS.

Закрытие редакторов Р7

Используйте контроллер EditorFragment.kt для выхода из редактора:

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)
    }

}