123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505 |
- package com.edufound.android.xyyf.interfaces;
- import android.app.AlertDialog;
- import android.content.DialogInterface;
- import android.content.Intent;
- import android.content.pm.ActivityInfo;
- import android.content.pm.PackageManager;
- import android.graphics.Color;
- import android.media.MediaPlayer;
- import android.util.Base64;
- import android.view.KeyEvent;
- import android.webkit.JavascriptInterface;
- import com.alibaba.fastjson.JSON;
- import com.edufound.android.xyyf.R;
- import com.edufound.android.xyyf.activity.PhoneNumLoginActivity;
- import com.edufound.android.xyyf.activity.PhoneNumLoginActivityLandscape;
- import com.edufound.android.xyyf.application.EApplication;
- import com.edufound.android.xyyf.bean.MessageDialogBean;
- import com.edufound.android.xyyf.bean.UpgradeBean;
- import com.edufound.android.xyyf.config.AppUtils;
- import com.edufound.android.xyyf.config.AuthPageConfig;
- import com.edufound.android.xyyf.config.BaseUIConfig;
- import com.edufound.android.xyyf.main.MainView;
- import com.edufound.android.xyyf.pay.PayInit;
- import com.edufound.android.xyyf.util.ContextUtil;
- import com.edufound.android.xyyf.util.Logger;
- import com.edufound.android.xyyf.util.OKHttpUtil;
- import com.edufound.android.xyyf.util.SPutil;
- import com.edufound.android.xyyf.util.ShowDebugUrl;
- import com.edufound.android.xyyf.util.ShowDevice;
- import com.edufound.android.xyyf.util.ShowSetting;
- import com.edufound.android.xyyf.util.ToastUtil;
- import com.edufound.android.xyyf.util.UpdateUtil;
- import com.google.gson.Gson;
- import com.mobile.auth.gatewayauth.PhoneNumberAuthHelper;
- import com.mobile.auth.gatewayauth.ResultCode;
- import com.mobile.auth.gatewayauth.TokenResultListener;
- import com.mobile.auth.gatewayauth.model.TokenRet;
- import com.tencent.mm.opensdk.modelbiz.WXLaunchMiniProgram;
- import com.tencent.mm.opensdk.modelmsg.SendAuth;
- import java.io.IOException;
- import java.lang.reflect.Method;
- import java.util.HashMap;
- import java.util.Map;
- import okhttp3.Request;
- public class JsInterfaces {
- Gson mGson;
- MainView mView;
- MediaPlayer mediaPlayer;
- AlertDialog.Builder mMessageDialogBuilder;
- MessageDialogBean mMessageBean;
- PhoneNumberAuthHelper mPhoneNumberAuthHelperl;
- String mSecret = "UgC3rEZPVMBKi8WqdoubeWMSJNSeeA6i0dLu3Z1GZKfIgXFhF8RmMLdsmDSgmwWjg2TUOhkvbuHZH6pt4RUxiQSpVyu9P1Q7h9Th05DhNVqxuOU2GRLLs0C43B59eS6nXrUEy7PZzn3wPTXEpelTmH5rMl+VZ7UKa3tC35qkB073Dfikr6ITRfCF31mTPjOGQRo9RKrtbeIhj4jIqx7M9PJSp9+W8huzLCUEOVquVNKDtpCBUq2Znu+PgISvLg3JouLtVv9ldoftxKci+VfHaO3izxkHOi+3jauqBTigrfA7D4I4va/7PlgCNoXJogcy";
- public static boolean startWX = false;
- public JsInterfaces(MainView view) {
- mGson = new Gson();
- mView = view;
- if (mediaPlayer == null) {
- mediaPlayer = new MediaPlayer();
- mediaPlayer.reset();
- mediaPlayer = MediaPlayer.create(mView.getActivity(), R.raw.click_music);
- }
- mPhoneNumberAuthHelperl = PhoneNumberAuthHelper.getInstance(mView.getActivity(), tokenResultListener);
- mPhoneNumberAuthHelperl.setAuthSDKInfo(mSecret);
- }
- Map<String, String> jsMap = new HashMap<>();
- /*
- * 关闭应用方法
- * */
- @JavascriptInterface
- public void closeApp() {
- EApplication.clearActivity();
- }
- /*
- * 根据key设置SP参数方法
- * */
- @JavascriptInterface
- public void setPreData(String key, String json_data) {
- SPutil.setPrefString(ContextUtil.getContext(), key, json_data);
- }
- /*
- * 根据key获取SP参数方法
- * */
- @JavascriptInterface
- public String getPreData(String key) {
- return SPutil.getPrefString(ContextUtil.getContext(), key, "");
- }
- /*
- * 根据key删除SP参数
- * */
- @JavascriptInterface
- public void delPreData(String key) {
- SPutil.clearRecourds(ContextUtil.getContext(), key);
- }
- /*
- * 设置map参数方法
- * */
- @JavascriptInterface
- public void setStorageByKey(String key, String data) {
- jsMap.put(key, data);
- }
- /*
- * 获取map里参数
- *
- * */
- @JavascriptInterface
- public String getStorageByKey(String key) {
- return jsMap.get(key).toString();
- }
- /*
- * 清空map
- * */
- @JavascriptInterface
- public void clearStorage() {
- jsMap.clear();
- }
- //JS调用方法,设置播放器
- @JavascriptInterface
- public void setPlayType(int type) {
- // ToastUtil.showToast("setPlayType:" + type);
- int toType = 0;
- switch (type) {
- case 2:
- // ToastUtil.showToast("已选择默认播放器");
- toType = SPutil.VIDEO_VIDEOVIEW;
- break;
- case 1:
- toType = SPutil.VIDEO_IJKPLAYER;
- // ToastUtil.showToast("已选择IJKPlayer播放器");
- break;
- }
- SPutil.setPrefInt(ContextUtil.getContext(), SPutil.videoType, toType);
- }
- //JS调用方法,获取system系统参数
- @JavascriptInterface
- public String getProperty(String key, String defaultValue) {
- String value = defaultValue;
- try {
- Class<?> c = Class.forName("android.os.SystemProperties");
- Method get = c.getMethod("get", String.class, String.class);
- value = (String) (get.invoke(c, key, "unknown"));
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- return value;
- }
- }
- /*
- * 自升级方法
- * */
- @JavascriptInterface
- public void upgradeApp(String infoJson) {
- // 测试json {'title': '升级','type': '1','context': '修正登录异常','download_url':
- // 'http://www.baidu.com'}
- Logger.DebugE("升级提示框:" + infoJson);
- final UpgradeBean entity = mGson.fromJson(infoJson, UpgradeBean.class);
- AlertDialog.Builder builder = new AlertDialog.Builder(mView.getActivity());
- builder.setTitle(entity.title);
- builder.setMessage(entity.context);
- // 判断type,如果是,1、可选升级;2、强制升级
- if (Integer.valueOf(entity.type) == 1) {
- builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- // TODO Auto-generated method stub
- dialog.dismiss();
- }
- });
- }
- builder.setPositiveButton("升级", new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- // TODO Auto-generated method stub
- // 这里做升级操作
- new Thread(new Runnable() {
- @Override
- public void run() {
- UpdateUtil uputil = new UpdateUtil(mView.getActivity());
- try {
- uputil.down_file(entity.download_url);
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- }).start();
- }
- });
- AlertDialog dialog = builder.create();
- dialog.setOnKeyListener(new DialogInterface.OnKeyListener() {
- @Override
- public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
- // TODO Auto-generated method stub
- if (event.getKeyCode() == KeyEvent.KEYCODE_BACK || event.getKeyCode() == KeyEvent.KEYCODE_ESCAPE) {
- return true;
- }
- return false;
- }
- });
- dialog.show();
- }
- //JS条用方法,调起微信登录
- @JavascriptInterface
- public void WeChatLogin() {
- if (!PayInit.getInstance().WX_API.isWXAppInstalled()) {
- ToastUtil.showToast("请安装微信");
- } else {
- startWX = true;
- final SendAuth.Req req = new SendAuth.Req();
- req.scope = "snsapi_userinfo";
- req.state = "wechat_sdk_demo_test";
- PayInit.getInstance().WX_API.sendReq(req);
- }
- }
- @JavascriptInterface
- public void clickMusic(String left, String right) {
- if (mediaPlayerType == 0) {
- } else {
- mediaPlayerType = 0;
- mediaPlayer = new MediaPlayer();
- mediaPlayer.reset();
- mediaPlayer = MediaPlayer.create(mView.getActivity(), R.raw.click_music);
- mediaPlayer.setVolume(Float.valueOf(left), Float.valueOf(right));
- }
- mediaPlayer.start();
- }
- int mediaPlayerType = -1;
- @JavascriptInterface
- public void startWrong(String left, String right) {
- if (mediaPlayerType == 1) {
- } else {
- mediaPlayerType = 1;
- mediaPlayer = new MediaPlayer();
- mediaPlayer.reset();
- mediaPlayer = MediaPlayer.create(mView.getActivity(), R.raw.wronganswer);
- mediaPlayer.setVolume(Float.valueOf(left), Float.valueOf(right));
- }
- mediaPlayer.start();
- }
- @JavascriptInterface
- public void startCorrect(String left, String right) {
- if (mediaPlayerType == 2) {
- } else {
- mediaPlayerType = 2;
- mediaPlayer = new MediaPlayer();
- mediaPlayer.reset();
- mediaPlayer = MediaPlayer.create(mView.getActivity(), R.raw.correctanswer);
- mediaPlayer.setVolume(Float.valueOf(left), Float.valueOf(right));
- }
- mediaPlayer.start();
- }
- public void desClickMusic() {
- mediaPlayer = null;
- }
- @JavascriptInterface
- public void toMiniProgram(final String programId, final String path) {
- PackageManager packageManager = mView.getActivity().getPackageManager();
- Intent intent = packageManager.getLaunchIntentForPackage("com.tencent.mm");
- if (intent == null) {
- mView.loadJSMehtodPost("noWeChat()");
- return;
- } else {
- mView.getActivity().startActivity(intent);
- }
- mView.acPostDelayed(new Runnable() {
- @Override
- public void run() {
- WXLaunchMiniProgram.Req req = new WXLaunchMiniProgram.Req();
- req.userName = programId; // 填小程序原始id
- req.path = path; //拉起小程序页面的可带参路径,不填默认拉起小程序首页
- req.miniprogramType = WXLaunchMiniProgram.Req.MINIPTOGRAM_TYPE_RELEASE;// 可选打开 开发版,体验版和正式版
- PayInit.getInstance().WX_API.sendReq(req);
- startWX = true;
- }
- }, 800);
- }
- @JavascriptInterface
- public boolean startOtherApp(String pckName) {
- PackageManager packageManager = mView.getActivity().getPackageManager();
- Intent intent = packageManager.getLaunchIntentForPackage(pckName);
- if (intent == null) {
- // mView.loadJSMehtodPost("noWeChat()");
- return false;
- } else {
- mView.getActivity().startActivity(intent);
- return true;
- }
- }
- @JavascriptInterface
- public void setBackGround(String color) {
- mView.getWebView().setBackgroundColor(Color.parseColor(color));
- }
- @JavascriptInterface
- public void showDeviceInfo() {
- ShowDevice.getInstance().show(mView.getActivity());
- }
- @JavascriptInterface
- public void showChoseVideo() {
- ShowSetting.getInstance().show(mView.getActivity());
- }
- @JavascriptInterface
- public void showDebugDialog() {
- ShowDebugUrl.getInstance().show(mView);
- }
- @JavascriptInterface
- public void showMessageDialog(String json) {
- Logger.e("showMessageDialog--json:" + json);
- if (mMessageDialogBuilder == null) {
- mMessageDialogBuilder = new AlertDialog.Builder(mView.getActivity());
- }
- mMessageBean = mGson.fromJson(json, MessageDialogBean.class);
- mMessageDialogBuilder.setIcon(R.drawable.icon);
- mMessageDialogBuilder.setTitle(mMessageBean.title);
- mMessageDialogBuilder.setMessage(mMessageBean.message);
- mMessageDialogBuilder.setPositiveButton(mMessageBean.buttontext, new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- dialog.dismiss();
- }
- });
- mMessageDialogBuilder.create().show();
- }
- @JavascriptInterface
- public void showToast(String message) {
- ToastUtil.showToast(message);
- }
- ///-----------------------小窗口播放方法
- @JavascriptInterface
- public void setWindowVideoParams(String params_json) {
- // mView.setVideoFragment(params_json);
- }
- @JavascriptInterface
- public void showDateView(final int show_type) {
- mView.getPersenter().showDateView(show_type);
- }
- public int getdp(int num) {
- return AppUtils.dp2px(mView.getActivity(), num);
- }
- @JavascriptInterface
- public void showPhoneNumberLogin(int type) {
- //0是横屏。2是竖屏
- // AuthPageConfig mUIConfig = BaseUIConfig.init(type, mView.getActivity(), mPhoneNumberAuthHelperl, mView);
- // mUIConfig.configAuthPage();
- // mPhoneNumberAuthHelperl.getLoginToken(mView.getActivity(), 3000);
- }
- @JavascriptInterface
- public void showPhoneNumberLogin() {
- AuthPageConfig mUIConfig = BaseUIConfig.init(2, mView.getActivity(), mPhoneNumberAuthHelperl, mView);
- mUIConfig.configAuthPage();
- mPhoneNumberAuthHelperl.getLoginToken(mView.getActivity(), 3000);
- }
- public void quitLoginPage() {
- mPhoneNumberAuthHelperl.quitLoginPage();
- }
- @JavascriptInterface
- public void showPhoneNumberLoginLandscape() {
- AuthPageConfig mUIConfig = BaseUIConfig.init(0, mView.getActivity(), mPhoneNumberAuthHelperl);
- mUIConfig.configAuthPage();
- mPhoneNumberAuthHelperl.getLoginToken(mView.getActivity(), 3000);
- }
- TokenResultListener tokenResultListener = new TokenResultListener() {
- @Override
- public void onTokenSuccess(String s) {
- TokenRet tokenRet = null;
- try {
- tokenRet = JSON.parseObject(s, TokenRet.class);
- if (ResultCode.CODE_START_AUTHPAGE_SUCCESS.equals(tokenRet.getCode())) {
- mPhoneNumberAuthHelperl.hideLoginLoading();
- }
- if (ResultCode.CODE_GET_TOKEN_SUCCESS.equals(tokenRet.getCode())) {
- mPhoneNumberAuthHelperl.hideLoginLoading();
- mPhoneNumberAuthHelperl.quitLoginPage();
- String token = JSON.parseObject(s).get("token").toString();
- OKHttpUtil.postDataAsync(ContextUtil.getGetUserPhonenumberUrl(), new OKHttpUtil.ResultCallback() {
- @Override
- public void onError(Request request, Exception e) {
- Logger.e("error-------------");
- }
- @Override
- public void onResponse(Object response) {
- String user_phone = JSON.parseObject(response.toString()).getString("data").toString();
- SPutil.setPrefString(mView.getActivity(), "user_phone", Base64.encodeToString(user_phone.getBytes(), Base64.DEFAULT));
- mView.loadJsMehtod("phoneLogin('" + user_phone + "')");
- }
- }, new OKHttpUtil.Param("accessToken", token));
- //
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- @Override
- public void onTokenFailed(String s) {
- // ToastUtil.showToast("失败了:" + s);
- String code = JSON.parseObject(s).get("code").toString();
- Logger.e("code:" + code);
- Intent intent = new Intent(mView.getActivity(), PhoneNumLoginActivityLandscape.class);
- if (code.equals("700000")) {
- mView.loadJsMehtod("closeLogin(" + code + ")");
- } else {
- intent.putExtra("code", code);
- mView.getActivity().startActivity(intent);
- // ToastUtil.showToast(JSON.parseObject(s).get("msg").toString());
- Logger.e("一键登录onTokenFailed:" + JSON.parseObject(s).get("msg").toString());
- mPhoneNumberAuthHelperl.quitLoginPage();
- }
- return;
- }
- };
- @JavascriptInterface
- public void setScreenOriention(int oriention) {
- switch (oriention) {
- case 0:
- mView.getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
- break;
- case 1:
- mView.getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
- break;
- }
- }
- @JavascriptInterface
- public void relWebView() {
- // Logger.e("relWebView--relWebView");
- // mView.getRootView().post(new Runnable() {
- // @Override
- // public void run() {
- // mView.getPersenter().openWeb(mView.getActivity().getIntent());
- // }
- // });
- // mView.getWebView().loadUrl("https://www.baidu.com");
- }
- @JavascriptInterface
- public void removeSPUserPhone() {
- delPreData("user_phone");
- }
- }
|