|
|
@@ -1,294 +0,0 @@
|
|
|
-package com.sheep.gamegroup.util.js;
|
|
|
-
|
|
|
-import android.text.TextUtils;
|
|
|
-import android.view.View;
|
|
|
-import android.webkit.WebView;
|
|
|
-
|
|
|
-import com.kfzs.duanduan.utils.ApkUtils;
|
|
|
-import com.liulishuo.okdownload.DownloadTask;
|
|
|
-import com.liulishuo.okdownload.OkDownload;
|
|
|
-import com.liulishuo.okdownload.StatusUtil;
|
|
|
-import com.sheep.gamegroup.absBase.BaseUMActivity;
|
|
|
-import com.sheep.gamegroup.event.BigEvent;
|
|
|
-import com.sheep.gamegroup.event.EventTypes;
|
|
|
-import com.sheep.gamegroup.greendao.download.DownLoadInfo;
|
|
|
-import com.sheep.gamegroup.helper.DownloadHelper;
|
|
|
-import com.sheep.gamegroup.model.api.IWeb;
|
|
|
-import com.sheep.gamegroup.model.entity.TaskEty;
|
|
|
-import com.sheep.gamegroup.model.entity.UserEntity;
|
|
|
-import com.sheep.gamegroup.util.CommonUtil;
|
|
|
-import com.sheep.gamegroup.util.DownloadUtil;
|
|
|
-import com.sheep.gamegroup.util.SysAppUtil;
|
|
|
-import com.sheep.gamegroup.util.TestUtil;
|
|
|
-import com.sheep.gamegroup.util.UMConfigUtils;
|
|
|
-import com.sheep.gamegroup.util.share.ShareLinkConfig;
|
|
|
-import com.sheep.gamegroup.view.activity.TaskDetailAct;
|
|
|
-import com.sheep.jiuyan.samllsheep.BuildConfig;
|
|
|
-import com.sheep.jiuyan.samllsheep.R;
|
|
|
-import com.sheep.jiuyan.samllsheep.SheepApp;
|
|
|
-import com.sheep.jiuyan.samllsheep.utils.G;
|
|
|
-import com.sheep.jiuyan.samllsheep.utils.PackageUtil;
|
|
|
-import com.sheep.jiuyan.samllsheep.utils.SpUtils;
|
|
|
-import com.sheep.jiuyan.samllsheep.utils.TitleBarUtils;
|
|
|
-import com.tencent.mm.opensdk.constants.ConstantsAPI;
|
|
|
-import com.tencent.mm.opensdk.modelpay.PayResp;
|
|
|
-import com.umeng.socialize.bean.SHARE_MEDIA;
|
|
|
-
|
|
|
-import org.greenrobot.eventbus.EventBus;
|
|
|
-import org.greenrobot.eventbus.Subscribe;
|
|
|
-
|
|
|
-import java.util.Locale;
|
|
|
-import java.util.Map;
|
|
|
-
|
|
|
-import ren.yale.android.cachewebviewlib.WebViewCacheInterceptorInst;
|
|
|
-import rx.functions.Action1;
|
|
|
-
|
|
|
-/**
|
|
|
- * Created by realicing on 2018/11/23.
|
|
|
- * realicing@sina.com
|
|
|
- */
|
|
|
-public abstract class BaseActWeb extends BaseUMActivity implements IWeb {
|
|
|
-
|
|
|
- public void superFinish(){
|
|
|
- super.finish();
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- public static String addUrlToken(String url) {
|
|
|
- return addUrlQuery(url, "authorization", SpUtils.getToken(SheepApp.getInstance()));
|
|
|
- }
|
|
|
-
|
|
|
- public static String addUrlQuery(String url, String key, String value) {
|
|
|
- if(url.contains("?"+key+"=") || url.contains("#"+key+"=") || url.contains("&"+key+"=")){
|
|
|
- return url;
|
|
|
- }
|
|
|
- return url + ((url.contains("?") || url.contains("#") && url.contains("=")) ? "&" : "?") + key + "=" + value;
|
|
|
- }
|
|
|
- public void setH5Type(String h5Type) {
|
|
|
- switch (h5Type){
|
|
|
- case "is_unicom":
|
|
|
- TitleBarUtils
|
|
|
- .getInstance()
|
|
|
- .setRightImgBotton(this, R.mipmap.share, new View.OnClickListener() {
|
|
|
- @Override
|
|
|
- public void onClick(View view) {
|
|
|
- CommonUtil.getInstance().callActionWithUserInfo(new Action1<UserEntity>() {
|
|
|
- @Override
|
|
|
- public void call(UserEntity userEntity) {
|
|
|
- if (userEntity == null) {
|
|
|
- G.showToast("分享功能调试中");
|
|
|
- return;
|
|
|
- }
|
|
|
-// 是否是联通卡分享 1:是 0:不是
|
|
|
-// 分享链接需要加个 is_unicom 参数
|
|
|
- String url = addUrlQuery(userEntity.getShareLink(), "is_unicom", "1");
|
|
|
- new ShareLinkConfig().setLink(url).setTitle("下载小绵羊,免费领取联通大/小天神卡").toShare(BaseActWeb.this);
|
|
|
- }
|
|
|
- });
|
|
|
- }
|
|
|
- });
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- @Override
|
|
|
- public void onStart(SHARE_MEDIA share_media) {
|
|
|
- //开始分享
|
|
|
- loadJs(String.format(Locale.CHINA, "callback(\"onStart\", %s)", share_media.getName()));
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public void onResult(SHARE_MEDIA share_media) {
|
|
|
- //分享成功 微信分享时,取消也会成功
|
|
|
- loadJs(String.format(Locale.CHINA, "callback(\"onResult\", %s)", share_media.getName()));
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public void onError(SHARE_MEDIA share_media, Throwable throwable) {
|
|
|
- //分享出错
|
|
|
- String msg = throwable.getMessage();
|
|
|
- G.showToast(msg != null && msg.contains("没有安装应用") ? "没有安装应用" : msg);
|
|
|
- loadJs(String.format(Locale.CHINA, "callback(\"onError\", %s)", share_media.getName()));
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public void onCancel(SHARE_MEDIA share_media) {
|
|
|
- //取消分享 微信分享时,没有取消
|
|
|
- loadJs(String.format(Locale.CHINA, "callback(\"onCancel\", %s)", share_media.getName()));
|
|
|
- }
|
|
|
-
|
|
|
- protected boolean addSheepUserAgent = true;
|
|
|
-// protected void webViewLoadUrl(com.tencent.smtt.sdk.WebView webView, String url){
|
|
|
-// if(addSheepUserAgent){
|
|
|
-// Map<String, String> extraHeaders = new HashMap<>();
|
|
|
-// extraHeaders.put("User-Agent", getSheepUserAgent());
|
|
|
-// webViewLoadUrl(webView, extraHeaders, url);
|
|
|
-// } else {
|
|
|
-// webView.loadUrl(url);
|
|
|
-// if(TestUtil.isDev()){
|
|
|
-// return;
|
|
|
-// }
|
|
|
-// WebViewCacheInterceptorInst.getInstance().loadUrl(url, webView.getSettings().getUserAgentString());
|
|
|
-// }
|
|
|
-// }
|
|
|
-
|
|
|
- public static String getSheepUserAgent(){
|
|
|
- return BuildConfig.APPLICATION_ID + "/" + SysAppUtil.getUserAgent();
|
|
|
- }
|
|
|
-
|
|
|
- protected void webViewLoadUrl(WebView webView, Map<String, String> map, String url){
|
|
|
- webView.loadUrl(url, map);
|
|
|
- if(TestUtil.isDev()){
|
|
|
- return;
|
|
|
- }
|
|
|
- WebViewCacheInterceptorInst.getInstance().loadUrl(url, map, webView.getSettings().getUserAgentString());
|
|
|
- }
|
|
|
- protected void webViewLoadUrl(WebView webView, String url){
|
|
|
- if(TestUtil.isDev()){
|
|
|
- webView.loadUrl(url);
|
|
|
- return;
|
|
|
- }
|
|
|
- WebViewCacheInterceptorInst.getInstance().loadUrl(webView,url);
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- protected boolean needRegisterEventBus() {
|
|
|
- return true;
|
|
|
- }
|
|
|
-
|
|
|
- @Subscribe
|
|
|
- public void onEventMainThread(PayResp resp) {
|
|
|
- String result = "";
|
|
|
- if (resp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX) {
|
|
|
- result = String.valueOf(resp.errCode + 9000);//微信支付 0 为支付成功;支付宝为 "9000" 代表支付成功
|
|
|
- }
|
|
|
- loadJs(String.format(Locale.CHINA, "onAlipayResult('%s')", result));
|
|
|
- }
|
|
|
-
|
|
|
- protected TaskEty taskEty;
|
|
|
-
|
|
|
- public void setTaskEty(TaskEty taskEty) {
|
|
|
- this.taskEty = taskEty;
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 主要的事件广播接收更新处理
|
|
|
- *
|
|
|
- * @param event
|
|
|
- */
|
|
|
- @Subscribe
|
|
|
- public void onEventMainThread(BigEvent event) {
|
|
|
- if (taskEty != null && event.getData() instanceof DownLoadInfo) {
|
|
|
- DownLoadInfo task = (DownLoadInfo) event.getData();
|
|
|
- if (TextUtils.equals(task.getMDownloadUrl(), taskEty.getDownload_link())) {
|
|
|
- switch (event.getEventTypes()) {
|
|
|
- case DOWNLOAD_RUNNING:
|
|
|
- loadJs(String.format(Locale.CHINA, "onUpdateDownloadStatus(%d)", DownloadUtil.STATUS_ING));
|
|
|
- try {
|
|
|
- String btnText = String.format(Locale.CHINA, "%d%%(%s)", Math.abs(task.getMPercent()), task.getAverageSpeed());//添加下载速度
|
|
|
- String progressText = String.format(Locale.CHINA, "%d%%", Math.abs(task.getMPercent()));//添加下载速度简单版本
|
|
|
- loadJs(String.format(Locale.CHINA, "onUpdateDownloadBtnText('%s')", btnText));
|
|
|
- loadJs(String.format(Locale.CHINA, "onUpdateDownloadProgress('%s')", progressText));
|
|
|
- } catch (Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- break;
|
|
|
- case DOWNLOAD_STOP:
|
|
|
- loadJs(String.format(Locale.CHINA, "onUpdateDownloadStatus(%d)", DownloadUtil.STATUS_PAUSE));
|
|
|
- loadJs(String.format(Locale.CHINA, "onUpdateDownloadBtnText('%s')", CommonUtil.CONTINUE_DOWNLOAD));
|
|
|
- break;
|
|
|
- case DOWNLOAD_COMPLETE:
|
|
|
- //在这里处理任务完成的状态
|
|
|
- loadJs(String.format(Locale.CHINA, "onUpdateDownloadBtnText('%s')", CommonUtil.START_INSTALL));
|
|
|
- loadJs(String.format(Locale.CHINA, "onUpdateDownloadStatus(%d)", DownloadUtil.STATUS_FINISH));
|
|
|
- updateDownloadBtn();
|
|
|
- break;
|
|
|
- case DOWNLOAD_CANCEL:
|
|
|
- loadJs(String.format(Locale.CHINA, "onUpdateDownloadStatus(%d)", DownloadUtil.STATUS_DELETE));
|
|
|
- loadJs(String.format(Locale.CHINA, "onUpdateDownloadBtnText('%s')", "已经取消"));
|
|
|
- break;
|
|
|
- case DOWNLOAD_FAIL:
|
|
|
- loadJs(String.format(Locale.CHINA, "onUpdateDownloadStatus(%d)", DownloadUtil.STATUS_FAIL));
|
|
|
- loadJs(String.format(Locale.CHINA, "onUpdateDownloadBtnText('%s')", CommonUtil.FAIL_DOWNLOAD));
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- private DownloadUtil downloadUtil;
|
|
|
- public void updateDownloadBtn() {
|
|
|
- if (taskEty != null) {
|
|
|
- if (downloadUtil == null)
|
|
|
- downloadUtil = new DownloadUtil();
|
|
|
- DownloadHelper.setBtnStr(taskEty, downloadUtil, object -> runOnUiThread(() -> {
|
|
|
- if (object instanceof Integer) {
|
|
|
- type = (int) object;
|
|
|
- loadJs(String.format(Locale.CHINA, "onUpdateDownloadStatus(%d)", (int) object));
|
|
|
- } else if (object instanceof String) {
|
|
|
- loadJs(String.format(Locale.CHINA, "onUpdateDownloadBtnText('%s')", (String) object));
|
|
|
- } else if (object instanceof Boolean) {
|
|
|
- loadJs(String.format(Locale.CHINA, "onUpdateDownloadBtnEnable(%b)", (boolean) object));
|
|
|
- }
|
|
|
- }));
|
|
|
- }
|
|
|
- }
|
|
|
- private int type = DownloadUtil.STATUS_INIT;
|
|
|
- public void onClickDownloadBtn(){
|
|
|
- switch (type){
|
|
|
- case DownloadUtil.STATUS_INIT://开始下载
|
|
|
- default:
|
|
|
- downloadApk();
|
|
|
- break;
|
|
|
- case DownloadUtil.STATUS_FINISH:
|
|
|
- ApkUtils.installApk(SheepApp.getInstance(), PackageUtil.isExistsFile(taskEty.getPackage_names(), taskEty.getDownload_link()));
|
|
|
- break;
|
|
|
- case DownloadUtil.STATUS_INSTALLED:
|
|
|
- PackageUtil.startApp(SheepApp.getInstance(), taskEty.getPackage_names());
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- public void downloadApk(){
|
|
|
- if (taskEty != null) {
|
|
|
- if (downloadUtil == null)
|
|
|
- downloadUtil = new DownloadUtil();
|
|
|
-
|
|
|
- final DownloadTask task;
|
|
|
- if (TextUtils.isEmpty(taskEty.getDownload_link()) || !taskEty.getDownload_link().contains("http")) {
|
|
|
- G.showToast(R.string.error_download_link);
|
|
|
- return;
|
|
|
- }
|
|
|
- task = DownloadUtil.getTask(taskEty);
|
|
|
- final StatusUtil.Status statusOnStore = StatusUtil.getStatus(task);
|
|
|
- final DownLoadInfo downLoadInfo = downloadUtil.getDownloadTaskByUrl(taskEty);
|
|
|
- switch (statusOnStore) {
|
|
|
- case RUNNING:
|
|
|
- case PENDING://等待的
|
|
|
- OkDownload.with().downloadDispatcher().cancel(task);
|
|
|
- break;
|
|
|
- case IDLE://空闲的
|
|
|
- case UNKNOWN:
|
|
|
- downloadUtil.start(downLoadInfo);
|
|
|
- break;
|
|
|
- case COMPLETED://有可能之前已经下载完成,但是数据库里已经没有数据了,这时只需要修改状态
|
|
|
- if (task.getFile() != null) {
|
|
|
- if (downloadUtil.checkFinish(downLoadInfo)) {//检查文件是否真的完成
|
|
|
- downloadUtil.setDownloadTaskFinish(task.getUrl(), task.getFile().getAbsolutePath());
|
|
|
- } else {//重新开始下载
|
|
|
- downloadUtil.delete(downLoadInfo);
|
|
|
- downloadUtil.start(downloadUtil.getDownloadTaskByUrl(taskEty));
|
|
|
- downloadUtil.setDownloadTaskStatus(taskEty.getDownload_link(), DownloadUtil.STATUS_INIT);
|
|
|
- }
|
|
|
- }
|
|
|
- updateDownloadBtn();
|
|
|
- break;
|
|
|
- }
|
|
|
- new Thread(() -> {
|
|
|
- if (downloadUtil.addDownloadTask(downLoadInfo)) {
|
|
|
- //发送红点信息
|
|
|
- EventBus.getDefault().post(BigEvent.get().setEventTypes(EventTypes.TIPS_DOWN_ICON));
|
|
|
- }
|
|
|
- }).start();
|
|
|
- UMConfigUtils.onEvent(UMConfigUtils.Event.TASK_DOWNLOAD);
|
|
|
- }
|
|
|
- }
|
|
|
-}
|