Commit 667c04cf authored by fallenstardust's avatar fallenstardust

读取zip或者ypk内.txt文件里的服务器名称、host、port信息添加到服务器列表

parent 55b92a24
...@@ -8,6 +8,8 @@ import static cn.garymb.ygomobile.Constants.CORE_REPLAY_PATH; ...@@ -8,6 +8,8 @@ import static cn.garymb.ygomobile.Constants.CORE_REPLAY_PATH;
import static cn.garymb.ygomobile.Constants.CORE_SINGLE_PATH; import static cn.garymb.ygomobile.Constants.CORE_SINGLE_PATH;
import static cn.garymb.ygomobile.Constants.QUERY_NAME; import static cn.garymb.ygomobile.Constants.QUERY_NAME;
import static cn.garymb.ygomobile.Constants.REQUEST_SETTINGS_CODE; import static cn.garymb.ygomobile.Constants.REQUEST_SETTINGS_CODE;
import static cn.garymb.ygomobile.utils.ServerUtil.AddServer;
import static cn.garymb.ygomobile.utils.ServerUtil.loadServerInfoFromZipOrYpk;
import android.app.Activity; import android.app.Activity;
import android.content.Intent; import android.content.Intent;
...@@ -20,11 +22,22 @@ import android.text.TextUtils; ...@@ -20,11 +22,22 @@ import android.text.TextUtils;
import android.util.Log; import android.util.Log;
import android.widget.Toast; import android.widget.Toast;
import com.app.hubert.guide.util.LogUtil;
import com.file.zip.ZipEntry;
import com.file.zip.ZipFile;
import com.ourygo.lib.duelassistant.util.YGODAUtil; import com.ourygo.lib.duelassistant.util.YGODAUtil;
import java.io.BufferedReader;
import java.io.File; import java.io.File;
import java.io.FileInputStream; import java.io.FileInputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
import java.util.Enumeration;
import java.util.Locale; import java.util.Locale;
import java.util.Scanner;
import java.util.zip.ZipException;
import cn.garymb.ygodata.YGOGameOptions; import cn.garymb.ygodata.YGOGameOptions;
import cn.garymb.ygomobile.bean.Deck; import cn.garymb.ygomobile.bean.Deck;
...@@ -33,7 +46,9 @@ import cn.garymb.ygomobile.ui.home.HomeActivity; ...@@ -33,7 +46,9 @@ import cn.garymb.ygomobile.ui.home.HomeActivity;
import cn.garymb.ygomobile.ui.home.MainActivity; import cn.garymb.ygomobile.ui.home.MainActivity;
import cn.garymb.ygomobile.utils.FileUtils; import cn.garymb.ygomobile.utils.FileUtils;
import cn.garymb.ygomobile.utils.IOUtils; import cn.garymb.ygomobile.utils.IOUtils;
import cn.garymb.ygomobile.utils.ServerUtil;
import cn.garymb.ygomobile.utils.YGOUtil; import cn.garymb.ygomobile.utils.YGOUtil;
import cn.hutool.core.compress.ZipReader;
import ocgcore.DataManager; import ocgcore.DataManager;
import ocgcore.LimitManager; import ocgcore.LimitManager;
import ocgcore.StringManager; import ocgcore.StringManager;
...@@ -45,7 +60,7 @@ public class GameUriManager { ...@@ -45,7 +60,7 @@ public class GameUriManager {
private StringManager stringManager; private StringManager stringManager;
public GameUriManager(Activity activity) { public GameUriManager(Activity activity) {
this.activity = (HomeActivity) activity; this.activity = activity;
limitManager = new LimitManager(); limitManager = new LimitManager();
stringManager = new StringManager(); stringManager = new StringManager();
} }
...@@ -229,6 +244,7 @@ public class GameUriManager { ...@@ -229,6 +244,7 @@ public class GameUriManager {
} else { } else {
DataManager.get().load(true); DataManager.get().load(true);
Toast.makeText(activity, R.string.ypk_installed, Toast.LENGTH_LONG).show(); Toast.makeText(activity, R.string.ypk_installed, Toast.LENGTH_LONG).show();
loadServerInfoFromZipOrYpk(getActivity(),file);
} }
} else if (isYrp) { } else if (isYrp) {
if (!YGOStarter.isGameRunning(getActivity())) { if (!YGOStarter.isGameRunning(getActivity())) {
......
package cn.garymb.ygomobile.ui.activities; package cn.garymb.ygomobile.ui.activities;
import static cn.garymb.ygomobile.Constants.ASSET_SERVER_LIST;
import static cn.garymb.ygomobile.Constants.URL_YGO233_ADVANCE; import static cn.garymb.ygomobile.Constants.URL_YGO233_ADVANCE;
import static cn.garymb.ygomobile.Constants.URL_YGO233_FILE; import static cn.garymb.ygomobile.Constants.URL_YGO233_FILE;
import static cn.garymb.ygomobile.Constants.URL_YGO233_FILE_ALT; import static cn.garymb.ygomobile.Constants.URL_YGO233_FILE_ALT;
import static cn.garymb.ygomobile.utils.DownloadUtil.TYPE_DOWNLOAD_EXCEPTION; import static cn.garymb.ygomobile.utils.DownloadUtil.TYPE_DOWNLOAD_EXCEPTION;
import static cn.garymb.ygomobile.utils.DownloadUtil.get;
import static cn.garymb.ygomobile.utils.ServerUtil.AddServer; import static cn.garymb.ygomobile.utils.ServerUtil.AddServer;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
...@@ -13,7 +11,6 @@ import android.content.Context; ...@@ -13,7 +11,6 @@ import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.net.Uri; import android.net.Uri;
import android.os.Bundle; import android.os.Bundle;
import android.os.Environment;
import android.os.Handler; import android.os.Handler;
import android.os.Message; import android.os.Message;
import android.util.Log; import android.util.Log;
...@@ -37,32 +34,20 @@ import com.tencent.smtt.sdk.WebChromeClient; ...@@ -37,32 +34,20 @@ import com.tencent.smtt.sdk.WebChromeClient;
import com.tencent.smtt.sdk.WebView; import com.tencent.smtt.sdk.WebView;
import java.io.File; import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
import cn.garymb.ygomobile.AppsSettings; import cn.garymb.ygomobile.AppsSettings;
import cn.garymb.ygomobile.Constants; import cn.garymb.ygomobile.Constants;
import cn.garymb.ygomobile.bean.ServerInfo;
import cn.garymb.ygomobile.bean.ServerList;
import cn.garymb.ygomobile.lite.R; import cn.garymb.ygomobile.lite.R;
import cn.garymb.ygomobile.ui.file.FileActivity; import cn.garymb.ygomobile.ui.file.FileActivity;
import cn.garymb.ygomobile.ui.file.FileOpenType; import cn.garymb.ygomobile.ui.file.FileOpenType;
import cn.garymb.ygomobile.ui.home.MainActivity; import cn.garymb.ygomobile.ui.home.MainActivity;
import cn.garymb.ygomobile.ui.home.ServerListManager;
import cn.garymb.ygomobile.ui.mycard.MyCard; import cn.garymb.ygomobile.ui.mycard.MyCard;
import cn.garymb.ygomobile.ui.plus.DefWebChromeClient; import cn.garymb.ygomobile.ui.plus.DefWebChromeClient;
import cn.garymb.ygomobile.ui.plus.VUiKit;
import cn.garymb.ygomobile.ui.widget.WebViewPlus; import cn.garymb.ygomobile.ui.widget.WebViewPlus;
import cn.garymb.ygomobile.utils.DownloadUtil; import cn.garymb.ygomobile.utils.DownloadUtil;
import cn.garymb.ygomobile.utils.FileUtils; import cn.garymb.ygomobile.utils.FileUtils;
import cn.garymb.ygomobile.utils.IOUtils;
import cn.garymb.ygomobile.utils.SharedPreferenceUtil; import cn.garymb.ygomobile.utils.SharedPreferenceUtil;
import cn.garymb.ygomobile.utils.SystemUtils;
import cn.garymb.ygomobile.utils.UnzipUtils; import cn.garymb.ygomobile.utils.UnzipUtils;
import cn.garymb.ygomobile.utils.XmlUtils;
import cn.garymb.ygomobile.utils.YGOUtil; import cn.garymb.ygomobile.utils.YGOUtil;
import ocgcore.DataManager; import ocgcore.DataManager;
import ocgcore.data.Card; import ocgcore.data.Card;
...@@ -81,8 +66,6 @@ public class WebActivity extends BaseActivity implements View.OnClickListener { ...@@ -81,8 +66,6 @@ public class WebActivity extends BaseActivity implements View.OnClickListener {
private EditText et_context_keyword; private EditText et_context_keyword;
private ImageButton btn_context_search_close, btn_context_search_last, btn_context_search_next; private ImageButton btn_context_search_close, btn_context_search_last, btn_context_search_next;
private Button btn_download; private Button btn_download;
private List<ServerInfo> serverInfos;
private ServerInfo mServerInfo;
private File xmlFile; private File xmlFile;
private int FailedCount; private int FailedCount;
@SuppressLint("HandlerLeak") @SuppressLint("HandlerLeak")
...@@ -145,7 +128,6 @@ public class WebActivity extends BaseActivity implements View.OnClickListener { ...@@ -145,7 +128,6 @@ public class WebActivity extends BaseActivity implements View.OnClickListener {
mWebViewPlus = $(R.id.webbrowser); mWebViewPlus = $(R.id.webbrowser);
find_in_page = $(R.id.find_in_page); find_in_page = $(R.id.find_in_page);
et_context_keyword = $(R.id.context_keyword); et_context_keyword = $(R.id.context_keyword);
serverInfos = new ArrayList<>();
xmlFile = new File(this.getFilesDir(), Constants.SERVER_FILE); xmlFile = new File(this.getFilesDir(), Constants.SERVER_FILE);
initButton(); initButton();
//mWebViewPlus.enableHtml5(); //mWebViewPlus.enableHtml5();
...@@ -327,7 +309,7 @@ public class WebActivity extends BaseActivity implements View.OnClickListener { ...@@ -327,7 +309,7 @@ public class WebActivity extends BaseActivity implements View.OnClickListener {
} }
private void openFileChooseProcess(boolean isMulti) { private void openFileChooseProcess(boolean isMulti) {
Log.e(TAG,mWebViewPlus.getUrl()); Log.e(TAG, mWebViewPlus.getUrl());
if (mWebViewPlus.getUrl().contains(MyCard.mCommunityReportUrl)) { if (mWebViewPlus.getUrl().contains(MyCard.mCommunityReportUrl)) {
Intent intent = FileActivity.getIntent(getActivity(), getString(R.string.dialog_select_file), null, AppsSettings.get().getReplayDir(), false, FileOpenType.SelectFile); Intent intent = FileActivity.getIntent(getActivity(), getString(R.string.dialog_select_file), null, AppsSettings.get().getReplayDir(), false, FileOpenType.SelectFile);
startActivityForResult(intent, FILE_CHOOSER_REQUEST); startActivityForResult(intent, FILE_CHOOSER_REQUEST);
......
...@@ -7,6 +7,9 @@ import android.content.Context; ...@@ -7,6 +7,9 @@ import android.content.Context;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.Log; import android.util.Log;
import com.file.zip.ZipEntry;
import com.file.zip.ZipFile;
import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.EventBus;
import java.io.File; import java.io.File;
...@@ -15,7 +18,9 @@ import java.io.FileOutputStream; ...@@ -15,7 +18,9 @@ import java.io.FileOutputStream;
import java.io.IOException; import java.io.IOException;
import java.io.OutputStream; import java.io.OutputStream;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List; import java.util.List;
import java.util.Scanner;
import cn.garymb.ygomobile.Constants; import cn.garymb.ygomobile.Constants;
import cn.garymb.ygomobile.bean.ServerInfo; import cn.garymb.ygomobile.bean.ServerInfo;
...@@ -96,6 +101,47 @@ public class ServerUtil { ...@@ -96,6 +101,47 @@ public class ServerUtil {
} }
}); });
} }
/**
* 解析zip或者ypk的file下内置的txt文件里的服务器name、host、prot
*
* @param context
* @param file
*/
public static void loadServerInfoFromZipOrYpk (Context context, File file) {
if (file.getName().endsWith(".zip") || file.getName().endsWith(".ypk")) {
Log.e("GameUriManager", "读取压缩包");
try {
String serverName = null, serverHost = null, serverPort = null;
ZipFile zipFile = new ZipFile(file.getAbsoluteFile(), "GBK");
Enumeration<ZipEntry> entris = zipFile.getEntries();
ZipEntry entry;
StringBuilder content = new StringBuilder();
while (entris.hasMoreElements()) {
entry = entris.nextElement();
if (!entry.isDirectory()) {
if (entry.getName().endsWith(".txt")) {
Scanner scanner = new Scanner(zipFile.getInputStream(entry));
while (scanner.hasNextLine()) {
content.append(scanner.nextLine() + "|");
}
scanner.close();
serverName = content.substring(0, content.indexOf("|"));
serverHost = content.substring(content.indexOf("|") + 1, content.indexOf(":"));
serverPort = content.substring(content.indexOf(":") + 1,content.lastIndexOf("|"));
}
}
}
AddServer(context, serverName, serverHost, Integer.valueOf(serverPort),"Knight of Hanoi");
Log.w("看看", serverName + "/" + serverHost + "/" + serverPort);
zipFile.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
/** /**
* 从资源文件serverlist.xml(或本地文件server_list.xml)解析服务器列表,并将新添加的服务器信息(name,addr,port)合并到服务器列表中。 * 从资源文件serverlist.xml(或本地文件server_list.xml)解析服务器列表,并将新添加的服务器信息(name,addr,port)合并到服务器列表中。
...@@ -131,7 +177,7 @@ public class ServerUtil { ...@@ -131,7 +177,7 @@ public class ServerUtil {
serverInfos.addAll(list.getServerInfoList()); serverInfos.addAll(list.getServerInfoList());
boolean hasServer = false; boolean hasServer = false;
for (int i = 0; i < list.getServerInfoList().size(); i++) { for (int i = 0; i < list.getServerInfoList().size(); i++) {
if (mServerInfo.getPort() != serverInfos.get(i).getPort() && mServerInfo.getServerAddr() != serverInfos.get(i).getServerAddr()) { if (mServerInfo.getName() != serverInfos.get(i).getName() && mServerInfo.getServerAddr() != serverInfos.get(i).getServerAddr()) {//判断服务器名称、域名IP不同则视为不存在
continue; continue;
} else { } else {
hasServer = true; hasServer = true;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment