1023 B
1023 B
Android JS Bridge Patterns
Inject Native Bridge
private fun injectJavaScriptFunction() {
val js = """
javascript: window.addEventListener('zoomCampaignSdk:ready', () => {
if (window.zoomCampaignSdk) {
window.zoomCampaignSdk.native = {
exitHandler: { handle: function() { AndroidExit.handleExit(); } },
commonHandler: { handle: function(e) { AndroidCommon.handleCommon(JSON.stringify(e)); } }
};
}
});
""".trimIndent()
webView.loadUrl(js)
}
Handoff Relay
private fun injectHandoffFunction() {
val js = """
javascript: window.addEventListener('support_handoff', (e) => {
AndroidHandoff.handleHandoff(JSON.stringify(e.detail));
});
""".trimIndent()
webView.loadUrl(js)
}
URL Governance
- Use
shouldOverrideUrlLoadingfor in-app vs system-browser policy. - Use multi-window callbacks for
target="_blank"handling.