cardápio

Integração do SaleSmartly com a WebView do Android

Você pode usar o WebView no Android. Veja o exemplo de demonstração do WebView do SaleSmartly para Android. Clique aqui para baixar.

Permissões necessárias no manifesto do aplicativo

Copy
  <code>&lt;uses-permission android:name=&quot;android.permission.INTERNET&quot;/&gt;
&lt;uses-permission android:name=&quot;android.permission.ACCESS_NETWORK_STATE&quot; /&gt;
&lt;uses-permission android:name=&quot;android.permission.ACCESS_WIFI_STATE&quot; /&gt;
&lt;uses-permission android:name=&quot;android.permission.WRITE_EXTERNAL_STORAGE&quot;/&gt;
&lt;br&gt;

Configurações básicas do Webview

Copy
  <code class="language-kotlin"> // 启用JavaScript
 webView.settings.javaScriptEnabled = true

  // 启用 localStorage
  webView.settings.domStorageEnabled = true

O Webview lida com o envio de arquivos.

Para obter o código detalhado, consulte a demonstração.

Copy
  <code class="language-kotlin"> webView.webChromeClient = object : WebChromeClient() {
            override fun onShowFileChooser(
                webView: WebView,
                filePathCallback: ValueCallback&lt;Array&lt;Uri&gt;&gt;,
                fileChooserParams: FileChooserParams
            ): Boolean {
                println(&quot;onShowFileChooser&quot;)
                mUploadMessageAboveL = filePathCallback
                val intent = Intent(fileChooserParams.createIntent())
                intent.addCategory(Intent.CATEGORY_OPENABLE)
                intent.type = &quot;*/*&quot;
                intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true) // 允许多选
                register.launch(Intent.createChooser(intent, &quot;Select File&quot;))

                return true
            }
  }

O WebView lida com a reprodução de vídeo em tela cheia.

Para obter o código detalhado, consulte a demonstração.

Copy
  <code class="language-kotlin"> webView.webChromeClient = object : WebChromeClient() {
            override fun onShowFileChooser(
                webView: WebView,
                filePathCallback: ValueCallback&lt;Array&lt;Uri&gt;&gt;,
                fileChooserParams: FileChooserParams
            ): Boolean {
                println(&quot;onShowFileChooser&quot;)
                mUploadMessageAboveL = filePathCallback
                val intent = Intent(fileChooserParams.createIntent())
                intent.addCategory(Intent.CATEGORY_OPENABLE)
                intent.type = &quot;*/*&quot;
                intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true) // 允许多选
                register.launch(Intent.createChooser(intent, &quot;Select File&quot;))

                return true
            }

            override fun onShowCustomView(view: View, callback: CustomViewCallback) {
                // 当视频请求全屏时,显示自定义视图
                if (customView != null) {
                    callback.onCustomViewHidden()
                    return
                }

                customView = view
                customViewContainer.visibility = View.VISIBLE
                customViewContainer.addView(customView)
                customViewCallback = callback
                webView.visibility = View.GONE
                customViewContainer.bringToFront()
            }

            override fun onHideCustomView() {
                // 当退出全屏时,恢复默认视图
                customView?.let {
                    customViewContainer.removeView(it)
                    customView = null
                    customViewContainer.visibility = View.GONE
                    customViewCallback?.onCustomViewHidden()
                    webView.visibility = View.VISIBLE
                }
            }

            override fun getDefaultVideoPoster(): Bitmap {
                return Bitmap.createBitmap(50, 50, Bitmap.Config.ARGB_8888)
            }

        }

Perguntas frequentes

1. Nenhuma resposta ao clicar para enviar fotos ou arquivos.

Você precisa reescrever o método "onShowFileChooser" da WebView. Consulte a demonstração para obter mais detalhes.

2. A reprodução de vídeo não pode ser em tela cheia ou ocorre uma exceção após sair do modo de tela cheia.

Utilize a visualização personalizada em tela cheia, oculte-a ao sair e exiba a visualização original. Consulte a demonstração para obter mais detalhes.

3. Não foi possível carregar ou exibir

Verifique as permissões de rede, o status da rede, se o JavaScript importado pela página está correto e se o plug-in está habilitado. Recomenda-se executar e testar primeiro no navegador e, em seguida, adicionar ao aplicativo para teste após a aprovação.

Verifique se o aplicativo intercepta ou processa o link aberto de outras maneiras.

Verifique como o aplicativo lida com redirecionamentos de links.

Anterior
Documentação para desenvolvedores iOS do SaleSmartly
Próximo
Um guia completo para dominar os webhooks
última modificação: 2026-08-26Powered by