462 lines
		
	
	
		
			23 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			462 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.Activity_base;
 | |
| 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_base currentActivity = MyApp.getCurrentActivity();
 | |
|         if(currentActivity==null){
 | |
|             return;
 | |
|         }
 | |
|         UpdateManager manager = new UpdateManager(currentActivity);
 | |
|         if(isSilence)
 | |
|             manager.checkUpdateSilence();
 | |
|         else
 | |
|             manager.checkUpdate();
 | |
|     }
 | |
| }
 |