Java Webview将值传递给SAPUI5控制器
我想通过呈现站点的android webview从我的一个sapui5控制器调用一个方法(并传递参数)。我一直在使用:Java Webview将值传递给SAPUI5控制器,java,android,webview,sapui5,Java,Android,Webview,Sapui5,我想通过呈现站点的android webview从我的一个sapui5控制器调用一个方法(并传递参数)。我一直在使用: webview.loadUrl("javascript:myJavaScriptFunc('" + argumentPassingIn + "')"); 之前,但这里的问题是,我的方法必须是HTML格式,如下所示: <body> <h1>Body</h1> <script> myJavaScriptFunc(v
webview.loadUrl("javascript:myJavaScriptFunc('" + argumentPassingIn + "')");
之前,但这里的问题是,我的方法必须是HTML格式,如下所示:
<body>
<h1>Body</h1>
<script>
myJavaScriptFunc(val){
//Do something with val
}
</script>
</body>
身体
myJavaScriptFunc(val){
//对瓦尔做点什么
}
在我的例子中,我想从SAPUI5 web应用程序的特定控制器调用它。我如何以控制器和特定方法为目标?有人面临这样的奇迹吗?控制器的任何方法都不在全局(即
窗口
)范围内。因此,我会使用
假设您的控制器定义了一个方法myTestFunction
。在控制器的onInit
中执行以下操作
var oEventBus = sap.ui.getCore().getEventBus();
oEventBus.subscribe("AndroidWebView", "AndroidWebEvent", this.myTestFunction, this);
然后,您可以在android webview中调用以下代码
webview.loadUrl("javascript:sap.ui.getCore().getEventBus().publish('AndroidWebView', 'AndroidWebEvent', { arg: '" + argumentPassingIn + "' })");
@标记我的应用程序地址“webview.loadUrl”(“javascript:sap.ui.getCore().getEventBus().publish('AndroidWebView','AndroidWebEvent',{arg:'“+argumentPassingIn+”})”);“它将尝试在哪个IP上加载?当前网页的IP?”?我假设webview.loadUrl的作用与打开chrome开发工具并在控制台中执行JS时相同。它应该在与应用程序相同的上下文中运行。