Commit af90136a authored by feihuaduo's avatar feihuaduo

适配da协议的加房1.0协议

parent 05e41da5
...@@ -66,6 +66,17 @@ ...@@ -66,6 +66,17 @@
android:host="deck" android:host="deck"
android:scheme="ygo" /> android:scheme="ygo" />
</intent-filter> </intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:host="room"
android:scheme="ygo" />
</intent-filter>
<intent-filter> <intent-filter>
<action android:name="android.intent.action.VIEW" /> <action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.DEFAULT" />
......
...@@ -201,9 +201,10 @@ public interface Constants { ...@@ -201,9 +201,10 @@ public interface Constants {
String PATH_DECK = "/deck"; String PATH_DECK = "/deck";
String SCHEME_HTTP = "http"; String SCHEME_HTTP = "http";
String SCHEME_HTTPS = "https"; String SCHEME_HTTPS = "https";
String SCHEME_APP = "ygo"; String SCHEME_APP = "http";
String URI_HOST = "deck"; String URI_HOST = "deck.ourygo.top";
String URI_DECK = "deck"; String URI_DECK = "deck";
String URI_ROOM = "room";
String QUERY_YDK = "ydk"; String QUERY_YDK = "ydk";
String QUERY_NAME = "name"; String QUERY_NAME = "name";
......
package cn.garymb.ygomobile; package cn.garymb.ygomobile;
import static cn.garymb.ygomobile.Constants.ACTION_OPEN_DECK;
import static cn.garymb.ygomobile.Constants.ACTION_OPEN_GAME;
import static cn.garymb.ygomobile.Constants.CORE_REPLAY_PATH;
import static cn.garymb.ygomobile.Constants.CORE_SINGLE_PATH;
import static cn.garymb.ygomobile.Constants.QUERY_NAME;
import static cn.garymb.ygomobile.Constants.REQUEST_SETTINGS_CODE;
import android.app.Activity; import android.app.Activity;
import android.content.ContentUris;
import android.content.Intent; import android.content.Intent;
import android.database.Cursor;
import android.net.Uri; import android.net.Uri;
import android.os.Build; import android.os.Build;
import android.os.Environment; import android.os.Environment;
import android.os.ParcelFileDescriptor; import android.os.ParcelFileDescriptor;
import android.provider.DocumentsContract;
import android.provider.MediaStore;
import android.provider.Settings; import android.provider.Settings;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.Log; import android.util.Log;
import android.widget.Toast; import android.widget.Toast;
import androidx.documentfile.provider.DocumentFile; import com.ourygo.assistant.base.listener.OnDeRoomListener;
import com.ourygo.assistant.util.YGODAUtil;
import java.io.File; import java.io.File;
import java.io.FileInputStream; import java.io.FileInputStream;
...@@ -25,18 +29,13 @@ import cn.garymb.ygodata.YGOGameOptions; ...@@ -25,18 +29,13 @@ import cn.garymb.ygodata.YGOGameOptions;
import cn.garymb.ygomobile.bean.Deck; import cn.garymb.ygomobile.bean.Deck;
import cn.garymb.ygomobile.lite.R; import cn.garymb.ygomobile.lite.R;
import cn.garymb.ygomobile.ui.cards.DeckManagerActivity; import cn.garymb.ygomobile.ui.cards.DeckManagerActivity;
import cn.garymb.ygomobile.ui.home.MainActivity;
import cn.garymb.ygomobile.ui.preference.SettingsActivity; import cn.garymb.ygomobile.ui.preference.SettingsActivity;
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.YGOUtil;
import ocgcore.DataManager; import ocgcore.DataManager;
import static cn.garymb.ygomobile.Constants.ACTION_OPEN_DECK;
import static cn.garymb.ygomobile.Constants.ACTION_OPEN_GAME;
import static cn.garymb.ygomobile.Constants.CORE_REPLAY_PATH;
import static cn.garymb.ygomobile.Constants.CORE_SINGLE_PATH;
import static cn.garymb.ygomobile.Constants.QUERY_NAME;
import static cn.garymb.ygomobile.Constants.REQUEST_SETTINGS_CODE;
public class GameUriManager { public class GameUriManager {
private Activity activity; private Activity activity;
...@@ -167,7 +166,7 @@ public class GameUriManager { ...@@ -167,7 +166,7 @@ public class GameUriManager {
local = new File(AppsSettings.get().getResourcePath() + "/temp", name); local = new File(AppsSettings.get().getResourcePath() + "/temp", name);
} }
if (local.exists()) { if (local.exists()) {
Log.w(Constants.TAG, "Overwrite file "+local.getAbsolutePath()); Log.w(Constants.TAG, "Overwrite file " + local.getAbsolutePath());
} }
if (remoteFile != null && TextUtils.equals(remoteFile.getAbsolutePath(), local.getAbsolutePath())) { if (remoteFile != null && TextUtils.equals(remoteFile.getAbsolutePath(), local.getAbsolutePath())) {
//is same path //is same path
...@@ -248,6 +247,16 @@ public class GameUriManager { ...@@ -248,6 +247,16 @@ public class GameUriManager {
File file = deckInfo.saveTemp(AppsSettings.get().getDeckDir()); File file = deckInfo.saveTemp(AppsSettings.get().getDeckDir());
DeckManagerActivity.start(activity, file.getAbsolutePath()); DeckManagerActivity.start(activity, file.getAbsolutePath());
} }
} else if (Constants.URI_ROOM.equals(host)) {
YGODAUtil.deRoomListener(uri, (host1, port, password, exception) -> {
if (TextUtils.isEmpty(exception))
if (activity instanceof MainActivity) {
MainActivity mainActivity = (MainActivity) activity;
mainActivity.quickjoinRoom(host1, port, password);
} else {
YGOUtil.show(exception);
}
});
} }
// else if (PATH_ROOM.equals(path)) { // else if (PATH_ROOM.equals(path)) {
// try { // try {
......
...@@ -39,8 +39,8 @@ public class Deck implements Parcelable { ...@@ -39,8 +39,8 @@ public class Deck implements Parcelable {
return new Deck[size]; return new Deck[size];
} }
}; };
private static final int YGO_PROTOCOL_0 = 0; private static final int YGO_DECK_PROTOCOL_0 = 0;
private static final int YGO_PROTOCOL_1 = 1; private static final int YGO_DECK_PROTOCOL_1 = 1;
private static final String CARD_DIVIDE_ID = "_"; private static final String CARD_DIVIDE_ID = "_";
private static final String CARD_DIVIDE_NUM = "*"; private static final String CARD_DIVIDE_NUM = "*";
...@@ -58,8 +58,7 @@ public class Deck implements Parcelable { ...@@ -58,8 +58,7 @@ public class Deck implements Parcelable {
public Deck(String name, Uri uri) { public Deck(String name, Uri uri) {
this(name); this(name);
Log.e("DeckUU", "Uri:" + uri); int version = YGO_DECK_PROTOCOL_0;
int version = YGO_PROTOCOL_0;
try { try {
String ygoType = uri.getQueryParameter(QUERY_YGO_TYPE); String ygoType = uri.getQueryParameter(QUERY_YGO_TYPE);
...@@ -67,7 +66,7 @@ public class Deck implements Parcelable { ...@@ -67,7 +66,7 @@ public class Deck implements Parcelable {
version = Integer.parseInt(uri.getQueryParameter(QUERY_VERSION)); version = Integer.parseInt(uri.getQueryParameter(QUERY_VERSION));
} }
} catch (Exception exception) { } catch (Exception exception) {
version = YGO_PROTOCOL_0; version = YGO_DECK_PROTOCOL_0;
} }
String main = null, extra = null, side = null; String main = null, extra = null, side = null;
...@@ -75,81 +74,53 @@ public class Deck implements Parcelable { ...@@ -75,81 +74,53 @@ public class Deck implements Parcelable {
List<String> eList = new ArrayList<>(); List<String> eList = new ArrayList<>();
List<String> sList = new ArrayList<>(); List<String> sList = new ArrayList<>();
String[] mains, extras, sides;
switch (version) { switch (version) {
case YGO_PROTOCOL_0: case YGO_DECK_PROTOCOL_0:
try { main = uri.getQueryParameter(QUERY_MAIN_ALL);
main = uri.getQueryParameter(QUERY_MAIN_ALL); extra = uri.getQueryParameter(QUERY_EXTRA_ALL);
String[] mains = main.split(CARD_DIVIDE_ID); side = uri.getQueryParameter(QUERY_SIDE_ALL);
mList.addAll(Arrays.asList(mains));
} catch (Exception ignored) {
}
try { mains = main.split(CARD_DIVIDE_ID);
extra = uri.getQueryParameter(QUERY_EXTRA_ALL); mList.addAll(Arrays.asList(mains));
String[] extras = extra.split(CARD_DIVIDE_ID);
eList.addAll(Arrays.asList(extras));
} catch (Exception ignored) {
}
try {
side = uri.getQueryParameter(QUERY_SIDE_ALL);
String[] sides = side.split(CARD_DIVIDE_ID);
sList.addAll(Arrays.asList(sides));
} catch (Exception ignored) {
}
extras = extra.split(CARD_DIVIDE_ID);
eList.addAll(Arrays.asList(extras));
sides = side.split(CARD_DIVIDE_ID);
sList.addAll(Arrays.asList(sides));
break; break;
case YGO_PROTOCOL_1: case YGO_DECK_PROTOCOL_1:
try { main = uri.getQueryParameter(QUERY_MAIN);
main = uri.getQueryParameter(QUERY_MAIN); extra = uri.getQueryParameter(QUERY_EXTRA);
for (int i = 0; i < main.length() / 6; i++) side = uri.getQueryParameter(QUERY_SIDE);
mList.add(main.substring(i * 6, i * 6 + 6));
} catch (Exception e) {
}
try { for (int i = 0; i < main.length() / 6; i++)
extra = uri.getQueryParameter(QUERY_EXTRA); mList.add(main.substring(i * 6, i * 6 + 6));
for (int i = 0; i < extra.length() / 6; i++)
eList.add(extra.substring(i * 6, i * 6 + 6));
} catch (Exception e) {
}
try {
side = uri.getQueryParameter(QUERY_SIDE);
for (int i = 0; i < side.length() / 6; i++)
sList.add(side.substring(i * 6, i * 6 + 6));
} catch (Exception e) {
}
for (int i = 0; i < extra.length() / 6; i++)
eList.add(extra.substring(i * 6, i * 6 + 6));
for (int i = 0; i < side.length() / 6; i++)
sList.add(side.substring(i * 6, i * 6 + 6));
break; break;
default: default:
try { main = uri.getQueryParameter(QUERY_MAIN_ALL);
main = uri.getQueryParameter(QUERY_MAIN_ALL); extra = uri.getQueryParameter(QUERY_EXTRA_ALL);
String[] mains = main.split(CARD_DIVIDE_ID); side = uri.getQueryParameter(QUERY_SIDE_ALL);
mList.addAll(Arrays.asList(mains));
} catch (Exception ignored) {
}
try { mains = main.split(CARD_DIVIDE_ID);
extra = uri.getQueryParameter(QUERY_EXTRA_ALL); mList.addAll(Arrays.asList(mains));
String[] extras = extra.split(CARD_DIVIDE_ID);
eList.addAll(Arrays.asList(extras));
} catch (Exception ignored) {
}
try { extras = extra.split(CARD_DIVIDE_ID);
side = uri.getQueryParameter(QUERY_SIDE_ALL); eList.addAll(Arrays.asList(extras));
String[] sides = side.split(CARD_DIVIDE_ID);
sList.addAll(Arrays.asList(sides)); sides = side.split(CARD_DIVIDE_ID);
} catch (Exception ignored) { sList.addAll(Arrays.asList(sides));
}
} }
for (String m : mList) { for (String m : mList) {
Log.e("DeckUU", "Main:" + m);
int[] idNum = toIdAndNum(m, version); int[] idNum = toIdAndNum(m, version);
if (idNum[0] > 0) { if (idNum[0] > 0) {
for (int i = 0; i < idNum[1]; i++) { for (int i = 0; i < idNum[1]; i++) {
...@@ -206,10 +177,10 @@ public class Deck implements Parcelable { ...@@ -206,10 +177,10 @@ public class Deck implements Parcelable {
int[] idNum; int[] idNum;
switch (protocol) { switch (protocol) {
case YGO_PROTOCOL_0: case YGO_DECK_PROTOCOL_0:
idNum = toIdAndNum0(m); idNum = toIdAndNum0(m);
break; break;
case YGO_PROTOCOL_1: case YGO_DECK_PROTOCOL_1:
idNum = toIdAndNum1(m); idNum = toIdAndNum1(m);
break; break;
default: default:
...@@ -222,7 +193,7 @@ public class Deck implements Parcelable { ...@@ -222,7 +193,7 @@ public class Deck implements Parcelable {
private int[] toIdAndNum1(String m) { private int[] toIdAndNum1(String m) {
//元素0为卡密,元素1为卡片数量 //元素0为卡密,元素1为卡片数量
int[] idNum = {0, 1}; int[] idNum = {0, 1};
idNum[0] = toId(m.substring(0, m.length() - 1),YGO_PROTOCOL_1); idNum[0] = toId(m.substring(0, m.length() - 1), YGO_DECK_PROTOCOL_1);
idNum[1] = Integer.parseInt(m.substring(m.length() - 1)); idNum[1] = Integer.parseInt(m.substring(m.length() - 1));
return idNum; return idNum;
} }
...@@ -236,9 +207,9 @@ public class Deck implements Parcelable { ...@@ -236,9 +207,9 @@ public class Deck implements Parcelable {
} catch (Exception e) { } catch (Exception e) {
} }
idNum[0] = toId(m.substring(0, m.length() - 2),YGO_PROTOCOL_0); idNum[0] = toId(m.substring(0, m.length() - 2), YGO_DECK_PROTOCOL_0);
} else { } else {
idNum[0] = toId(m,YGO_PROTOCOL_0); idNum[0] = toId(m, YGO_DECK_PROTOCOL_0);
} }
return idNum; return idNum;
} }
...@@ -385,9 +356,9 @@ public class Deck implements Parcelable { ...@@ -385,9 +356,9 @@ public class Deck implements Parcelable {
if (TextUtils.isEmpty(str)) return 0; if (TextUtils.isEmpty(str)) return 0;
try { try {
switch (version) { switch (version) {
case YGO_PROTOCOL_0: case YGO_DECK_PROTOCOL_0:
return Integer.parseInt(str); return Integer.parseInt(str);
case YGO_PROTOCOL_1: case YGO_DECK_PROTOCOL_1:
//如果需要返回40进制码: //如果需要返回40进制码:
return unId(str); return unId(str);
default: default:
......
...@@ -195,7 +195,7 @@ public abstract class HomeActivity extends BaseActivity implements NavigationVie ...@@ -195,7 +195,7 @@ public abstract class HomeActivity extends BaseActivity implements NavigationVie
@Override @Override
public void onJoinRoom(String host,int port,String password, int id) { public void onJoinRoom(String host,int port,String password, int id) {
if (id == ID_MAINACTIVITY) { if (id == ID_MAINACTIVITY) {
QuickjoinRoom(host,port,password); quickjoinRoom(host,port,password);
} }
} }
...@@ -617,16 +617,16 @@ public abstract class HomeActivity extends BaseActivity implements NavigationVie ...@@ -617,16 +617,16 @@ public abstract class HomeActivity extends BaseActivity implements NavigationVie
}); });
} }
private void QuickjoinRoom(String host,int port,String password) { public void quickjoinRoom(String host,int port,String password) {
String message; String message;
if (!TextUtils.isEmpty(host)) if (!TextUtils.isEmpty(host))
message = getString(R.string.quick_join) message = getString(R.string.quick_join)
+ "IP:" + host + "\nIP:" + host
+ "端口:" + port + "\n端口:" + port
+ "密码:" + password; + "\n密码:" + password;
else else
message = getString(R.string.quick_join) + "\"" + password + "\""; message = getString(R.string.quick_join) + "\"" + password + "\"";
DialogPlus dialog = new DialogPlus(this); DialogPlus dialog = new DialogPlus(this);
dialog.setTitle(R.string.question); dialog.setTitle(R.string.question);
......
package com.ourygo.assistant.base.listener;
/**
* Create By feihua On 2021/9/29
*/
public interface OnDeRoomListener {
void onDeRoom(String host,int port,String password,String exception);
}
...@@ -248,9 +248,9 @@ public class DuelAssistantService extends Service implements OnDuelAssistantList ...@@ -248,9 +248,9 @@ public class DuelAssistantService extends Service implements OnDuelAssistantList
String message; String message;
if (!TextUtils.isEmpty(host)) if (!TextUtils.isEmpty(host))
message = getString(R.string.quick_join) message = getString(R.string.quick_join)
+ "IP:" + host + "\nIP:" + host
+ "端口:" + port + "\n端口:" + port
+ "密码:" + password; + "\n密码:" + password;
else else
message = getString(R.string.quick_join) + "\"" + password + "\""; message = getString(R.string.quick_join) + "\"" + password + "\"";
tv_message.setText(message); tv_message.setText(message);
......
...@@ -2,14 +2,13 @@ package com.ourygo.assistant.util; ...@@ -2,14 +2,13 @@ package com.ourygo.assistant.util;
import android.content.Context; import android.content.Context;
import android.net.Uri;
import android.text.TextUtils; import android.text.TextUtils;
import com.ourygo.assistant.base.listener.OnClipChangedListener; import com.ourygo.assistant.base.listener.OnClipChangedListener;
import com.ourygo.assistant.base.listener.OnDeRoomListener;
import com.ourygo.assistant.base.listener.OnDuelAssistantListener; import com.ourygo.assistant.base.listener.OnDuelAssistantListener;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
...@@ -91,59 +90,33 @@ public class DuelAssistantManagement implements OnClipChangedListener { ...@@ -91,59 +90,33 @@ public class DuelAssistantManagement implements OnClipChangedListener {
int s1 = message.indexOf(m1); int s1 = message.indexOf(m1);
if (s1 == -1) if (s1 == -1)
s1 = message.indexOf(m2); s1 = message.indexOf(m2);
int start=message.lastIndexOf(Record.DECK_URL_PREFIX,s1); int start = message.lastIndexOf(Record.DECK_URL_PREFIX, s1);
if (start==-1) if (start == -1)
start=message.lastIndexOf(Record.HTTP_URL_PREFIX,s1); start = message.lastIndexOf(Record.HTTP_URL_PREFIX, s1);
if (start==-1) if (start == -1)
start=message.lastIndexOf(Record.HTTPS_URL_PREFIX,s1); start = message.lastIndexOf(Record.HTTPS_URL_PREFIX, s1);
onSaveDeck(message.substring(start + Record.DECK_URL_PREFIX.length()), true, id); if (start != -1)
onSaveDeck(message.substring(start + Record.DECK_URL_PREFIX.length()), true, id);
return true; return true;
} }
return false; return false;
} }
public boolean roomCheck(String message, int id) { public boolean roomCheck(String message, int id) {
int start = -1;
int end = -1;
start = message.indexOf(Record.ROOM_PREFIX);
if (start != -1) {
end = message.indexOf(Record.ROOM_END, start);
if (end != -1) {
message = message.substring(start, end);
JSONObject jsonObject = null;
try {
jsonObject = new JSONObject(message);
onJoinRoom(jsonObject.getString(Record.ARG_HOST), jsonObject.getInt(Record.ARG_PORT), jsonObject.getString(Record.ARG_PASSWORD), id);
return true;
} catch (JSONException e) {
e.printStackTrace();
}
}
}
String passwordPrefixKey = null;
for (String s : Record.PASSWORD_PREFIX) {
start = message.indexOf(s);
passwordPrefixKey = s;
if (start != -1) {
break;
}
}
if (start != -1) { if (message.contains("?" + Record.ARG_YGO_TYPE + "=" + Record.ARG_ROOM) || message.contains("&" + Record.ARG_YGO_TYPE + "=" + Record.ARG_ROOM)) {
//如果密码含有空格,则以空格结尾 String m1 = "?" + Record.ARG_YGO_TYPE + "=" + Record.ARG_ROOM;
end = message.indexOf(" ", start); String m2 = "&" + Record.ARG_YGO_TYPE + "=" + Record.ARG_ROOM;
//如果不含有空格则取片尾所有 int s1 = message.indexOf(m1);
if (end == -1) { if (s1 == -1)
end = message.length(); s1 = message.indexOf(m2);
} else { int start = message.lastIndexOf(Record.ROOM_URL_PREFIX, s1);
//如果只有密码前缀而没有密码内容则不跳转 if (start == -1)
if (end - start == passwordPrefixKey.length()) start = message.lastIndexOf(Record.HTTP_URL_PREFIX, s1);
return false; if (start == -1)
} start = message.lastIndexOf(Record.HTTPS_URL_PREFIX, s1);
onJoinRoom(null, 0, message.substring(start, end), id); onJoinRoom(message.substring(start + Record.DECK_URL_PREFIX.length()), id);
return true; return true;
} }
return false; return false;
...@@ -172,6 +145,14 @@ public class DuelAssistantManagement implements OnClipChangedListener { ...@@ -172,6 +145,14 @@ public class DuelAssistantManagement implements OnClipChangedListener {
return false; return false;
} }
private void onJoinRoom(String roomUrl, int id) {
YGODAUtil.deRoomListener(Uri.parse(roomUrl), (host, port, password, exception) -> {
if (TextUtils.isEmpty(exception)) {
onJoinRoom(host, port, password, id);
}
});
}
private void onJoinRoom(String host, int port, String password, int id) { private void onJoinRoom(String host, int port, String password, int id) {
int i = 0; int i = 0;
while (i < onDuelAssistantListenerList.size()) { while (i < onDuelAssistantListenerList.size()) {
......
...@@ -6,6 +6,9 @@ public class Record { ...@@ -6,6 +6,9 @@ public class Record {
//卡查关键字 //卡查关键字
public static final String[] CARD_SEARCH_KEY = new String[]{"?", "?"}; public static final String[] CARD_SEARCH_KEY = new String[]{"?", "?"};
public static final int YGO_ROOM_PROTOCOL_1=1;
//加房关键字 //加房关键字
public static final String[] PASSWORD_PREFIX = { public static final String[] PASSWORD_PREFIX = {
"M,", "m,", "M,", "m,",
...@@ -32,12 +35,18 @@ public class Record { ...@@ -32,12 +35,18 @@ public class Record {
//卡组url前缀 //卡组url前缀
public static final String DECK_URL_PREFIX = "ygo://deck"; public static final String DECK_URL_PREFIX = "ygo://deck";
public static final String ROOM_URL_PREFIX = "room://deck";
public static final String HTTP_URL_PREFIX = "http://"; public static final String HTTP_URL_PREFIX = "http://";
public static final String HTTPS_URL_PREFIX = "https://"; public static final String HTTPS_URL_PREFIX = "https://";
public static final String ARG_PORT = "port"; public static final String ARG_PORT = "po";
public static final String ARG_HOST = "host"; public static final String ARG_HOST = "h";
public static final String ARG_PASSWORD = "password"; public static final String ARG_PASSWORD = "pw";
public static final String ARG_PORT_ALL = "port";
public static final String ARG_HOST_ALL = "host";
public static final String ARG_PASSWORD_ALL = "password";
public static final String ARG_YGO_TYPE="ygotype"; public static final String ARG_YGO_TYPE="ygotype";
public static final String ARG_DECK="deck"; public static final String ARG_DECK="deck";
public static final String ARG_ROOM="deck";
} }
package com.ourygo.assistant.util;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.net.URLEncoder;
/**
* Create By feihua On 2021/9/29
*/
public class UrlUtil {
/**
* URLEncoder编码
*/
public static String enURL(String paramString) {
if (paramString == null || paramString.equals("")) {
return "";
}
try {
String str = new String(paramString.getBytes(), "UTF-8");
str = URLEncoder.encode(str, "UTF-8");
return str;
} catch (Exception localException) {
}
return "";
}
/**
* URLDecoder解码
*/
public static String deURL(String paramString) {
if (paramString == null || paramString.equals("")) {
return "";
}
try {
String url = new String(paramString.getBytes(), "UTF-8");
url = URLDecoder.decode(url, "UTF-8");
return url;
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return "";
}
}
package com.ourygo.assistant.util;
import static cn.garymb.ygomobile.Constants.QUERY_VERSION;
import static cn.garymb.ygomobile.Constants.QUERY_YGO_TYPE;
import android.net.Uri;
import com.ourygo.assistant.base.listener.OnDeRoomListener;
/**
* Create By feihua On 2021/9/29
*/
public class YGODAUtil {
public static void deRoomListener(Uri uri, OnDeRoomListener onDeRoomListener){
String host = "", password = "";
int port = 0;
int version = Record.YGO_ROOM_PROTOCOL_1;
try {
String ygoType = uri.getQueryParameter(QUERY_YGO_TYPE);
if (ygoType.equals(Record.ARG_ROOM)) {
version = Integer.parseInt(uri.getQueryParameter(QUERY_VERSION));
}
} catch (Exception exception) {
onDeRoomListener.onDeRoom(null,-1,null,"非加房协议");
}
switch (version) {
case Record.YGO_ROOM_PROTOCOL_1:
try {
host = UrlUtil.deURL(uri.getQueryParameter(Record.ARG_HOST));
} catch (Exception ignored) {
}
try {
port = Integer.parseInt(UrlUtil.deURL(uri.getQueryParameter(Record.ARG_PORT)));
} catch (Exception ignored) {
}
try {
password = UrlUtil.deURL(uri.getQueryParameter(Record.ARG_PASSWORD));
} catch (Exception ignored) {
}
break;
}
onDeRoomListener.onDeRoom(host,port,password,null);
}
}
...@@ -153,7 +153,7 @@ ...@@ -153,7 +153,7 @@
<string name="no_share_app">공유할 앱이 없습니다.</string> <string name="no_share_app">공유할 앱이 없습니다.</string>
<string name="intput_room_name">비밀번호를 입력하세요. (선택 사항)</string> <string name="intput_room_name">비밀번호를 입력하세요. (선택 사항)</string>
<string name="join">입장</string> <string name="join">입장</string>
<string name="quick_join">게임 입장\"</string> <string name="quick_join">게임 입장</string>
<string name="join_game">게임 입장</string> <string name="join_game">게임 입장</string>
<string name="settings_game_sensor_refresh">인터페이스 새로 고침</string> <string name="settings_game_sensor_refresh">인터페이스 새로 고침</string>
<string name="label_pendulum">펜듈럼 스케일</string> <string name="label_pendulum">펜듈럼 스케일</string>
......
...@@ -159,7 +159,7 @@ ...@@ -159,7 +159,7 @@
<string name="no_share_app">没有找到分享应用</string> <string name="no_share_app">没有找到分享应用</string>
<string name="intput_room_name">输入密码(可不填)</string> <string name="intput_room_name">输入密码(可不填)</string>
<string name="join">加入</string> <string name="join">加入</string>
<string name="quick_join">加入房间\"</string> <string name="quick_join">加入房间</string>
<string name="join_game">进入游戏</string> <string name="join_game">进入游戏</string>
<string name="settings_game_sensor_refresh">摇一摇刷新界面</string> <string name="settings_game_sensor_refresh">摇一摇刷新界面</string>
<string name="label_pendulum">灵摆刻度</string> <string name="label_pendulum">灵摆刻度</string>
......
...@@ -160,7 +160,7 @@ ...@@ -160,7 +160,7 @@
<string name="no_share_app">no find share app</string> <string name="no_share_app">no find share app</string>
<string name="intput_room_name">Input room name</string> <string name="intput_room_name">Input room name</string>
<string name="join">join</string> <string name="join">join</string>
<string name="quick_join">join game\"</string> <string name="quick_join">join game</string>
<string name="join_game">Join game</string> <string name="join_game">Join game</string>
<string name="settings_game_sensor_refresh">Sensor Refresh Game</string> <string name="settings_game_sensor_refresh">Sensor Refresh Game</string>
<string name="label_pendulum">Pendulum scale</string> <string name="label_pendulum">Pendulum scale</string>
......
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