2016-08-19 14 views
2

WAMPサーバーに自分のアンドロイドアプリを接続したいと思います。私はjavascriptを使っています。私はHTML fileをロードするアクティビティを持っています。内部的にはHTML fileにはjavascriptがロードされます。サービスから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関数を呼び出すことができます任意の方法はありますか?可能であれば、アプリケーションがフォアグラウンドになっていなくてもサーバーを実行させることができます。

ありがとうございました。

答えて

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

関連する問題