You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

68 lines
2.6 KiB

package com.monke.monkeybook;
import android.content.SharedPreferences;
import org.jsoup.helper.StringUtil;
import java.util.regex.Pattern;
public class ProxyManager {
public static final String SP_KEY_PROXY_HTTP = "proxy_http";
public static final String SP_KEY_PROXY_STATE = "proxy_state";
public static final String PROXY_HTTP_DEFAULT = "";
public static final boolean PROXY_STATE_DEFAULT = false;
public static boolean proxyState;
public static String proxyHttp;
private static final String PROXY_HTTP_MATCH = "(http|ftp|https):\\/\\/[\\w\\-_]+(\\.[\\w\\-_]+)+([\\w\\-\\.,@?^=%&:/~\\+#]*[\\w\\-\\@?^=%&/~\\+#])?";//http正则表达式
public static final String PROXY_PACKAGENAME_ENCODE = "代理包名加密key"; //代理包名加密key
public static String packageName; //加密后的包名
public static void saveProxyState(boolean state) {
proxyState = state;
SharedPreferences.Editor editor = MApplication.getInstance().getSharedPreferences("CONFIG", 0).edit();
editor.putBoolean(SP_KEY_PROXY_STATE, proxyState);
editor.commit();
}
private static void initProxyState() {
try {
packageName = MApplication.getInstance().getPackageManager().getPackageInfo(MApplication.getInstance().getPackageName(), 0).packageName;
} catch (Exception e) {
e.printStackTrace();
System.out.println("=================包名获取失败,可能会影响代理请求功能=================");
}
proxyState = MApplication.getInstance().getSharedPreferences("CONFIG", 0).getBoolean(SP_KEY_PROXY_STATE, PROXY_STATE_DEFAULT);
}
public static void saveProxyHttp(String http) {
proxyHttp = http;
SharedPreferences.Editor editor = MApplication.getInstance().getSharedPreferences("CONFIG", 0).edit();
editor.putString(SP_KEY_PROXY_HTTP, proxyHttp);
editor.commit();
}
private static void initProxyHttp() {
proxyHttp = MApplication.getInstance().getSharedPreferences("CONFIG", 0).getString(SP_KEY_PROXY_HTTP, PROXY_HTTP_DEFAULT);
}
public static void initProxy() {
initProxyHttp();
initProxyState();
hasProxy();
}
public static boolean hasProxy() {
if (!proxyState) {
return false;
}
Pattern pattern = Pattern.compile(PROXY_HTTP_MATCH);
if (!StringUtil.isBlank(proxyHttp) && pattern.matcher(proxyHttp).matches()) {
return true;
} else {
saveProxyState(false);
return false;
}
}
}