Skenario
Jika perilaku pemilihan file default dari tag <input type="file"/> dalam paket offline HTML5 tidak memenuhi kebutuhan Anda, Anda dapat mengimplementasikan fitur pemilihan gambar kustom. Untuk menyesuaikan gaya pemilihan gambar, mengizinkan pemilihan beberapa gambar, atau menangani izin secara dinamis, gunakan MPH5OpenFileChooserProvider.
Implementasi
Daftarkan
MPH5OpenFileChooserProviderdalam callback setelah inisialisasi mPaaS selesai.H5Utils.setProvider(MPH5OpenFileChooserProvider.class.getName(), new MPH5OpenFileChooserProvider() { @Override public boolean needIntercept(Activity activity, ValueCallback valueCallback, boolean b, APFileChooserParams apFileChooserParams) { // Jika fitur pemilihan gambar kustom tidak diperlukan, kembalikan false untuk menghindari mengintersepsi kontainer HTML5. Secara default, kontainer tidak diintersepsi. // Untuk menggunakan fitur pemilihan gambar kustom, intersepsi kontainer HTML5 dan kembalikan true. return true; } @Override public void openFileChooser(Activity activity, ValueCallback valueCallback, boolean b, APFileChooserParams apFileChooserParams) { // Dapatkan URI yang valid dan kirimkan ke antarmuka depan. // Metode ini harus dipanggil. Jika tidak, callback klik berikutnya tidak akan dieksekusi. // 1. Gunakan intent untuk membuka Activity yang memanggil album sistem atau kamera. // 2. Ambil gambar yang dipilih. // 3. Tutup halaman dan kirimkan gambar ke antarmuka depan melalui valueCallback. valueCallback.onReceiveValue(xx); } });PentingFungsi
valueCallback.onReceiveValue(xx)harus dipanggil. Jika tidak, callback klik berikutnya tidak akan dieksekusi.Pilih dan proses gambar dalam fungsi callback
openFileChooser.Gunakan
intentuntuk membukaActivitydan mengakses album foto sistem atau kamera.Ambil gambar yang dipilih.
Tutup
Activitydan kirimkan gambar ke antarmuka depan menggunakanvalueCallback.
Solusi referensi
Solusi 1
Daftarkan pendengar broadcast dalam metode callback
openFileChooser.Dalam metode
openFileChooser, gunakanIntentuntuk menavigasi keActivitykustom.Panggil SDK kamera atau pemilihan gambar sistem. Anda dapat menambahkan ekstensi, seperti fitur pemotongan gambar.
Gunakan
Activitypemilihan gambar untuk mengambil gambar yang dipilih secara final. Kirim broadcast ke pendengar broadcast untuk callbackopenFileChooser, lalu tutupActivity.Kirim nilai ke antarmuka depan menggunakan metode
valueCallback.onReceiveValue(xx)dari komponenWebView.
Solusi 2
Dalam metode
openFileChooser, gunakanIntentuntuk menavigasi keActivitydan kirimkanvalueCallbackkeActivitytersebut.Panggil SDK kamera atau pemilihan gambar sistem. Anda dapat menambahkan ekstensi, seperti fitur pemotongan gambar.
Kirim data ke antarmuka depan melalui metode
valueCallback.onReceiveValue(xx)dariWebView.Tutup
Activity.