461 lines
		
	
	
		
			23 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			461 lines
		
	
	
		
			23 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
package com.novelbook.android.netutils;
 | 
						|
 | 
						|
import android.Manifest;
 | 
						|
import android.app.Activity;
 | 
						|
import android.content.Context;
 | 
						|
import android.net.ConnectivityManager;
 | 
						|
import android.net.NetworkInfo;
 | 
						|
import android.os.Build;
 | 
						|
import android.text.TextUtils;
 | 
						|
import android.util.Log;
 | 
						|
 | 
						|
import com.google.gson.Gson;
 | 
						|
import com.google.gson.JsonObject;
 | 
						|
import com.novelbook.android.AD.toutiao.TTAdManagerHolder;
 | 
						|
import com.novelbook.android.BookActivity;
 | 
						|
import com.novelbook.android.BuildConfig;
 | 
						|
import com.novelbook.android.Main2Activity;
 | 
						|
import com.novelbook.android.MyApp;
 | 
						|
import com.novelbook.android.bean.AdSetting;
 | 
						|
import com.novelbook.android.db.Novel;
 | 
						|
import com.novelbook.android.netsubscribe.BookSubscribe;
 | 
						|
import com.novelbook.android.upgrade.UpdateManager;
 | 
						|
import com.novelbook.android.utils.CommonUtil;
 | 
						|
import com.novelbook.android.utils.Config;
 | 
						|
import com.novelbook.android.utils.Constants;
 | 
						|
import com.novelbook.android.utils.GsonUtil;
 | 
						|
 | 
						|
import org.json.JSONException;
 | 
						|
import org.json.JSONObject;
 | 
						|
 | 
						|
import java.util.Date;
 | 
						|
import java.util.Random;
 | 
						|
 | 
						|
import okhttp3.Call;
 | 
						|
 | 
						|
import static com.novelbook.android.FileActivity.EXTERNAL_STORAGE_REQ_CODE;
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
 * Created by 眼神 on 2018/3/27.
 | 
						|
 * 网络请求工具类
 | 
						|
 */
 | 
						|
