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(); | ||
|  |     } | ||
|  | } |