WebView di Android: Panduan Lengkap

Belajar menggunakan WebView di Android dengan pengaturan dasar, handle unggah file, dan solusi masalah umum.

1. Penggunaan Webview di Android

Anda dapat menggunakan webview di Android, Contoh Demo webview SaleSmartly Android, klik untuk mengunduh

1.1. Izin yang Diperlukan dalam Manifest Aplikasi

<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;
</code>

1.2. Pengaturan Dasar Webview

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

// Aktifkan localStorage
webView.settings.domStorageEnabled = true
</code>

1.3. Webview Menangani Unggah File

Untuk kode detail, silakan lihat demo

<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) // Izinkan pemilihan ganda
        register.launch(Intent.createChooser(intent, &quot;Select File&quot;))

        return true
    }

    override fun onShowCustomView(view: View, callback: CustomViewCallback) {
        // Saat video meminta layar penuh, tampilkan tampilan kustom
        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() {
        // Saat keluar dari layar penuh, kembalikan tampilan default
        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)
    }
}
</code>

1.4. Pertanyaan yang Sering Diajukan

1.4.1. Tidak ada respons saat mengklik untuk mengunggah gambar atau file

Anda perlu menulis ulang "onShowFileChooser" dari webview, silakan lihat demo untuk detailnya.

1.4.2. Pemutaran video tidak bisa layar penuh atau terjadi kesalahan setelah keluar dari layar penuh

Gunakan tampilan kustom dalam layar penuh, sembunyikan setelah keluar, dan tampilkan tampilan asli. Silakan lihat demo untuk detailnya.

1.4.3. Tidak dapat memuat atau menampilkan

Silakan periksa izin jaringan, status jaringan, apakah js yang diimpor oleh halaman benar, dan apakah plugin diaktifkan. Disarankan untuk menjalankan dan mengujinya di browser terlebih dahulu, lalu masukkan ke dalam aplikasi untuk pengujian setelah berhasil.

1.4.4. Tidak ada respons saat mengklik tautan

Silakan periksa apakah Aplikasi mencegat atau memproses tautan yang dibuka dengan cara lain.

1.4.5. Setelah mengklik tautan, browser akan beralih ke browser eksternal dan kembali ke halaman kosong

Silakan periksa bagaimana Aplikasi menangani pengalihan tautan.