JsInterfaces.java 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467
  1. package com.edufound.android.xyyf.interfaces;
  2. import android.app.AlertDialog;
  3. import android.content.DialogInterface;
  4. import android.content.Intent;
  5. import android.graphics.Color;
  6. import android.media.MediaPlayer;
  7. import android.view.KeyEvent;
  8. import android.webkit.JavascriptInterface;
  9. import com.alibaba.fastjson.JSON;
  10. import com.edufound.android.xyyf.R;
  11. import com.edufound.android.xyyf.activity.IJKPlayerActivity;
  12. import com.edufound.android.xyyf.activity.VideoActivity;
  13. import com.edufound.android.xyyf.application.EApplication;
  14. import com.edufound.android.xyyf.bean.MessageDialogBean;
  15. import com.edufound.android.xyyf.bean.UpgradeBean;
  16. import com.edufound.android.xyyf.config.AppUtils;
  17. import com.edufound.android.xyyf.config.AuthPageConfig;
  18. import com.edufound.android.xyyf.config.BaseUIConfig;
  19. import com.edufound.android.xyyf.main.MainView;
  20. import com.edufound.android.xyyf.pay.PayInit;
  21. import com.edufound.android.xyyf.util.ContextUtil;
  22. import com.edufound.android.xyyf.util.Logger;
  23. import com.edufound.android.xyyf.util.OKHttpUtil;
  24. import com.edufound.android.xyyf.util.SPutil;
  25. import com.edufound.android.xyyf.util.ShowDebugUrl;
  26. import com.edufound.android.xyyf.util.ShowDevice;
  27. import com.edufound.android.xyyf.util.ShowSetting;
  28. import com.edufound.android.xyyf.util.ToastUtil;
  29. import com.edufound.android.xyyf.util.UpdateUtil;
  30. import com.google.gson.Gson;
  31. import com.mobile.auth.gatewayauth.PhoneNumberAuthHelper;
  32. import com.mobile.auth.gatewayauth.ResultCode;
  33. import com.mobile.auth.gatewayauth.TokenResultListener;
  34. import com.mobile.auth.gatewayauth.model.InitResult;
  35. import com.mobile.auth.gatewayauth.model.TokenRet;
  36. import com.tencent.mm.opensdk.modelbiz.WXLaunchMiniProgram;
  37. import com.tencent.mm.opensdk.modelmsg.SendAuth;
  38. import java.io.IOException;
  39. import java.lang.reflect.Method;
  40. import java.util.HashMap;
  41. import java.util.Map;
  42. import okhttp3.Request;
  43. public class JsInterfaces {
  44. Gson mGson;
  45. MainView mView;
  46. MediaPlayer mediaPlayer;
  47. AlertDialog.Builder mMessageDialogBuilder;
  48. MessageDialogBean mMessageBean;
  49. PhoneNumberAuthHelper mPhoneNumberAuthHelperl;
  50. String mSecret = "RCV62WOrD1Dcypp4qiwqlLWsPf9jGQ9SzBKaUms/VuDvggYsJBmeFvQqkc6ptBBmTbKfRsB2zhXUQP+6meKyA/7TQbde3uLfVnhihmKahXTpaKYhjwZRT4R4VCZtq8umnzZTQPENjUiz/Hdd45EKA/OhTtXodbfEo+j6o79xukkjApKaF3qlSqPylppOAavtiGOKEVhZSLhPyQQDOdqTre4EfWJ07T4reo2oObslQqlZamXqzHkp/K+5M+xIPsxk6c14Oypu/EEJMCjzIP8aHdqa01PWcycKFz9Fbn0Q9/tFJ7yWNfHkuJQH/w6JV41q";
  51. public final String GET_USER_PHONENUMBER_URL = "http://ott80test-api.efunbox.cn:81/member/getMobile";
  52. public JsInterfaces(MainView view) {
  53. mGson = new Gson();
  54. mView = view;
  55. if (mediaPlayer == null) {
  56. mediaPlayer = new MediaPlayer();
  57. mediaPlayer.reset();
  58. mediaPlayer = MediaPlayer.create(mView.getActivity(), R.raw.click_music);
  59. }
  60. mPhoneNumberAuthHelperl = PhoneNumberAuthHelper.getInstance(mView.getActivity(), tokenResultListener);
  61. mPhoneNumberAuthHelperl.setAuthSDKInfo(mSecret);
  62. }
  63. Map<String, String> jsMap = new HashMap<>();
  64. /*
  65. * 关闭应用方法
  66. * */
  67. @JavascriptInterface
  68. public void closeApp() {
  69. EApplication.clearActivity();
  70. }
  71. /*
  72. * 根据key设置SP参数方法
  73. * */
  74. @JavascriptInterface
  75. public void setPreData(String key, String json_data) {
  76. SPutil.setPrefString(ContextUtil.getContext(), key, json_data);
  77. }
  78. /*
  79. * 根据key获取SP参数方法
  80. * */
  81. @JavascriptInterface
  82. public String getPreData(String key) {
  83. return SPutil.getPrefString(ContextUtil.getContext(), key, "");
  84. }
  85. /*
  86. * 根据key删除SP参数
  87. * */
  88. @JavascriptInterface
  89. public void delPreData(String key) {
  90. SPutil.clearRecourds(ContextUtil.getContext(), key);
  91. }
  92. /*
  93. * 设置map参数方法
  94. * */
  95. @JavascriptInterface
  96. public void setStorageByKey(String key, String data) {
  97. jsMap.put(key, data);
  98. }
  99. /*
  100. * 获取map里参数
  101. *
  102. * */
  103. @JavascriptInterface
  104. public String getStorageByKey(String key) {
  105. return jsMap.get(key).toString();
  106. }
  107. /*
  108. * 清空map
  109. * */
  110. @JavascriptInterface
  111. public void clearStorage() {
  112. jsMap.clear();
  113. }
  114. /*
  115. * 播放视频方法
  116. * */
  117. @JavascriptInterface
  118. public void playVideo(String play_jsons, int play_index, int play_type, String moduleType) {
  119. //可能要改播放器的逻辑
  120. Logger.e("play_jsons:" + play_jsons);
  121. Logger.e("play_index:" + play_index);
  122. Logger.e("play_type:" + play_type);
  123. Logger.e("moduleType:" + moduleType);
  124. Intent intent = new Intent();
  125. int selectid = SPutil.getPrefInt(mView.getActivity(), SPutil.videoType, 0);
  126. switch (selectid) {
  127. case SPutil.VIDEO_VIDEOVIEW:
  128. intent.setClass(mView.getActivity(), VideoActivity.class);
  129. break;
  130. case SPutil.VIDEO_IJKPLAYER:
  131. intent.setClass(mView.getActivity(), IJKPlayerActivity.class);
  132. break;
  133. default:
  134. intent.setClass(mView.getActivity(), IJKPlayerActivity.class);
  135. break;
  136. }
  137. intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  138. intent.putExtra("play_jsons", play_jsons);
  139. intent.putExtra("play_index", play_index);
  140. intent.putExtra("play_type", play_type);
  141. intent.putExtra("play_moduletype", moduleType);
  142. mView.getActivity().startActivity(intent);
  143. }
  144. //JS调用方法,设置播放器
  145. @JavascriptInterface
  146. public void setPlayType(int type) {
  147. // ToastUtil.showToast("setPlayType:" + type);
  148. int toType = 0;
  149. switch (type) {
  150. case 2:
  151. // ToastUtil.showToast("已选择默认播放器");
  152. toType = SPutil.VIDEO_VIDEOVIEW;
  153. break;
  154. case 1:
  155. toType = SPutil.VIDEO_IJKPLAYER;
  156. // ToastUtil.showToast("已选择IJKPlayer播放器");
  157. break;
  158. }
  159. SPutil.setPrefInt(ContextUtil.getContext(), SPutil.videoType, toType);
  160. }
  161. //JS调用方法,获取system系统参数
  162. @JavascriptInterface
  163. public String getProperty(String key, String defaultValue) {
  164. String value = defaultValue;
  165. try {
  166. Class<?> c = Class.forName("android.os.SystemProperties");
  167. Method get = c.getMethod("get", String.class, String.class);
  168. value = (String) (get.invoke(c, key, "unknown"));
  169. } catch (Exception e) {
  170. e.printStackTrace();
  171. } finally {
  172. return value;
  173. }
  174. }
  175. /*
  176. * 自升级方法
  177. * */
  178. @JavascriptInterface
  179. public void upgradeApp(String infoJson) {
  180. // 测试json {'title': '升级','type': '1','context': '修正登录异常','download_url':
  181. // 'http://www.baidu.com'}
  182. Logger.DebugE("升级提示框:" + infoJson);
  183. final UpgradeBean entity = mGson.fromJson(infoJson, UpgradeBean.class);
  184. AlertDialog.Builder builder = new AlertDialog.Builder(mView.getActivity());
  185. builder.setTitle(entity.title);
  186. builder.setMessage(entity.context);
  187. // 判断type,如果是,1、可选升级;2、强制升级
  188. if (Integer.valueOf(entity.type) == 1) {
  189. builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
  190. @Override
  191. public void onClick(DialogInterface dialog, int which) {
  192. // TODO Auto-generated method stub
  193. dialog.dismiss();
  194. }
  195. });
  196. }
  197. builder.setPositiveButton("升级", new DialogInterface.OnClickListener() {
  198. @Override
  199. public void onClick(DialogInterface dialog, int which) {
  200. // TODO Auto-generated method stub
  201. // 这里做升级操作
  202. new Thread(new Runnable() {
  203. @Override
  204. public void run() {
  205. UpdateUtil uputil = new UpdateUtil(mView.getActivity());
  206. try {
  207. uputil.down_file(entity.download_url);
  208. } catch (IOException e) {
  209. // TODO Auto-generated catch block
  210. e.printStackTrace();
  211. }
  212. }
  213. }).start();
  214. }
  215. });
  216. AlertDialog dialog = builder.create();
  217. dialog.setOnKeyListener(new DialogInterface.OnKeyListener() {
  218. @Override
  219. public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
  220. // TODO Auto-generated method stub
  221. if (event.getKeyCode() == KeyEvent.KEYCODE_BACK || event.getKeyCode() == KeyEvent.KEYCODE_ESCAPE) {
  222. return true;
  223. }
  224. return false;
  225. }
  226. });
  227. dialog.show();
  228. }
  229. //JS条用方法,调起微信登录
  230. @JavascriptInterface
  231. public void WeChatLogin() {
  232. if (!PayInit.getInstance().WX_API.isWXAppInstalled()) {
  233. ToastUtil.showToast("请安装微信");
  234. } else {
  235. final SendAuth.Req req = new SendAuth.Req();
  236. req.scope = "snsapi_userinfo";
  237. req.state = "wechat_sdk_demo_test";
  238. PayInit.getInstance().WX_API.sendReq(req);
  239. }
  240. }
  241. @JavascriptInterface
  242. public void clickMusic(String left, String right) {
  243. if (mediaPlayerType == 0) {
  244. } else {
  245. mediaPlayerType = 0;
  246. mediaPlayer = new MediaPlayer();
  247. mediaPlayer.reset();
  248. mediaPlayer = MediaPlayer.create(mView.getActivity(), R.raw.click_music);
  249. mediaPlayer.setVolume(Float.valueOf(left), Float.valueOf(right));
  250. }
  251. mediaPlayer.start();
  252. }
  253. int mediaPlayerType = -1;
  254. @JavascriptInterface
  255. public void startWrong(String left, String right) {
  256. if (mediaPlayerType == 1) {
  257. } else {
  258. mediaPlayerType = 1;
  259. mediaPlayer = new MediaPlayer();
  260. mediaPlayer.reset();
  261. mediaPlayer = MediaPlayer.create(mView.getActivity(), R.raw.wronganswer);
  262. mediaPlayer.setVolume(Float.valueOf(left), Float.valueOf(right));
  263. }
  264. mediaPlayer.start();
  265. }
  266. @JavascriptInterface
  267. public void startCorrect(String left, String right) {
  268. if (mediaPlayerType == 2) {
  269. } else {
  270. mediaPlayerType = 2;
  271. mediaPlayer = new MediaPlayer();
  272. mediaPlayer.reset();
  273. mediaPlayer = MediaPlayer.create(mView.getActivity(), R.raw.correctanswer);
  274. mediaPlayer.setVolume(Float.valueOf(left), Float.valueOf(right));
  275. }
  276. mediaPlayer.start();
  277. }
  278. public void desClickMusic() {
  279. mediaPlayer = null;
  280. }
  281. @JavascriptInterface
  282. public void toMiniProgram(String programId, String path) {
  283. if (!PayInit.getInstance().WX_API.isWXAppInstalled()) {
  284. ToastUtil.showToast("请安装微信");
  285. return;
  286. }
  287. WXLaunchMiniProgram.Req req = new WXLaunchMiniProgram.Req();
  288. req.userName = programId; // 填小程序原始id
  289. req.path = path; //拉起小程序页面的可带参路径,不填默认拉起小程序首页
  290. req.miniprogramType = WXLaunchMiniProgram.Req.MINIPTOGRAM_TYPE_RELEASE;// 可选打开 开发版,体验版和正式版
  291. PayInit.getInstance().WX_API.sendReq(req);
  292. }
  293. @JavascriptInterface
  294. public void setBackGround(String color) {
  295. mView.getWebView().setBackgroundColor(Color.parseColor(color));
  296. }
  297. @JavascriptInterface
  298. public void showDeviceInfo() {
  299. ShowDevice.getInstance().show(mView.getActivity());
  300. }
  301. @JavascriptInterface
  302. public void showChoseVideo() {
  303. ShowSetting.getInstance().show(mView.getActivity());
  304. }
  305. @JavascriptInterface
  306. public void showDebugDialog() {
  307. ShowDebugUrl.getInstance().show(mView);
  308. }
  309. @JavascriptInterface
  310. public void showMessageDialog(String json) {
  311. Logger.e("showMessageDialog--json:" + json);
  312. if (mMessageDialogBuilder == null) {
  313. mMessageDialogBuilder = new AlertDialog.Builder(mView.getActivity());
  314. }
  315. mMessageBean = mGson.fromJson(json, MessageDialogBean.class);
  316. mMessageDialogBuilder.setIcon(R.drawable.icon);
  317. mMessageDialogBuilder.setTitle(mMessageBean.title);
  318. mMessageDialogBuilder.setMessage(mMessageBean.message);
  319. mMessageDialogBuilder.setPositiveButton(mMessageBean.buttontext, new DialogInterface.OnClickListener() {
  320. @Override
  321. public void onClick(DialogInterface dialog, int which) {
  322. dialog.dismiss();
  323. }
  324. });
  325. mMessageDialogBuilder.create().show();
  326. }
  327. @JavascriptInterface
  328. public void showToast(String message) {
  329. ToastUtil.showToast(message);
  330. }
  331. ///-----------------------小窗口播放方法
  332. @JavascriptInterface
  333. public void setWindowVideoParams(String params_json) {
  334. // mView.setVideoFragment(params_json);
  335. }
  336. @JavascriptInterface
  337. public void showDateView(final int show_type) {
  338. mView.getPersenter().showDateView(show_type);
  339. }
  340. public int getdp(int num) {
  341. return AppUtils.dp2px(mView.getActivity(), num);
  342. }
  343. @JavascriptInterface
  344. public void showPhoneNumberLogin(int type) {
  345. AuthPageConfig mUIConfig = BaseUIConfig.init(type, mView.getActivity(), mPhoneNumberAuthHelperl, mView);
  346. mUIConfig.configAuthPage();
  347. mPhoneNumberAuthHelperl.getLoginToken(mView.getActivity(), 5000);
  348. }
  349. @JavascriptInterface
  350. public void showPhoneNumberLogin() {
  351. AuthPageConfig mUIConfig = BaseUIConfig.init(2, mView.getActivity(), mPhoneNumberAuthHelperl, mView);
  352. mUIConfig.configAuthPage();
  353. mPhoneNumberAuthHelperl.getLoginToken(mView.getActivity(), 5000);
  354. }
  355. public void quitLoginPage() {
  356. mPhoneNumberAuthHelperl.quitLoginPage();
  357. }
  358. public void NOUILOGIN() {
  359. // AuthPageConfig mUIConfig = BaseUIConfig.init(1, mView.getActivity(), mPhoneNumberAuthHelperl,mView);
  360. // mUIConfig.configAuthPage();
  361. // mPhoneNumberAuthHelperl.getLoginToken(mView.getActivity(), 5000);
  362. }
  363. TokenResultListener tokenResultListener = new TokenResultListener() {
  364. @Override
  365. public void onTokenSuccess(String s) {
  366. Logger.e("sssss:" + s);
  367. TokenRet tokenRet = null;
  368. try {
  369. tokenRet = JSON.parseObject(s, TokenRet.class);
  370. if (ResultCode.CODE_START_AUTHPAGE_SUCCESS.equals(tokenRet.getCode())) {
  371. // Logger.e("唤起授权页成功:" + s);
  372. mPhoneNumberAuthHelperl.hideLoginLoading();
  373. // ToastUtil.showToast(s);
  374. }
  375. if (ResultCode.CODE_GET_TOKEN_SUCCESS.equals(tokenRet.getCode())) {
  376. // Logger.e("获取token成功:" + s);
  377. // ToastUtil.showToast(s);
  378. mPhoneNumberAuthHelperl.hideLoginLoading();
  379. mPhoneNumberAuthHelperl.quitLoginPage();
  380. String token = JSON.parseObject(s).get("token").toString();
  381. OKHttpUtil.postDataAsync(GET_USER_PHONENUMBER_URL, new OKHttpUtil.ResultCallback() {
  382. @Override
  383. public void onError(Request request, Exception e) {
  384. Logger.e("error-------------");
  385. }
  386. @Override
  387. public void onResponse(Object response) {
  388. String a = JSON.parseObject(response.toString()).getString("data").toString();
  389. // ToastUtil.showToast(a);
  390. mView.loadJsMehtod("phoneLogin('" + a + "')");
  391. }
  392. }, new OKHttpUtil.Param("accessToken", token));
  393. //
  394. }
  395. } catch (Exception e) {
  396. e.printStackTrace();
  397. }
  398. }
  399. @Override
  400. public void onTokenFailed(String s) {
  401. // Logger.e("失败了:" + s);
  402. // ToastUtil.showToast("失败了:" + s);
  403. mView.loadJsMehtod("closeLogin()");
  404. }
  405. };
  406. }