WebView di Android: Panduan Lengkap
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><uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<br>
</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<Array<Uri>>,
fileChooserParams: FileChooserParams
): Boolean {
println("onShowFileChooser")
mUploadMessageAboveL = filePathCallback
val intent = Intent(fileChooserParams.createIntent())
intent.addCategory(Intent.CATEGORY_OPENABLE)
intent.type = "*/*"
intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true) // Izinkan pemilihan ganda
register.launch(Intent.createChooser(intent, "Select File"))
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.
SaleSmarty Android SDK: Panduan Penyiapan
Pelajari cara mengintegrasikan SaleSmarty Android SDK dengan langkah penyiapan, unggah pesan pengguna, dan pelacakan jumlah pesan belum dibaca.
Panduan API Plugin Chat
Pelajari cara mengontrol jendela chat, mengatur info pengguna, dan memantau pesan dengan API plugin chat ssq untuk manajemen layanan pelanggan yang lebih baik.