Commit 2e607fc1 authored by feihuaduo's avatar feihuaduo

优化卡组url

parent fa4d7e14
......@@ -74,10 +74,10 @@
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<!--android:pathPrefix="/deck"-->
<data
android:host="m.ygomobile.com"
android:pathPrefix="/deck"
android:scheme="ygomobile"/>
android:host="deck"
android:scheme="ygo"/>
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
......
......@@ -185,8 +185,8 @@ public interface Constants {
*/
String PATH_DECK = "/deck";
String SCHEME_HTTP = "http";
String SCHEME_APP = "ygomobile";
String URI_HOST = "m.ygomobile.com";
String SCHEME_APP = "ygo";
String URI_HOST = "deck";
String QUERY_YDK = "ydk";
String QUERY_NAME = "name";
......
......@@ -150,11 +150,11 @@ public class GameUriManager {
}
} else {
String host = uri.getHost();
if (!Constants.URI_HOST.equalsIgnoreCase(host)) {
return;
}
// if (!Constants.URI_HOST.equalsIgnoreCase(host)) {
// return;
// }
String path = uri.getPath();
if (PATH_DECK.equals(path)) {
if (Constants.URI_HOST.equals(host)) {
String name = uri.getQueryParameter(QUERY_NAME);
if (!TextUtils.isEmpty(name)) {
doOpenPath(name);
......@@ -165,19 +165,20 @@ public class GameUriManager {
startdeck.putExtra(Intent.EXTRA_TEXT, file.getAbsolutePath());
activity.startActivity(startdeck);
}
} else if (PATH_ROOM.equals(path)) {
try {
YGOGameOptions options = new YGOGameOptions();
options.mServerAddr = uri.getQueryParameter(Constants.QUERY_HOST);
options.mUserName = uri.getQueryParameter(Constants.QUERY_USER);
options.mPort = Integer.parseInt(uri.getQueryParameter(Constants.QUERY_PORT));
options.mRoomName = uri.getQueryParameter(Constants.QUERY_ROOM);
YGOStarter.startGame(getActivity(), options);
} catch (Exception e) {
Toast.makeText(getActivity(), R.string.start_game_error, Toast.LENGTH_SHORT).show();
activity.finish();
}
}
// else if (PATH_ROOM.equals(path)) {
// try {
// YGOGameOptions options = new YGOGameOptions();
// options.mServerAddr = uri.getQueryParameter(Constants.QUERY_HOST);
// options.mUserName = uri.getQueryParameter(Constants.QUERY_USER);
// options.mPort = Integer.parseInt(uri.getQueryParameter(Constants.QUERY_PORT));
// options.mRoomName = uri.getQueryParameter(Constants.QUERY_ROOM);
// YGOStarter.startGame(getActivity(), options);
// } catch (Exception e) {
// Toast.makeText(getActivity(), R.string.start_game_error, Toast.LENGTH_SHORT).show();
// activity.finish();
// }
// }
}
}
......
......@@ -37,7 +37,7 @@ public class Deck implements Parcelable {
String extra = uri.getQueryParameter(QUERY_EXTRA);
String side = uri.getQueryParameter(QUERY_SIDE);
if (!TextUtils.isEmpty(main)) {
String[] mains = main.split(",");
String[] mains = main.split("_");
for (String m : mains) {
int []idNum=toIdAndNum(m);
if (idNum[0] > 0) {
......@@ -48,7 +48,7 @@ public class Deck implements Parcelable {
}
}
if (!TextUtils.isEmpty(extra)) {
String[] extras = extra.split(",");
String[] extras = extra.split("_");
for (String m : extras) {
int []idNum=toIdAndNum(m);
if (idNum[0] > 0) {
......@@ -59,7 +59,7 @@ public class Deck implements Parcelable {
}
}
if (!TextUtils.isEmpty(side)) {
String[] sides = side.split(",");
String[] sides = side.split("_");
for (String m : sides) {
int []idNum=toIdAndNum(m);
if (idNum[0] > 0) {
......@@ -102,8 +102,8 @@ public class Deck implements Parcelable {
public Uri toUri(String host) {
Uri.Builder uri = Uri.parse(host + "://")
.buildUpon()
.authority(Constants.URI_HOST)
.path(Constants.PATH_DECK);
.authority(Constants.URI_HOST);
//.path(Constants.PATH_DECK);
if (!TextUtils.isEmpty(name)) {
uri.appendQueryParameter(Constants.QUERY_NAME, name);
}
......@@ -118,10 +118,10 @@ public class Deck implements Parcelable {
for (int i = 0; i < ids.size(); i++) {
Integer id = ids.get(i);
if (i > 0) {
builder.append(",");
builder.append("_");
}
if (id > 0) {
builder.append(id);
builder.append(compressedId(id));
//如果是最后一张就不用对比下张卡
if(i!=ids.size()-1) {
int id1 = ids.get(i + 1);
......@@ -151,6 +151,15 @@ public class Deck implements Parcelable {
return builder.toString();
}
//压缩卡密,目前直接转换为16进制
private String compressedId(int id){
return Integer.toHexString(id);
}
//解析卡密,目前直接16进制转换为10进制
private int unId(String id){
return Integer.parseInt(id,16);
}
public String getName() {
return name;
......@@ -187,7 +196,7 @@ public class Deck implements Parcelable {
private int toId(String str) {
if (TextUtils.isEmpty(str)) return 0;
try {
return Integer.parseInt(str);
return unId(str);
} catch (Exception e) {
return 0;
}
......
......@@ -58,7 +58,7 @@ public class ServiceDuelAssistant extends Service {
private final static String CMD_NAME = "CMD";
private final static String CMD_START_GAME = "CMD : START GAME";
private final static String CMD_STOP_SERVICE = "CMD : STOP SERVICE";
private final static String DECK_URL_PREFIX = "ygomobile://m.ygomobile.com/";
private final static String DECK_URL_PREFIX = Constants.SCHEME_APP+"://"+Constants.URI_HOST;
//悬浮窗显示的时间
private static final int TIME_DIS_WINDOW = 3000;
......
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