从服务 android 调用 Javascript
Calling Javascript from service android
我想将我的 android 应用程序连接到 WAMP 服务器。我正在使用 javascript 来做到这一点。我有一个 activity,我在其中加载了一个 HTML 文件。在内部,HTML 文件将加载 javascript.
即使 phone 被锁定,我希望服务器继续 运行。
现在,当 phone 被锁定时,服务器连接断开。
遵循我的代码 activity:
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 函数吗?如果可能,即使应用程序不在前台,也将允许使服务器 运行ning。
我在 服务 中创建了 WebView
对象,并且成功调用了我的 js 函数。
@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;
}
我想将我的 android 应用程序连接到 WAMP 服务器。我正在使用 javascript 来做到这一点。我有一个 activity,我在其中加载了一个 HTML 文件。在内部,HTML 文件将加载 javascript.
即使 phone 被锁定,我希望服务器继续 运行。
现在,当 phone 被锁定时,服务器连接断开。
遵循我的代码 activity:
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 函数吗?如果可能,即使应用程序不在前台,也将允许使服务器 运行ning。
我在 服务 中创建了 WebView
对象,并且成功调用了我的 js 函数。
@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;
}