2016-08-19 42 views
2

我想將我的android應用連接到WAMP服務器。我正在使用javascript來做到這一點。我有一個活動,我加載一個HTML file。在內部,HTML file將加載javascript從服務中調用Javascript android

我希望即使手機被鎖定,服務器也能繼續運行。

現在,手機鎖定時服務器連接會斷開。

跟隨我的活動代碼:

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功能?如果可能的話,即使應用程序不在前臺,也可以讓服務器運行。

感謝。

回答

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; 
} 
+0

如果它存在,我想使用UI擁有的同一個WebView對象(它有我需要的狀態)......這可能嗎? – Michael