public class NetUtil {
 | 
						|
 | 
						|
    private static final String TAG= NetUtil.class.getSimpleName();
 | 
						|
    public static int currentRequestTag =0;
 | 
						|
    public static String hosts;
 | 
						|
    public static boolean isRequestHosts;
 | 
						|
 /*   public static String getUrl(String key){
 | 
						|
 | 
						|
        try {
 | 
						|
            JSONObject jsonObject = getHost();
 | 
						|
            if(jsonObject==null && key == "/api/g"){
 | 
						|
                return URLConstant.getRootUrl();
 | 
						|
            }
 | 
						|
            RandomHost rh = new RandomHost(jsonObject,key);
 | 
						|
            String url = rh.next();
 | 
						|
            if(!url.endsWith("/api/")){
 | 
						|
                url+="/api/";
 | 
						|
            }
 | 
						|
            return url;
 | 
						|
        } catch (JSONException e) {
 | 
						|
            e.printStackTrace();
 | 
						|
        }
 | 
						|
 | 
						|
        return "";
 | 
						|
    }*/
 | 
						|
 | 
						|
    public static boolean isHostExpires(){
 | 
						|
 | 
						|
        if(Constants.LAST_G==0){
 | 
						|
            return false;
 | 
						|
        }
 | 
						|
        long t =Constants.MAXAGE_G*1000 - (new Date().getTime() - Constants.LAST_G )  ;
 | 
						|
        Log.d(TAG, "HttpMethods intercept isHostExpires: time left is " +CommonUtil.getTimeCnt4Read(t,true));
 | 
						|
 | 
						|
      //  t=0;
 | 
						|
       return  t < 0;
 | 
						|
    }
 | 
						|
 | 
						|
    public static JSONObject getHost(boolean isMainApi)  {
 | 
						|
        JSONObject jsonObject=null;
 | 
						|
        if(!isMainApi && isHostExpires()){
 | 
						|
            Log.d(TAG, String.format("HttpMethods intercept isHostExpires prepare book:  main API maxAge %s, is expired, loading main API again ",CommonUtil.getTimeCnt4Read(Constants.MAXAGE_G*1000,true)));
 | 
						|
            getHostPolicy();
 | 
						|
        }
 | 
						|
      if (TextUtils.isEmpty(hosts)) {
 | 
						|
          Config config = Config.getInstance();
 | 
						|
          hosts = config.getBaseUrl();
 | 
						|
          Log.d(TAG, " hostconfig gethosts  " +hosts);
 | 
						|
          if(TextUtils.isEmpty(hosts)){
 | 
						|
              return null;
 | 
						|
          }
 | 
						|
      }
 | 
						|
      try {
 | 
						|
            jsonObject = new JSONObject(hosts);
 | 
						|
 | 
						|
            if (jsonObject != null && TextUtils.isEmpty(Constants.announcement)) {
 | 
						|
 | 
						|
                initHostConstants(jsonObject);
 | 
						|
            }
 | 
						|
        } catch (JSONException e) {
 | 
						|
            e.printStackTrace();
 | 
						|
        }
 | 
						|
        Log.d(TAG, "getUrl: host is " + hosts);
 | 
						|
        if (TextUtils.isEmpty(hosts)) {
 | 
						|
            Log.e(TAG, "getHosts: error on get hosts");
 | 
						|
        }
 | 
						|
 | 
						|
 | 
						|
        return jsonObject;
 | 
						|
    }
 | 
						|
    /**
 | 
						|
     * 判断是否有网络连接
 | 
						|
     *
 | 
						|
     * @return
 | 
						|
     */
 | 
						|
    public static boolean isNetworkConnected() {
 | 
						|
 | 
						|
        ConnectivityManager mConnectivityManager = (ConnectivityManager) MyApp.applicationContext
 | 
						|
                .getSystemService(Context.CONNECTIVITY_SERVICE);
 | 
						|
        NetworkInfo mNetworkInfo = mConnectivityManager
 | 
						|
                .getActiveNetworkInfo();
 | 
						|
        if (mNetworkInfo != null) {
 | 
						|
            return mNetworkInfo.isAvailable();
 | 
						|
        }
 | 
						|
 | 
						|
        return false;
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
 | 
						|
    /**
 | 
						|
     * 判断WIFI网络是否可用
 | 
						|
     *
 | 
						|
     * @param context
 | 
						|
     * @return
 | 
						|
     */
 | 
						|
    public static boolean isWifiConnected(Context context) {
 | 
						|
        if (context != null) {
 | 
						|
            ConnectivityManager mConnectivityManager = (ConnectivityManager) MyApp.applicationContext
 | 
						|
                    .getSystemService(Context.CONNECTIVITY_SERVICE);
 | 
						|
            NetworkInfo mWiFiNetworkInfo = mConnectivityManager
 | 
						|
                    .getNetworkInfo(ConnectivityManager.TYPE_WIFI);
 | 
						|
            if (mWiFiNetworkInfo != null) {
 | 
						|
                return mWiFiNetworkInfo.isAvailable();
 | 
						|
            }
 | 
						|
        }
 | 
						|
        return false;
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
    public static boolean isWiFiActive() {
 | 
						|
        ConnectivityManager connectivity = (ConnectivityManager)  MyApp.applicationContext
 | 
						|
                .getSystemService(Context.CONNECTIVITY_SERVICE);
 | 
						|
        if (connectivity != null) {
 | 
						|
            NetworkInfo[] info = connectivity.getAllNetworkInfo();
 | 
						|
            if (info != null) {
 | 
						|
                for (int i = 0; i < info.length; i++) {
 | 
						|
                    if (info[i].getTypeName().equals("WIFI") && info[i].isConnected()) {
 | 
						|
                        return true;
 | 
						|
                    }
 | 
						|
                }
 | 
						|
            }
 | 
						|
        }
 | 
						|
        return false;
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * 获取当前网络连接的类型信息
 | 
						|
     *
 | 
						|
     * @return
 | 
						|
     */
 | 
						|
    public static int getConnectedType() {
 | 
						|
        if ( MyApp.applicationContext != null) {
 | 
						|
            ConnectivityManager mConnectivityManager = (ConnectivityManager) MyApp.applicationContext
 | 
						|
                    .getSystemService(Context.CONNECTIVITY_SERVICE);
 | 
						|
            NetworkInfo mNetworkInfo = mConnectivityManager.getActiveNetworkInfo();
 | 
						|
            if (mNetworkInfo != null && mNetworkInfo.isAvailable()) {
 | 
						|
                return mNetworkInfo.getType();
 | 
						|
            }
 | 
						|
        }
 | 
						|
        return -1;
 | 
						|
    }
 | 
						|
 | 
						|
    public static void cancelRequest(int tag) {
 | 
						|
        currentRequestTag =tag;
 | 
						|
        for (Call call : HttpMethods.getOkClient().dispatcher().queuedCalls()) {
 | 
						|
            Log.d(TAG, String.format("cancelRequest: queuedCalls ,request url %s, request TAG %s ,current Tag ",call.request().url(), call.request().tag(),tag));
 | 
						|
            if (!call.request().tag().equals(tag))
 | 
						|
                call.cancel();
 | 
						|
        }
 | 
						|
 | 
						|
        //B) go through the running calls and cancel if the tag matches:
 | 
						|
        for (Call call : HttpMethods.getOkClient().dispatcher().runningCalls()) {
 | 
						|
            Log.d(TAG, String.format("cancelRequest: request url %s, request TAG %s ,current Tag %s",call.request().url(), call.request().tag(),tag));
 | 
						|
            if (call.request().tag()!=null && !call.request().tag().equals(tag)) {
 | 
						|
                call.cancel();
 | 
						|
                Log.d(TAG, String.format("cancelRequest: request url %s, request TAG %s ,current Tag %s, canceled.",call.request().url(), call.request().tag(),tag));
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
    }
 | 
						|
 | 
						|
    public static String getUserAgent(){
 | 
						|
      String[] uas = {
 | 
						|
              /*// Opera
 | 
						|
              "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36 OPR/26.0.1656.60",
 | 
						|
              "Opera/8.0 (Windows NT 5.1; U; en)",
 | 
						|
              "Mozilla/5.0 (Windows NT 5.1; U; en; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.50",
 | 
						|
              "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 9.50",
 | 
						|
              // Firefox
 | 
						|
              "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0",
 | 
						|
              "Mozilla/5.0 (X11; U; Linux x86_64; zh-CN; rv:1.9.2.10) Gecko/20100922 Ubuntu/10.10 (maverick) Firefox/3.6.10",
 | 
						|
              // Safari
 | 
						|
              "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.57.2 (KHTML, like Gecko) Version/5.1.7 Safari/534.57.2",
 | 
						|
              // chrome
 | 
						|
              "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36",
 | 
						|
              "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11",
 | 
						|
              "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.133 Safari/534.16",
 | 
						|
              // 360
 | 
						|
              "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36",
 | 
						|
              "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko",
 | 
						|
              // 淘宝浏览器
 | 
						|
              "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.11 TaoBrowser/2.0 Safari/536.11",
 | 
						|
              // 猎豹浏览器
 | 
						|
              "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.71 Safari/537.1 LBBROWSER",
 | 
						|
              "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; LBBROWSER)",
 | 
						|
              "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 732; .NET4.0C; .NET4.0E; LBBROWSER)",
 | 
						|
              // QQ浏览器
 | 
						|
              "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; QQBrowser/7.0.3698.400)",
 | 
						|
              "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 732; .NET4.0C; .NET4.0E)",
 | 
						|
              // sogou浏览器
 | 
						|
              "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.84 Safari/535.11 SE 2.X MetaSr 1.0",
 | 
						|
              "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; SV1; QQDownload 732; .NET4.0C; .NET4.0E; SE 2.X MetaSr 1.0)",
 | 
						|
              // maxthon浏览器
 | 
						|
              */
 | 
						|
              "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Maxthon/4.4.3.4000 Chrome/30.0.1599.101 Safari/537.36",
 | 
						|
              "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36",
 | 
						|
              "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36",
 | 
						|
              "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36",
 | 
						|
              "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36",
 | 
						|
              "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.2357.134 Safari/537.36",
 | 
						|
              "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36",
 | 
						|
              "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36",
 | 
						|
              "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2848.83 Safari/537.36",
 | 
						|
              "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36",
 | 
						|
              "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36",
 | 
						|
              "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36",
 | 
						|
              "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 UBrowser/6.2.4094.1 Safari/537.36",
 | 
						|
              "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2864.75 Safari/537.36",
 | 
						|
              "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2894.32 Safari/537.36",
 | 
						|
              "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.89 Safari/537.36",
 | 
						|
              "Mozilla/5.0 (Windows NT 5.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2637.97 Safari/537.36",
 | 
						|
              "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2770.24 Safari/537.36",
 | 
						|
              "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:43.0) Gecko/20100101 Firefox/43.0",
 | 
						|
              "Mozilla/5.0 (Windows NT 6.3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2955.47 Safari/537.36",
 | 
						|
              "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36",
 | 
						|
              "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36",
 | 
						|
              "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2981.31 Safari/537.36",
 | 
						|
              "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36",
 | 
						|
              "Mozilla/5.0 (Windows NT 5.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2672.36 Safari/537.36",
 | 
						|
              "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; .NET CLR 3.5.21022; .NET CLR 1.0.3705; .NET CLR 1.1.4322)",
 | 
						|
              "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2912.2 Safari/537.36",
 | 
						|
              "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2956.56 Safari/537.36",
 | 
						|
              "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2812.77 Safari/537.36",
 | 
						|
              "Mozilla/5.0 (Windows NT 5.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2650.71 Safari/537.36",
 | 
						|
              "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2624.94 Safari/537.36",
 | 
						|
              "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2690.7 Safari/537.36",
 | 
						|
              "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2842.56 Safari/537.36",
 | 
						|
              "Mozilla/5.0 (Windows NT 6.3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2963.76 Safari/537.36",
 | 
						|
              "Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2641.13 Safari/537.36",
 | 
						|
              "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2632.57 Safari/537.36",
 | 
						|
              "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2932.36 Safari/537.36",
 | 
						|
              "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2635.65 Safari/537.36",
 | 
						|
              "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2642.10 Safari/537.36",
 | 
						|
              "Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2945.41 Safari/537.36",
 | 
						|
              "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2975.95 Safari/537.36",
 | 
						|
              "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2884.62 Safari/537.36",
 | 
						|
              "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2843.16 Safari/537.36",
 | 
						|
              "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 SE 2.X MetaSr 1.0",
 | 
						|
              "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2938.72 Safari/537.36",
 | 
						|
              "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2660.98 Safari/537.36",
 | 
						|
              "Mozilla/5.0 (Windows NT 6.3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2650.44 Safari/537.36",
 | 
						|
              "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2635.83 Safari/537.36",
 | 
						|
              "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2963.74 Safari/537.36",
 | 
						|
              "Mozilla/5.0 (Windows NT 5.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2682.72 Safari/537.36",
 | 
						|
              "Mozilla/5.0 (Windows NT 5.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2635.64 Safari/537.36",
 | 
						|
              "Mozilla/5.0 (Windows NT 5.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2915.8 Safari/537.36",
 | 
						|
              "Mozilla/5.0 (Windows NT 5.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2624.61 Safari/537.36",
 | 
						|
              "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2975.60 Safari/537.36",
 | 
						|
              "Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2862.8 Safari/537.36"
 | 
						|
 | 
						|
      };
 | 
						|
 | 
						|
        return uas[new Random().nextInt(uas.length-1)];
 | 
						|
    //  return"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36";
 | 
						|
   //  return "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36";
 | 
						|
    }
 | 
						|
 | 
						|
    public static String getCoverUrl(String url){
 | 
						|
        if (!TextUtils.isEmpty(url)) {
 | 
						|
            if(!TextUtils.isEmpty(url)  ){
 | 
						|
                if(url.startsWith("//")){
 | 
						|
                    url ="http:"+url;
 | 
						|
                }
 | 
						|
            }
 | 
						|
 | 
						|
        }
 | 
						|
        return url;
 | 
						|
    }
 | 
						|
 | 
						|
    public static String getUserAgent(Context context) {
 | 
						|
        String userAgent = "";
 | 
						|
//        APP版本
 | 
						|
        String versionName = CommonUtil.getVersionName(context);
 | 
						|
//        手机型号
 | 
						|
        String systemModel = CommonUtil.getSystemModel();
 | 
						|
//        系统版本
 | 
						|
        String systemVersion = CommonUtil.getSystemVersion();
 | 
						|
        String deviceBrand = CommonUtil.getDeviceBrand();
 | 
						|
        String packagenm = CommonUtil.getPackageName(context);
 | 
						|
 | 
						|
        String channel =CommonUtil.getChannel(context);// BuildConfig.CHANNEL;
 | 
						|
        userAgent = "Android/" +channel +"/"+ versionName + "/"+packagenm+"/" + deviceBrand + "/" + systemModel + "/" + systemVersion;
 | 
						|
        return userAgent;
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
    public static void getHostPolicy(){
 | 
						|
        Log.d(TAG, " hostconfig is in ... isRequestHosts? "+isRequestHosts );
 | 
						|
        if(isRequestHosts){
 | 
						|
            return;
 | 
						|
        }
 | 
						|
        isRequestHosts =true;
 | 
						|
        BookSubscribe.getMastDomain(new OnSuccessAndFaultSub(new OnSuccessAndFaultListener() {
 | 
						|
            @Override
 | 
						|
            public void onSuccess(String result) {
 | 
						|
 | 
						|
                // mFirstPage= gson.fromJson(result, FirstPage.class);
 | 
						|
                try {
 | 
						|
                    JSONObject jsonObject = new JSONObject(result);
 | 
						|
                    String resultstr = jsonObject.getString("hosts");
 | 
						|
                    Config config =Config.createConfig(MyApp.applicationContext);
 | 
						|
                    config.setBaseUrl(resultstr);
 | 
						|
                    Log.d(TAG, " hostconfig sethosts  " +resultstr);
 | 
						|
                    //config.setBaseUrl(resultstr);
 | 
						|
                    hosts="";
 | 
						|
                    Constants.LAST_G = new Date().getTime();
 | 
						|
                    String ads = jsonObject.getString("adsenseSetting");
 | 
						|
                    config.setAdSetting(ads);
 | 
						|
                    Gson gson = new Gson();
 | 
						|
                    Constants.AD_SETTING = gson.fromJson(ads, AdSetting.class);
 | 
						|
 | 
						|
                    if (Constants.AD_SETTING.isShowAdsense() ) {
 | 
						|
                        TTAdManagerHolder.init(MyApp.applicationContext);
 | 
						|
                    }
 | 
						|
                    initHostConstants(jsonObject);
 | 
						|
                    Constants.PRE_LOAD_CHAPT = jsonObject.getBoolean("preLoadChapter");
 | 
						|
                    config.setPreLoadChapter(Constants.PRE_LOAD_CHAPT);
 | 
						|
                   // Constants.minVersion =
 | 
						|
                    // config.setRootUrl( jsonObject.getString("masterDomains"));
 | 
						|
                    isRequestHosts =false;
 | 
						|
 | 
						|
                    Constants.SHOW_NOVEL_CHAPTER_URL = jsonObject.getBoolean("showTargetSiteChatperUrl");
 | 
						|
                    Constants.DECLARE =jsonObject.getString("disclaimer");
 | 
						|
                    config.setShowChaptUrl( Constants.SHOW_NOVEL_CHAPTER_URL);
 | 
						|
                    config.setDeclare( Constants.DECLARE );
 | 
						|
                } catch (Exception e) {
 | 
						|
                    e.printStackTrace();
 | 
						|
                }
 | 
						|
 | 
						|
 | 
						|
            }
 | 
						|
 | 
						|
            @Override
 | 
						|
            public void onFault(String errorMsg) {
 | 
						|
                //失败
 | 
						|
                Log.d(TAG, "error on get firstpage: " + errorMsg);
 | 
						|
                isRequestHosts =false;
 | 
						|
            }
 | 
						|
        }, MyApp.applicationContext));
 | 
						|
    }
 | 
						|
 | 
						|
    static long lastUpgradCheck =0;
 | 
						|
   static void initHostConstants( JSONObject jsonObject ) throws JSONException {
 | 
						|
       Constants.announcement = jsonObject.getString("declare");
 | 
						|
       Constants.email = jsonObject.getString("email");
 | 
						|
       String tmp = jsonObject.getString("upgradeUrl");
 | 
						|
       Constants.updateUrl = TextUtils.isEmpty(tmp) ? Constants.updateUrl : tmp;
 | 
						|
       Constants.minVersion = jsonObject.getInt("minVersion");
 | 
						|
       //if(jsonObject.has("showTargetSiteChatperUrl")) {
 | 
						|
 | 
						|
       //}
 | 
						|
       Constants.version = CommonUtil.getVersionCode(MyApp.applicationContext);
 | 
						|
       if (lastUpgradCheck == 0 || Constants.version < Constants.minVersion) {
 | 
						|
           lastUpgradCheck = new Date().getTime();
 | 
						|
           checkUpdate(true);
 | 
						|
 | 
						|
       }
 | 
						|
 | 
						|
 | 
						|
 | 
						|
//        Gson gson = new Gson();
 | 
						|
//        AdSetting ads = gson.fromJson(adStr, AdSetting.class);
 | 
						|
 | 
						|
      /*   Constants.AD_SPLASH_INVTERVAL = (long) 1000 * ads.getInt("splashInterval");
 | 
						|
       Constants.AD_SPLASH_PAGES = ads.getInt("splashPageCount");
 | 
						|
       Constants.AD_CHAPT_TOP_BANNER_PER_PAGE_COUNT = ads.getInt("times4ChapterTopBanner");
 | 
						|
       Constants.AD_CHAPT_NATIVE_BANNER_PER_PAGE_COUNT = ads.getInt("times4ChapterContentBanner");
 | 
						|
 | 
						|
     Constants.AD_SPLASH_SOURCE = ads.getInt("splashSource");
 | 
						|
       Constants.AD_UNIFIED_RECYCLE_SOURCE = ads.getInt("unifiedReceycleSource");
 | 
						|
       Constants.AD_NATIVE_BANNER_SOURCE = ads.getInt("nativeBannerSource");
 | 
						|
       Constants.AD_BANNER_SOURCE = ads.getInt("bannerSource");
 | 
						|
 | 
						|
       if (Constants.AD_CHAPT_TOP_BANNER_PER_PAGE_COUNT > 1 && Constants.AD_CHAPT_TOP_BANNER_PER_PAGE_COUNT == Constants.AD_CHAPT_NATIVE_BANNER_PER_PAGE_COUNT) {
 | 
						|
           Constants.AD_CHAPT_TOP_BANNER_PER_PAGE_COUNT--; //顶部广告和页内广告要错开
 | 
						|
       }
 | 
						|
 | 
						|
       Log.d(TAG, String.format("initHostConstants: Constants.AD_SPLASH_INVTERVAL %s,AD_SPLASH_PAGES %s", Constants.AD_SPLASH_INVTERVAL, Constants.AD_SPLASH_PAGES));
 | 
						|
       */
 | 
						|
 | 
						|
      //   try {
 | 
						|
 | 
						|
//        }catch (Exception er){
 | 
						|
//            Log.e(TAG, "initHostConstants: update error ",er );
 | 
						|
//        }
 | 
						|
 | 
						|
   /*
 | 
						|
       Config config = Config.getInstance();
 | 
						|
       Constants.SHOWAD = ads.getBoolean("showAdsense");
 | 
						|
 | 
						|
 | 
						|
      config.setShowAd(Constants.SHOWAD);
 | 
						|
       config.setAdTopBannerRate(Constants.AD_CHAPT_TOP_BANNER_PER_PAGE_COUNT);
 | 
						|
       config.setAdNativeBannerInLinesRate(Constants.AD_CHAPT_NATIVE_BANNER_PER_PAGE_COUNT);
 | 
						|
       config.setAdSplashSource(Constants.AD_SPLASH_SOURCE);
 | 
						|
       config.setAdUnifiedRecycleSource(Constants.AD_UNIFIED_RECYCLE_SOURCE);
 | 
						|
       config.setAdNativeBannerSource(Constants.AD_NATIVE_BANNER_SOURCE);
 | 
						|
       config.setAdBannerSource(Constants.AD_BANNER_SOURCE);
 | 
						|
 | 
						|
       Log.d(TAG, String.format("initHostConstants: Constants.AD_SPLASH_INVTERVAL %s,AD_SPLASH_PAGES %s, Constants.SHOWAD %s,Constants.AD_PRE_LOAD_CHAPT %s "
 | 
						|
               , Constants.AD_SPLASH_INVTERVAL, Constants.AD_SPLASH_PAGES, Constants.SHOWAD, Constants.PRE_LOAD_CHAPT));
 | 
						|
*/
 | 
						|
 | 
						|
   }
 | 
						|
    public static void checkUpdate(boolean isSilence){
 | 
						|
 | 
						|
        Activity currentActivity = MyApp.getCurrentActivity();
 | 
						|
        if(currentActivity==null){
 | 
						|
            return;
 | 
						|
        }
 | 
						|
        UpdateManager manager = new UpdateManager(currentActivity);
 | 
						|
        if(isSilence)
 | 
						|
            manager.checkUpdateSilence();
 | 
						|
        else
 | 
						|
            manager.checkUpdate();
 | 
						|
    }
 | 
						|
}
 |