main.js 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298
  1. "ui";
  2. ui.layout(
  3. `
  4. <vertical padding="0" id="parent">
  5. <webview id="web" h="*" w="*" />
  6. </vertical>
  7. `
  8. );
  9. let SCRIPT_CONF = require('./common/ScriptConf.js')
  10. let floatyObj = require('./floatywindow.js');
  11. initUi('http://192.168.2.24:8080')
  12. // ui.emitter.on("back_pressed", (e) => {
  13. // e.consumed = true;
  14. // activity.moveTaskToBack(true);
  15. // });
  16. var storage = storages.create("dtok");
  17. function initUi(htmlPath) {
  18. webViewExpand_init(ui.web)
  19. var settings = ui.web.getSettings();
  20. settings.setSupportZoom(false); // 是否支持页面缩放
  21. settings.setBuiltInZoomControls(false); // 是否出现缩放工具
  22. settings.setDisplayZoomControls(false);
  23. if (htmlPath.indexOf('http') === 0) {
  24. ui.web.loadUrl(htmlPath)
  25. } else {
  26. let path = 'file:' + files.path(htmlPath)
  27. ui.web.loadUrl(path)
  28. }
  29. }
  30. let conf = {
  31. //baseUrl: "https://ruanjian168.cc/"
  32. baseUrl: "http://192.168.2.24:9090/",
  33. apiUrl: "http://192.168.2.24:9090/api/",
  34. deviceType: 'DEVICE',
  35. androidId:device.getAndroidId(),
  36. deviceName:device.device,
  37. deviceBrand:device.brand,
  38. deviceVersion:device.release
  39. }
  40. ui.web.jsBridge.registerHandler("doLogin", (data, callBack) => {
  41. let loginUrl = conf.baseUrl + 'login'
  42. if (data == null) {
  43. toastLog("请填写用户名密码")
  44. callBack(null)
  45. return;
  46. }
  47. let loginObj = JSON.parse(data)
  48. if (!loginObj.hasOwnProperty('username')) {
  49. toastLog("请填写用户名")
  50. callBack(null)
  51. return;
  52. }
  53. if (!loginObj.hasOwnProperty('password')) {
  54. toastLog("请填写密码")
  55. callBack(null)
  56. return;
  57. }
  58. threads.start(function () {
  59. let res = http.post(loginUrl, {
  60. "username": loginObj.username,
  61. "password": loginObj.password,
  62. "loginDevice": conf.deviceType
  63. })
  64. var loginRespObj = res.body.json();
  65. if (loginRespObj.code !== 200) {
  66. toastLog(loginRespObj.message)
  67. callBack(null)
  68. } else {
  69. storage.put("token", loginRespObj.data.token)
  70. storage.put("userInfo", JSON.stringify(loginRespObj.data.user))
  71. callBack(loginRespObj.data.token)
  72. }
  73. });
  74. })
  75. ui.web.jsBridge.registerHandler("doCheckAccountStatus", (data,callBack) => {
  76. let checkLoginUrl = conf.apiUrl + 'checkLogin'
  77. let token = storage.get("token")
  78. console.log(token)
  79. threads.start(function () {
  80. let res = http.get(checkLoginUrl, {
  81. headers: {
  82. "satoken": token
  83. }
  84. })
  85. let respObj = res.body.json()
  86. if (respObj.code > 200){
  87. console.log("未登录,清除")
  88. toastLog("请先登录")
  89. storage.remove("token")
  90. storage.remove("userInfo")
  91. }
  92. callBack(JSON.stringify(respObj).toString())
  93. })
  94. })
  95. ui.web.jsBridge.registerHandler("checkRegister", (data,callBack) => {
  96. let token = storage.get("token")
  97. let checkRegisterUrl = conf.apiUrl + `checkRegister/${token}/${conf.androidId}`
  98. console.log(token)
  99. threads.start(function () {
  100. let res = http.get(checkRegisterUrl, {
  101. headers: {
  102. "satoken": token
  103. }
  104. })
  105. let respObj = res.body.json()
  106. callBack(JSON.stringify(respObj).toString())
  107. })
  108. })
  109. ui.web.jsBridge.registerHandler("logout", (data,callBack) => {
  110. storage.remove("token")
  111. storage.remove("userInfo")
  112. callBack('1')
  113. })
  114. ui.web.jsBridge.registerHandler("registerDevice", (data,callBack) => {
  115. let token = storage.get("token")
  116. let registerUrl = conf.baseUrl + `device/registerDevice/${token}`
  117. console.log(registerUrl)
  118. threads.start(function () {
  119. console.log(conf)
  120. let res = http.post(registerUrl,{
  121. "deviceName": conf.deviceName,
  122. "deviceVersion":conf.deviceVersion,
  123. "deviceBrand":conf.deviceBrand,
  124. "androidId":conf.androidId
  125. }, {
  126. headers: {
  127. "satoken": token
  128. },
  129. })
  130. let respObj = res.body.json()
  131. callBack(JSON.stringify(respObj).toString())
  132. })
  133. })
  134. ui.web.jsBridge.registerHandler("unBundleDevice", (data,callBack) => {
  135. console.log('解绑',data)
  136. let token = storage.get("token")
  137. let unRegisterUrl = conf.baseUrl + `device/unBundleDevice/` + data
  138. console.log(unRegisterUrl)
  139. threads.start(function () {
  140. console.log(conf)
  141. let res = http.get(unRegisterUrl, {
  142. headers: {
  143. "satoken": token
  144. },
  145. })
  146. let respObj = res.body.json()
  147. callBack(JSON.stringify(respObj).toString())
  148. })
  149. })
  150. ui.web.jsBridge.registerHandler("getCommonItem", (data,callBack) => {
  151. let token = storage.get("token")
  152. let commonItemUrl = conf.apiUrl + "getCommonItem"
  153. threads.start(function () {
  154. let res = http.get(commonItemUrl, {
  155. headers: {
  156. "satoken": token
  157. },
  158. })
  159. let respObj = res.body.json()
  160. callBack(JSON.stringify(respObj).toString())
  161. })
  162. })
  163. ui.web.jsBridge.registerHandler("reload", (data, callBack) => {
  164. console.log("刷新...")
  165. ui.web.reload()
  166. })
  167. ui.web.jsBridge.registerHandler("startScript", (data, callBack) => {
  168. let dataObj = JSON.parse(data)
  169. let scriptUrl = conf.apiUrl + 'getExecScript/' + dataObj.uuid
  170. let token = storage.get("token")
  171. console.log("URL", scriptUrl)
  172. threads.start(function () {
  173. let res = http.post(scriptUrl, {
  174. "module": dataObj.module
  175. }, {
  176. headers: {
  177. "satoken": token
  178. },
  179. });
  180. let scriptObj = res.body.json()
  181. if (scriptObj.code !== 200) {
  182. toastLog(scriptObj.message)
  183. callBack(JSON.stringify(scriptObj).toString())
  184. return
  185. }
  186. SCRIPT_CONF.script = scriptObj.data.scriptContent
  187. SCRIPT_CONF.conf = dataObj.conf
  188. SCRIPT_CONF.module = dataObj.module
  189. var packageName = scriptObj.data.app; // 视频App的包名
  190. floatyObj.showWindow()
  191. // 打开视频App
  192. launch(packageName);
  193. });
  194. })
  195. ui.web.jsBridge.registerHandler("getToken", (data, callBack) => {
  196. let token = storage.get("token")
  197. console.log("获取TOKEN", token)
  198. callBack(token)
  199. })
  200. ui.web.jsBridge.registerHandler("getUserInfo", (data, callBack) => {
  201. let userInfo = storage.get("userInfo")
  202. console.log("获取用户信息", userInfo)
  203. callBack(userInfo)
  204. })
  205. ui.web.jsBridge.registerHandler("logout", (data, callBack) => {
  206. storage.remove("token")
  207. callBack(200)
  208. })
  209. ui.web.jsBridge.registerHandler("showToast", (data, callBack) => {
  210. console.log(data)
  211. toastLog(data)
  212. })
  213. // setTimeout(() => {
  214. // ui.web.jsBridge.callHandler('jsTest', '数据', (data) => {})
  215. // }, 1000)
  216. function webViewExpand_init(webview) {
  217. webview.setOnKeyListener(
  218. new android.view.View.OnKeyListener({
  219. onKey: function (v, keyCode, event) {
  220. if (event.getAction() == KeyEvent.ACTION_DOWN) {
  221. if (keyCode == KeyEvent.KEYCODE_BACK && webview.canGoBack()) {
  222. //表示按返回键
  223. log("返回键");
  224. ui.web.goBack(); //后退
  225. //webview.goForward();//前进
  226. return true; //已处理
  227. }
  228. }
  229. return false;
  230. },
  231. })
  232. );
  233. webview.webViewClient = new JavaAdapter(android.webkit.WebViewClient, {
  234. /** 页面开始加载, 此时还没有加载 index.html 中的代码 */
  235. onPageStarted: (webView, url, favicon) => {},
  236. /** 页面加载完成, 在 window.onload 之后触发 */
  237. onPageFinished: (webView, curUrl) => {
  238. webview.injectionJsBridge()
  239. },
  240. onReceivedError: (webView, webResourceRequest, webResourceError) => {
  241. let url = webResourceRequest.getUrl()
  242. let errorCode = webResourceError.getErrorCode()
  243. let description = webResourceError.getDescription()
  244. console.trace(errorCode + ' ' + description + ' ' + url)
  245. },
  246. })
  247. webview.webChromeClient = new JavaAdapter(android.webkit.WebChromeClient, {
  248. /** 拦截 web console 消息 */
  249. onConsoleMessage: (consoleMessage) => {
  250. /** @type {string} */
  251. let msg = consoleMessage.message()
  252. let sourceId = consoleMessage.sourceId().split('/')
  253. let sourceIdStr = sourceId[sourceId.length - 1]
  254. let lineNumber = consoleMessage.lineNumber()
  255. let msgLevel = consoleMessage.messageLevel()
  256. console.log(msg)
  257. },
  258. })
  259. }