我想将我的Android应用程序连接到WAMP
服务器。我正在使用javascript
来执行此操作。我有一个活动,我加载HTML file
。在内部,HTML file
将加载javascript
。
我希望即使手机被锁定,服务器也会继续运行。
现在,当手机被锁定时,服务器连接会断开。
关注我的活动代码:
mWebView = (WebView) findViewById(R.id.webview);
WebSettings webSettings = mWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
mWebView.addJavascriptInterface(new JavascriptInterface(this), "JSInterface");
mWebView.setWebContentsDebuggingEnabled(true);
mWebView.setWebViewClient(
new WebViewClient() {
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
Log.d(TAG,"Page loading finished");
String ip = "XXX.XXX.XXX.XXX";
mWebView.loadUrl("javascript:configureServerIp('"+ ip + "')");
}
}
);
关注我的JS文件:
function configureServerIp(ip) {
console.log("ip=>"+ip)
if(ip != null) {
connection = new autobahn.Connection({url: 'ws://'+ip+':8080/ws', realm: 'realm1'});
connection.onopen = function (session) {
openSession = session;
console.log("SESSION: " + session);
session.subscribe('bms.device.msg',onevent)
session.subscribe('bms.device.request.location',onLocationRequest)
session.subscribe('bms.device.request.config',onConfigRequest)
window.JSInterface.isConnected(true);
};
connection.onClose = function(reason, details) {
openSession = null;
window.JSInterface.isConnected(false);
}
connection.open();
}
}
有什么办法,我们可以从服务中调用javascript
函数吗?如果可能,即使应用程序不在前台,也允许服务器运行。
感谢。
答案 0 :(得分:1)
我在服务中创建了WebView object
,我成功调用了js function
。
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
webView = new WebView(this);
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
webView.setWebContentsDebuggingEnabled(true);
webView.setWebViewClient(
new WebViewClient() {
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
for(int i=0; i<10; i++) {
webView.loadUrl("javascript:sample()");
}
}
}
);
webView.loadUrl("file:///android_asset/html/index.html");
return START_NOT_STICKY;
}