Commit a12cab99 authored by feihuaduo's avatar feihuaduo

主界面剪贴板检测

parent 4cf8824c
...@@ -158,16 +158,16 @@ ...@@ -158,16 +158,16 @@
android:screenOrientation="portrait" android:screenOrientation="portrait"
android:theme="@style/AppTheme" /> android:theme="@style/AppTheme" />
<activity <activity
android:name="cn.garymb.ygomobile.ui.mycard.MyCardActivity" android:name="cn.garymb.ygomobile.mycard.MyCardActivity"
android:configChanges="orientation|keyboardHidden|navigation|screenSize" android:configChanges="orientation|keyboardHidden|navigation|screenSize"
android:launchMode="singleTop" android:launchMode="singleTop"
android:theme="@style/AppTheme.Mycard" android:theme="@style/AppTheme.Mycard"
android:windowSoftInputMode="stateAlwaysHidden|adjustResize" /> android:windowSoftInputMode="stateAlwaysHidden|adjustResize" />
<activity <activity
android:name="cn.garymb.ygomobile.ui.mycard.mcchat.McchatActivity" android:name="cn.garymb.ygomobile.mycard.mcchat.ui.activity.McChatActivity"
android:label="@string/app_name" android:label="@string/app_name"
android:windowSoftInputMode="stateHidden|adjustResize" /> android:windowSoftInputMode="stateHidden|adjustResize" />
<activity android:name="cn.garymb.ygomobile.ui.mycard.mcchat.SplashActivity" /> <activity android:name="cn.garymb.ygomobile.mycard.mcchat.ui.activity.ChatSplashActivity" />
<activity android:name="cn.garymb.ygomobile.ui.activities.FileLogActivity" /> <activity android:name="cn.garymb.ygomobile.ui.activities.FileLogActivity" />
<activity android:name="cn.garymb.ygomobile.ui.activities.PermissionsActivity" /> <activity android:name="cn.garymb.ygomobile.ui.activities.PermissionsActivity" />
...@@ -194,7 +194,7 @@ ...@@ -194,7 +194,7 @@
<!-- 为防止Service被系统回收,可以尝试通过提高服务的优先级解决,1000是最高优先级,数字越小,优先级越低 --> <!-- 为防止Service被系统回收,可以尝试通过提高服务的优先级解决,1000是最高优先级,数字越小,优先级越低 -->
<!--android:priority="1000"--> <!--android:priority="1000"-->
<service <service
android:name="cn.garymb.ygomobile.ui.plus.ServiceDuelAssistant" android:name="cn.garymb.ygomobile.ourygo.service.DuelAssistantService"
android:priority="1000" /> android:priority="1000" />
</application> </application>
......
package cn.garymb.ygomobile.ui.mycard; package cn.garymb.ygomobile.mycard;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.app.Activity; import android.app.Activity;
......
package cn.garymb.ygomobile.ui.mycard; package cn.garymb.ygomobile.mycard;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.annotation.TargetApi; import android.annotation.TargetApi;
...@@ -38,7 +38,7 @@ import cn.garymb.ygomobile.lite.BuildConfig; ...@@ -38,7 +38,7 @@ import cn.garymb.ygomobile.lite.BuildConfig;
import cn.garymb.ygomobile.lite.R; import cn.garymb.ygomobile.lite.R;
import cn.garymb.ygomobile.ui.activities.BaseActivity; import cn.garymb.ygomobile.ui.activities.BaseActivity;
import cn.garymb.ygomobile.ui.cards.DeckManagerActivity; import cn.garymb.ygomobile.ui.cards.DeckManagerActivity;
import cn.garymb.ygomobile.ui.mycard.mcchat.SplashActivity; import cn.garymb.ygomobile.mycard.mcchat.ui.activity.ChatSplashActivity;
public class MyCardActivity extends BaseActivity implements MyCard.MyCardListener, NavigationView.OnNavigationItemSelectedListener { public class MyCardActivity extends BaseActivity implements MyCard.MyCardListener, NavigationView.OnNavigationItemSelectedListener {
...@@ -310,7 +310,7 @@ public class MyCardActivity extends BaseActivity implements MyCard.MyCardListene ...@@ -310,7 +310,7 @@ public class MyCardActivity extends BaseActivity implements MyCard.MyCardListene
mWebViewPlus.loadUrl(mMyCard.getBBSUrl()); mWebViewPlus.loadUrl(mMyCard.getBBSUrl());
break; break;
case R.id.action_chat: case R.id.action_chat:
startActivity(new Intent(MyCardActivity.this, SplashActivity.class)); startActivity(new Intent(MyCardActivity.this, ChatSplashActivity.class));
break; break;
default: default:
return false; return false;
......
package cn.garymb.ygomobile.ui.mycard; package cn.garymb.ygomobile.mycard;
import android.content.Context; import android.content.Context;
import android.util.AttributeSet; import android.util.AttributeSet;
......
package cn.garymb.ygomobile.ui.mycard; package cn.garymb.ygomobile.mycard;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.content.Context; import android.content.Context;
......
package cn.garymb.ygomobile.ui.mycard.mcchat.adapter; package cn.garymb.ygomobile.mycard.mcchat.adapter;
import android.app.Activity; import android.app.Activity;
import android.content.Context; import android.content.Context;
...@@ -16,10 +16,11 @@ import androidx.recyclerview.widget.RecyclerView; ...@@ -16,10 +16,11 @@ import androidx.recyclerview.widget.RecyclerView;
import java.util.List; import java.util.List;
import cn.garymb.ygomobile.lite.R; import cn.garymb.ygomobile.lite.R;
import cn.garymb.ygomobile.ui.mycard.mcchat.ChatMessage; import cn.garymb.ygomobile.mycard.mcchat.bean.ChatMessage;
import cn.garymb.ygomobile.ui.mycard.mcchat.management.UserManagement; import cn.garymb.ygomobile.mycard.mcchat.management.UserManagement;
import cn.garymb.ygomobile.ui.mycard.mcchat.util.ImageUtil; import cn.garymb.ygomobile.mycard.mcchat.util.ImageUtil;
import cn.garymb.ygomobile.ui.mycard.mcchat.util.Util; import cn.garymb.ygomobile.utils.YGOUtil;
import cn.garymb.ygomobile.utils.YGOUtil;
public class ChatAdapter extends RecyclerView.Adapter<ChatAdapter.ViewHolder> { public class ChatAdapter extends RecyclerView.Adapter<ChatAdapter.ViewHolder> {
...@@ -84,8 +85,8 @@ public class ChatAdapter extends RecyclerView.Adapter<ChatAdapter.ViewHolder> { ...@@ -84,8 +85,8 @@ public class ChatAdapter extends RecyclerView.Adapter<ChatAdapter.ViewHolder> {
@Override @Override
public boolean onLongClick(View p1) { public boolean onLongClick(View p1) {
Util.fzMessage(context, cm.getMessage()); YGOUtil.copyMessage(context, cm.getMessage());
Util.show(context, "已复制到剪贴板"); YGOUtil.show( "已复制到剪贴板");
// TODO: Implement this method // TODO: Implement this method
return true; return true;
} }
...@@ -94,7 +95,7 @@ public class ChatAdapter extends RecyclerView.Adapter<ChatAdapter.ViewHolder> { ...@@ -94,7 +95,7 @@ public class ChatAdapter extends RecyclerView.Adapter<ChatAdapter.ViewHolder> {
@Override @Override
public void onClick(View p1) { public void onClick(View p1) {
Util.closeKeyboard((Activity) context); YGOUtil.closeKeyboard((Activity) context);
// TODO: Implement this method // TODO: Implement this method
} }
}); });
......
package cn.garymb.ygomobile.ui.mycard.mcchat; package cn.garymb.ygomobile.mycard.mcchat.base;
import org.jivesoftware.smack.packet.Message; import org.jivesoftware.smack.packet.Message;
......
package cn.garymb.ygomobile.ui.mycard.mcchat; package cn.garymb.ygomobile.mycard.mcchat.bean;
import org.jivesoftware.smack.packet.Message; import org.jivesoftware.smack.packet.Message;
import cn.garymb.ygomobile.ui.mycard.mcchat.management.ServiceManagement; import cn.garymb.ygomobile.mycard.mcchat.management.ServiceManagement;
public class ChatMessage { public class ChatMessage {
......
package cn.garymb.ygomobile.ui.mycard.mcchat.management; package cn.garymb.ygomobile.mycard.mcchat.management;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.os.Handler; import android.os.Handler;
...@@ -22,9 +22,9 @@ import java.io.IOException; ...@@ -22,9 +22,9 @@ import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import cn.garymb.ygomobile.ui.mycard.mcchat.ChatListener; import cn.garymb.ygomobile.mycard.mcchat.base.ChatListener;
import cn.garymb.ygomobile.ui.mycard.mcchat.ChatMessage; import cn.garymb.ygomobile.mycard.mcchat.bean.ChatMessage;
import cn.garymb.ygomobile.ui.mycard.mcchat.util.TaxiConnectionListener; import cn.garymb.ygomobile.mycard.mcchat.util.TaxiConnectionListener;
import cn.garymb.ygomobile.utils.FileLogUtil; import cn.garymb.ygomobile.utils.FileLogUtil;
public class ServiceManagement { public class ServiceManagement {
......
package cn.garymb.ygomobile.ui.mycard.mcchat.management; package cn.garymb.ygomobile.mycard.mcchat.management;
public class UserManagement { public class UserManagement {
private static UserManagement um = new UserManagement(); private static UserManagement um = new UserManagement();
......
package cn.garymb.ygomobile.ui.mycard.mcchat; package cn.garymb.ygomobile.mycard.mcchat.ui.activity;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.app.Activity; import android.app.Activity;
...@@ -20,12 +20,13 @@ import org.jivesoftware.smack.XMPPException; ...@@ -20,12 +20,13 @@ import org.jivesoftware.smack.XMPPException;
import java.io.IOException; import java.io.IOException;
import cn.garymb.ygomobile.lite.R; import cn.garymb.ygomobile.lite.R;
import cn.garymb.ygomobile.ui.mycard.MyCardActivity; import cn.garymb.ygomobile.mycard.MyCardActivity;
import cn.garymb.ygomobile.ui.mycard.mcchat.management.ServiceManagement; import cn.garymb.ygomobile.mycard.mcchat.management.ServiceManagement;
import cn.garymb.ygomobile.ui.mycard.mcchat.management.UserManagement; import cn.garymb.ygomobile.mycard.mcchat.management.UserManagement;
import cn.garymb.ygomobile.ui.mycard.mcchat.util.Util;
public class SplashActivity extends Activity { import cn.garymb.ygomobile.utils.YGOUtil;
public class ChatSplashActivity extends Activity {
ServiceManagement su; ServiceManagement su;
ProgressBar sp_jz; ProgressBar sp_jz;
...@@ -43,10 +44,10 @@ public class SplashActivity extends Activity { ...@@ -43,10 +44,10 @@ public class SplashActivity extends Activity {
su.setIsConnected(false); su.setIsConnected(false);
sp_jz.setVisibility(View.GONE); sp_jz.setVisibility(View.GONE);
sp_tv.setText(getString(R.string.logining_failed)); sp_tv.setText(getString(R.string.logining_failed));
Util.show(SplashActivity.this, getString(R.string.failed_reason) + msg.obj); YGOUtil.show(YGOUtil.s(R.string.failed_reason) + msg.obj);
break; break;
case 1: case 1:
startActivity(new Intent(SplashActivity.this, McchatActivity.class)); startActivity(new Intent(ChatSplashActivity.this, McChatActivity.class));
finish(); finish();
break; break;
case 2: case 2:
...@@ -65,7 +66,7 @@ public class SplashActivity extends Activity { ...@@ -65,7 +66,7 @@ public class SplashActivity extends Activity {
case 5: case 5:
/*sp_jz.setVisibility(View.GONE); /*sp_jz.setVisibility(View.GONE);
sp_tv.setText("用户名或密码为空");*/ sp_tv.setText("用户名或密码为空");*/
startActivity(new Intent(SplashActivity.this, MyCardActivity.class)); startActivity(new Intent(ChatSplashActivity.this, MyCardActivity.class));
finish(); finish();
break; break;
......
package cn.garymb.ygomobile.ui.mycard.mcchat; package cn.garymb.ygomobile.mycard.mcchat.ui.activity;
import android.app.Activity; import android.app.Activity;
import android.os.Bundle; import android.os.Bundle;
...@@ -15,12 +15,13 @@ import androidx.recyclerview.widget.RecyclerView; ...@@ -15,12 +15,13 @@ import androidx.recyclerview.widget.RecyclerView;
import org.jivesoftware.smack.packet.Message; import org.jivesoftware.smack.packet.Message;
import cn.garymb.ygomobile.lite.R; import cn.garymb.ygomobile.lite.R;
import cn.garymb.ygomobile.ui.mycard.mcchat.adapter.ChatAdapter; import cn.garymb.ygomobile.mycard.mcchat.base.ChatListener;
import cn.garymb.ygomobile.ui.mycard.mcchat.management.ServiceManagement; import cn.garymb.ygomobile.mycard.mcchat.adapter.ChatAdapter;
import cn.garymb.ygomobile.ui.mycard.mcchat.management.UserManagement; import cn.garymb.ygomobile.mycard.mcchat.management.ServiceManagement;
import cn.garymb.ygomobile.ui.mycard.mcchat.util.Util; import cn.garymb.ygomobile.mycard.mcchat.management.UserManagement;
import cn.garymb.ygomobile.utils.YGOUtil;
public class McchatActivity extends Activity implements ChatListener { public class McChatActivity extends Activity implements ChatListener {
private EditText main_send_message; private EditText main_send_message;
private ImageButton main_send; private ImageButton main_send;
...@@ -85,7 +86,7 @@ public class McchatActivity extends Activity implements ChatListener { ...@@ -85,7 +86,7 @@ public class McchatActivity extends Activity implements ChatListener {
su = ServiceManagement.getDx(); su = ServiceManagement.getDx();
cadp = new ChatAdapter(this, su.getData()); cadp = new ChatAdapter(this, su.getData());
su.addListener(this); su.addListener(this);
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(McchatActivity.this, LinearLayoutManager.VERTICAL, false); LinearLayoutManager linearLayoutManager = new LinearLayoutManager(McChatActivity.this, LinearLayoutManager.VERTICAL, false);
linearLayoutManager.setStackFromEnd(true); //关键 设置此项,当软键盘弹出时,布局会自动顶上去,在结合AndroidManifest.xml设置属性 linearLayoutManager.setStackFromEnd(true); //关键 设置此项,当软键盘弹出时,布局会自动顶上去,在结合AndroidManifest.xml设置属性
main_rec.setLayoutManager(linearLayoutManager); main_rec.setLayoutManager(linearLayoutManager);
main_rec.setAdapter(cadp); main_rec.setAdapter(cadp);
...@@ -101,13 +102,13 @@ public class McchatActivity extends Activity implements ChatListener { ...@@ -101,13 +102,13 @@ public class McchatActivity extends Activity implements ChatListener {
public void onClick(View p1) { public void onClick(View p1) {
String message = main_send_message.getText().toString().trim(); String message = main_send_message.getText().toString().trim();
if (message.equals("")) { if (message.equals("")) {
Util.show(McchatActivity.this, getString(R.string.noting_to_send)); YGOUtil.show( getString(R.string.noting_to_send));
} else { } else {
try { try {
su.sendMessage(message); su.sendMessage(message);
main_send_message.setText(""); main_send_message.setText("");
} catch (Exception e) { } catch (Exception e) {
Util.show(McchatActivity.this, getString(R.string.sending_failed)); YGOUtil.show( getString(R.string.sending_failed));
} }
} }
// TODO: Implement this method // TODO: Implement this method
......
package cn.garymb.ygomobile.ui.mycard.mcchat.util; package cn.garymb.ygomobile.mycard.mcchat.util;
import android.content.Context; import android.content.Context;
import android.graphics.ColorFilter;
import android.graphics.ColorMatrix; import android.graphics.ColorMatrix;
import android.graphics.ColorMatrixColorFilter; import android.graphics.ColorMatrixColorFilter;
import android.net.Uri; import android.net.Uri;
import android.util.Log;
import android.widget.ImageView; import android.widget.ImageView;
import com.bumptech.glide.Glide; import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy; import com.bumptech.glide.load.engine.DiskCacheStrategy;
import java.util.HashMap;
import java.util.Map;
import cn.garymb.ygomobile.lite.R; import cn.garymb.ygomobile.lite.R;
public class ImageUtil { public class ImageUtil {
......
package cn.garymb.ygomobile.ui.mycard.mcchat.util; package cn.garymb.ygomobile.mycard.mcchat.util;
/** /**
* 连接监听类 * 连接监听类
...@@ -12,8 +12,8 @@ import org.jivesoftware.smack.XMPPConnection; ...@@ -12,8 +12,8 @@ import org.jivesoftware.smack.XMPPConnection;
import java.util.Timer; import java.util.Timer;
import java.util.TimerTask; import java.util.TimerTask;
import cn.garymb.ygomobile.ui.mycard.mcchat.management.ServiceManagement; import cn.garymb.ygomobile.mycard.mcchat.management.ServiceManagement;
import cn.garymb.ygomobile.ui.mycard.mcchat.management.UserManagement; import cn.garymb.ygomobile.mycard.mcchat.management.UserManagement;
public class TaxiConnectionListener implements ConnectionListener { public class TaxiConnectionListener implements ConnectionListener {
......
package cn.garymb.ygomobile.ui.mycard.mcchat.view; package cn.garymb.ygomobile.mycard.mcchat.view;
import android.content.Context; import android.content.Context;
import android.graphics.Bitmap; import android.graphics.Bitmap;
......
package cn.garymb.ygomobile.ourygo.base;
public interface OnDuelClipBoardListener {
void onDeckCode(String deckCode,boolean isDebounce);
void onDeckUrl(String deckUrl,boolean isDebounce);
void onCardQuery(String cardSearchMessage,boolean isDebounce);
void onDuelPassword(String password,boolean isDebounce);
boolean isEffective();
}
package cn.garymb.ygomobile.ourygo.util;
import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.Context;
import android.text.TextUtils;
import android.util.Log;
import java.util.ArrayList;
import java.util.List;
import cn.garymb.ygomobile.App;
import cn.garymb.ygomobile.Constants;
import cn.garymb.ygomobile.ourygo.base.OnDuelClipBoardListener;
public class DuelAssistantManagement {
private static final DuelAssistantManagement ourInstance = new DuelAssistantManagement();
private String lastMessage;
private String cardSearchMessage;
public static DuelAssistantManagement getInstance() {
return ourInstance;
}
//是否启动助手
private boolean isStart;
private boolean isListener;
private ClipboardManager clipboardManager;
//其他单独监听是否能触发
private boolean isOtherListener;
private List<OnDuelClipBoardListener> onDuelClipBoardListenerList;
//卡查关键字
public static final String[] cardSearchKey = new String[]{"?", "?"};
//卡组url前缀
private final static String DECK_URL_PREFIX = Constants.SCHEME_APP+"://"+Constants.URI_HOST;
//卡组复制
public static final String[] DeckTextKey = new String[]{"#main"};
//加房关键字
public static final String[] passwordPrefix = {
"M,", "m,",
"T,",
"PR,", "pr,",
"AI,", "ai,",
"LF2,", "lf2,",
"M#", "m#",
"T#", "t#",
"PR#", "pr#",
"NS#", "ns#",
"S#", "s#",
"AI#", "ai#",
"LF2#", "lf2#",
"R#", "r#"
};
private DuelAssistantManagement() {
isStart=false;
isOtherListener=true;
isListener=true;
onDuelClipBoardListenerList =new ArrayList<>();
clipboardManager = (ClipboardManager) App.get().getSystemService(Context.CLIPBOARD_SERVICE);
if (clipboardManager!=null)
clipboardManager.addPrimaryClipChangedListener(onPrimaryClipChangedListener);
}
public boolean isStart() {
return isStart;
}
public void setStart(boolean start) {
isStart = start;
}
public boolean isListener() {
return isListener;
}
public void setListener(boolean listener) {
isListener = listener;
}
public void addListener(OnDuelClipBoardListener onDuelClipBoardListener){
onDuelClipBoardListenerList.add(onDuelClipBoardListener);
}
public void removeListener(OnDuelClipBoardListener onDuelClipBoardListener){
onDuelClipBoardListenerList.remove(onDuelClipBoardListener);
}
public boolean isOtherListener() {
return isOtherListener;
}
public void setOtherListener(boolean otherListener) {
isOtherListener = otherListener;
}
public String getCardSearchMessage() {
return cardSearchMessage;
}
public void setCardSearchMessage(String cardSearchMessage) {
this.cardSearchMessage = cardSearchMessage;
}
ClipboardManager.OnPrimaryClipChangedListener onPrimaryClipChangedListener=new ClipboardManager.OnPrimaryClipChangedListener() {
@Override
public void onPrimaryClipChanged() {
if (!isListener)
return;
ClipData clipData = clipboardManager.getPrimaryClip();
if (clipData == null)
return;
CharSequence cs = clipData.getItemAt(0).getText();
final String clipMessage;
if (cs != null) {
clipMessage = cs.toString();
} else {
clipMessage = null;
}
//如果复制的内容为空则不执行下面的代码
if (TextUtils.isEmpty(clipMessage)) {
return;
}
checkMessage(clipMessage,null);
}
};
/**
* 检查复制内容
* @param clipMessage 复制内容
*/
public void checkMessage(String clipMessage,OnDuelClipBoardListener onDuelClipBoardListener1) {
if (TextUtils.isEmpty(clipMessage) )
return;
boolean isDebounce;
if (clipMessage.equals(lastMessage))
isDebounce=true;
else
isDebounce=false;
lastMessage=clipMessage;
//如果复制的内容是多行作为卡组去判断
if (clipMessage.contains("\n")) {
for (String s : DeckTextKey) {
//只要包含其中一个关键字就视为卡组
if (clipMessage.contains(s)) {
if (onDuelClipBoardListener1==null) {
isOtherListener=false;
for (int i = 0; i < onDuelClipBoardListenerList.size(); i++) {
OnDuelClipBoardListener onDuelClipBoardListener = onDuelClipBoardListenerList.get(i);
if (onDuelClipBoardListener.isEffective()) {
onDuelClipBoardListener.onDeckCode(clipMessage, isDebounce);
} else {
onDuelClipBoardListenerList.remove(i);
i--;
}
}
isOtherListener=true;
}else if (isOtherListener){
onDuelClipBoardListener1.onDeckCode(clipMessage, isDebounce);
}
return;
}
}
return;
}
//如果是卡组url
int deckStart = clipMessage.indexOf(DECK_URL_PREFIX);
if (deckStart != -1) {
if (onDuelClipBoardListener1==null) {
isOtherListener=false;
for (int i = 0; i < onDuelClipBoardListenerList.size(); i++) {
OnDuelClipBoardListener onDuelClipBoardListener = onDuelClipBoardListenerList.get(i);
if (onDuelClipBoardListener.isEffective()) {
onDuelClipBoardListener.onDeckUrl(clipMessage.substring(deckStart + DECK_URL_PREFIX.length()), isDebounce);
} else {
onDuelClipBoardListenerList.remove(i);
i--;
}
}
isOtherListener=true;
}else if (isOtherListener) {
onDuelClipBoardListener1.onDeckUrl(clipMessage.substring(deckStart + DECK_URL_PREFIX.length()), isDebounce);
}
return;
}
int start = -1;
int end;
String passwordPrefixKey = null;
for (String s : passwordPrefix) {
start = clipMessage.indexOf(s);
passwordPrefixKey = s;
if (start != -1) {
break;
}
}
if (start != -1) {
//如果密码含有空格,则以空格结尾
end = clipMessage.indexOf(" ", start);
//如果不含有空格则取片尾所有
if (end == -1) {
end = clipMessage.length();
} else {
//如果只有密码前缀而没有密码内容则不跳转
if (end - start == passwordPrefixKey.length())
return;
}
if (onDuelClipBoardListener1==null) {
isOtherListener=false;
for (int i = 0; i < onDuelClipBoardListenerList.size(); i++) {
OnDuelClipBoardListener onDuelClipBoardListener = onDuelClipBoardListenerList.get(i);
if (onDuelClipBoardListener.isEffective()) {
onDuelClipBoardListener.onDuelPassword(clipMessage.substring(start, end), isDebounce);
} else {
onDuelClipBoardListenerList.remove(i);
i--;
}
}
isOtherListener=true;
}else if (isOtherListener) {
onDuelClipBoardListener1.onDuelPassword(clipMessage.substring(start, end), isDebounce);
}
} else {
for (String s : cardSearchKey) {
int cardSearchStart = clipMessage.indexOf(s);
if (cardSearchStart != -1) {
//卡查内容
cardSearchMessage = clipMessage.substring(cardSearchStart + s.length(), clipMessage.length());
//如果复制的文本里带?号后面没有内容则不跳转
if (TextUtils.isEmpty(cardSearchMessage)) {
return;
}
//如果卡查内容包含“=”并且复制的内容包含“.”不卡查
if (cardSearchMessage.contains("=") && clipMessage.contains(".")) {
return;
}
if (onDuelClipBoardListener1==null) {
isOtherListener=false;
for (int i = 0; i < onDuelClipBoardListenerList.size(); i++) {
OnDuelClipBoardListener onDuelClipBoardListener = onDuelClipBoardListenerList.get(i);
if (onDuelClipBoardListener.isEffective()) {
onDuelClipBoardListener.onCardQuery(cardSearchMessage, isDebounce);
} else {
onDuelClipBoardListenerList.remove(i);
i--;
}
}
isOtherListener=true;
}else if (isOtherListener) {
onDuelClipBoardListener1.onCardQuery(cardSearchMessage, isDebounce);
}
}
}
}
}
}
...@@ -10,8 +10,10 @@ import android.os.Build; ...@@ -10,8 +10,10 @@ import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.os.Looper; import android.os.Looper;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.Log;
import android.view.MenuItem; import android.view.MenuItem;
import android.view.View; import android.view.View;
import android.widget.Button;
import android.widget.Toast; import android.widget.Toast;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
...@@ -20,18 +22,36 @@ import androidx.appcompat.app.ActionBar; ...@@ -20,18 +22,36 @@ import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar; import androidx.appcompat.widget.Toolbar;
import com.feihua.dialogutils.util.DialogUtils;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException; import java.io.IOException;
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.ourygo.base.OnDuelClipBoardListener;
import cn.garymb.ygomobile.ourygo.service.DuelAssistantService;
import cn.garymb.ygomobile.ourygo.util.DuelAssistantManagement;
import cn.garymb.ygomobile.ui.cards.CardSearchAcitivity;
import cn.garymb.ygomobile.ui.home.ServerListManager;
import cn.garymb.ygomobile.ui.plus.VUiKit;
import cn.garymb.ygomobile.utils.DeckUtil;
import cn.garymb.ygomobile.utils.FileLogUtil; import cn.garymb.ygomobile.utils.FileLogUtil;
import cn.garymb.ygomobile.utils.YGOUtil;
import static cn.garymb.ygomobile.Constants.ASSET_SERVER_LIST;
public class BaseActivity extends AppCompatActivity { public class BaseActivity extends AppCompatActivity {
protected final static int REQUEST_PERMISSIONS = 0x1000 + 1; protected final static int REQUEST_PERMISSIONS = 0x1000 + 1;
private boolean mExitAnim = true; private boolean mExitAnim = true;
private boolean mEnterAnim = true; private boolean mEnterAnim = true;
private Toast mToast; private Toast mToast;
private DialogUtils dialogUtils;
protected String[] getPermissions() { protected String[] getPermissions() {
return PERMISSIONS; return PERMISSIONS;
...@@ -48,6 +68,7 @@ public class BaseActivity extends AppCompatActivity { ...@@ -48,6 +68,7 @@ public class BaseActivity extends AppCompatActivity {
@Override @Override
protected void onCreate(@Nullable Bundle savedInstanceState) { protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
dialogUtils=DialogUtils.getdx(this);
} }
protected void setupActionBar() { protected void setupActionBar() {
...@@ -73,6 +94,8 @@ public class BaseActivity extends AppCompatActivity { ...@@ -73,6 +94,8 @@ public class BaseActivity extends AppCompatActivity {
} }
onActivityResult(REQUEST_PERMISSIONS,PermissionsActivity.PERMISSIONS_GRANTED,null); onActivityResult(REQUEST_PERMISSIONS,PermissionsActivity.PERMISSIONS_GRANTED,null);
} }
} }
public Activity getActivity() { public Activity getActivity() {
......
...@@ -25,12 +25,13 @@ import cn.garymb.ygomobile.Constants; ...@@ -25,12 +25,13 @@ import cn.garymb.ygomobile.Constants;
import cn.garymb.ygomobile.lite.R; import cn.garymb.ygomobile.lite.R;
import cn.garymb.ygomobile.loader.CardLoader; import cn.garymb.ygomobile.loader.CardLoader;
import cn.garymb.ygomobile.loader.ImageLoader; import cn.garymb.ygomobile.loader.ImageLoader;
import cn.garymb.ygomobile.ourygo.util.DuelAssistantManagement;
import cn.garymb.ygomobile.ui.activities.BaseActivity; import cn.garymb.ygomobile.ui.activities.BaseActivity;
import cn.garymb.ygomobile.ui.activities.WebActivity; import cn.garymb.ygomobile.ui.activities.WebActivity;
import cn.garymb.ygomobile.ui.adapters.CardListAdapter; import cn.garymb.ygomobile.ui.adapters.CardListAdapter;
import cn.garymb.ygomobile.ui.plus.AOnGestureListener; import cn.garymb.ygomobile.ui.plus.AOnGestureListener;
import cn.garymb.ygomobile.ui.plus.DialogPlus; import cn.garymb.ygomobile.ui.plus.DialogPlus;
import cn.garymb.ygomobile.ui.plus.ServiceDuelAssistant; import cn.garymb.ygomobile.ourygo.service.DuelAssistantService;
import cn.garymb.ygomobile.ui.plus.VUiKit; import cn.garymb.ygomobile.ui.plus.VUiKit;
import ocgcore.DataManager; import ocgcore.DataManager;
import ocgcore.LimitManager; import ocgcore.LimitManager;
...@@ -60,7 +61,7 @@ class CardSearchActivityImpl extends BaseActivity implements CardLoader.CallBack ...@@ -60,7 +61,7 @@ class CardSearchActivityImpl extends BaseActivity implements CardLoader.CallBack
setContentView(R.layout.activity_search); setContentView(R.layout.activity_search);
if(TextUtils.isEmpty(getIntent().getStringExtra(CardSearchAcitivity.SEARCH_MESSAGE))){ if(TextUtils.isEmpty(getIntent().getStringExtra(CardSearchAcitivity.SEARCH_MESSAGE))){
ServiceDuelAssistant.cardSearchMessage=""; DuelAssistantManagement.getInstance().setCardSearchMessage("");
} }
Toolbar toolbar = $(R.id.toolbar); Toolbar toolbar = $(R.id.toolbar);
setSupportActionBar(toolbar); setSupportActionBar(toolbar);
...@@ -105,15 +106,15 @@ class CardSearchActivityImpl extends BaseActivity implements CardLoader.CallBack ...@@ -105,15 +106,15 @@ class CardSearchActivityImpl extends BaseActivity implements CardLoader.CallBack
@Override @Override
protected void onRestart() { protected void onRestart() {
super.onRestart(); super.onRestart();
if (!isFirstCardSearch&&!currentCardSearchMessage.equals(ServiceDuelAssistant.cardSearchMessage)){ if (!isFirstCardSearch&&!currentCardSearchMessage.equals(DuelAssistantManagement.getInstance().getCardSearchMessage())){
currentCardSearchMessage=ServiceDuelAssistant.cardSearchMessage; currentCardSearchMessage= DuelAssistantManagement.getInstance().getCardSearchMessage();
intentSearch(); intentSearch();
} }
} }
private void intentSearch(){ private void intentSearch(){
// intentSearchMessage=getIntent().getStringExtra(CardSearchAcitivity.SEARCH_MESSAGE); // intentSearchMessage=getIntent().getStringExtra(CardSearchAcitivity.SEARCH_MESSAGE);
mCardSelector.search(ServiceDuelAssistant.cardSearchMessage); mCardSelector.search(DuelAssistantManagement.getInstance().getCardSearchMessage());
} }
protected void setListeners() { protected void setListeners() {
......
...@@ -65,19 +65,18 @@ import cn.garymb.ygomobile.ui.cards.deck.DeckItem; ...@@ -65,19 +65,18 @@ import cn.garymb.ygomobile.ui.cards.deck.DeckItem;
import cn.garymb.ygomobile.ui.cards.deck.DeckItemTouchHelper; import cn.garymb.ygomobile.ui.cards.deck.DeckItemTouchHelper;
import cn.garymb.ygomobile.ui.cards.deck.DeckItemType; import cn.garymb.ygomobile.ui.cards.deck.DeckItemType;
import cn.garymb.ygomobile.ui.cards.deck.DeckLayoutManager; import cn.garymb.ygomobile.ui.cards.deck.DeckLayoutManager;
import cn.garymb.ygomobile.ui.mycard.mcchat.util.ImageUtil; import cn.garymb.ygomobile.mycard.mcchat.util.ImageUtil;
import cn.garymb.ygomobile.ui.mycard.mcchat.util.Util;
import cn.garymb.ygomobile.ui.plus.AOnGestureListener; import cn.garymb.ygomobile.ui.plus.AOnGestureListener;
import cn.garymb.ygomobile.ui.plus.DefaultOnBoomListener; import cn.garymb.ygomobile.ui.plus.DefaultOnBoomListener;
import cn.garymb.ygomobile.ui.plus.DialogPlus; import cn.garymb.ygomobile.ui.plus.DialogPlus;
import cn.garymb.ygomobile.ui.plus.ServiceDuelAssistant; import cn.garymb.ygomobile.ourygo.service.DuelAssistantService;
import cn.garymb.ygomobile.ui.plus.VUiKit; import cn.garymb.ygomobile.ui.plus.VUiKit;
import cn.garymb.ygomobile.utils.BitmapUtil; import cn.garymb.ygomobile.utils.BitmapUtil;
import cn.garymb.ygomobile.utils.DeckUtil;
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.ShareUtil; import cn.garymb.ygomobile.utils.ShareUtil;
import cn.garymb.ygomobile.utils.YGODialogUtil; import cn.garymb.ygomobile.utils.YGODialogUtil;
import cn.garymb.ygomobile.utils.YGOUtil;
import ocgcore.DataManager; import ocgcore.DataManager;
import ocgcore.data.Card; import ocgcore.data.Card;
import ocgcore.data.LimitList; import ocgcore.data.LimitList;
...@@ -794,11 +793,11 @@ class DeckManagerActivityImpl extends BaseCardsAcitivity implements RecyclerView ...@@ -794,11 +793,11 @@ class DeckManagerActivityImpl extends BaseCardsAcitivity implements RecyclerView
@Override @Override
public void onClick(View v) { public void onClick(View v) {
du.dis(); du.dis();
stopService(new Intent(DeckManagerActivityImpl.this, ServiceDuelAssistant.class)); stopService(new Intent(DeckManagerActivityImpl.this, DuelAssistantService.class));
Util.fzMessage(DeckManagerActivityImpl.this, et_code.getText().toString().trim()); YGOUtil.copyMessage(DeckManagerActivityImpl.this, et_code.getText().toString().trim());
showToast(getString(R.string.deck_text_copyed)); showToast(getString(R.string.deck_text_copyed));
//复制完毕开启决斗助手 //复制完毕开启决斗助手
Util.startDuelService(DeckManagerActivityImpl.this); YGOUtil.startDuelService(DeckManagerActivityImpl.this);
} }
}); });
......
...@@ -61,7 +61,7 @@ import cn.garymb.ygomobile.ui.adapters.ServerListAdapter; ...@@ -61,7 +61,7 @@ import cn.garymb.ygomobile.ui.adapters.ServerListAdapter;
import cn.garymb.ygomobile.ui.adapters.SimpleListAdapter; import cn.garymb.ygomobile.ui.adapters.SimpleListAdapter;
import cn.garymb.ygomobile.ui.cards.CardSearchAcitivity; import cn.garymb.ygomobile.ui.cards.CardSearchAcitivity;
import cn.garymb.ygomobile.ui.cards.DeckManagerActivity; import cn.garymb.ygomobile.ui.cards.DeckManagerActivity;
import cn.garymb.ygomobile.ui.mycard.MyCardActivity; import cn.garymb.ygomobile.mycard.MyCardActivity;
import cn.garymb.ygomobile.ui.plus.DefaultOnBoomListener; import cn.garymb.ygomobile.ui.plus.DefaultOnBoomListener;
import cn.garymb.ygomobile.ui.plus.DialogPlus; import cn.garymb.ygomobile.ui.plus.DialogPlus;
import cn.garymb.ygomobile.ui.preference.SettingsActivity; import cn.garymb.ygomobile.ui.preference.SettingsActivity;
...@@ -71,8 +71,7 @@ import cn.garymb.ygomobile.utils.AlipayPayUtils; ...@@ -71,8 +71,7 @@ import cn.garymb.ygomobile.utils.AlipayPayUtils;
import cn.garymb.ygomobile.utils.ComponentUtils; import cn.garymb.ygomobile.utils.ComponentUtils;
import cn.garymb.ygomobile.utils.FileLogUtil; import cn.garymb.ygomobile.utils.FileLogUtil;
import cn.garymb.ygomobile.utils.ScreenUtil; import cn.garymb.ygomobile.utils.ScreenUtil;
import cn.garymb.ygomobile.utils.YGOUtil;
import static cn.garymb.ygomobile.ui.mycard.mcchat.util.Util.startDuelService;
public abstract class HomeActivity extends BaseActivity implements NavigationView.OnNavigationItemSelectedListener { public abstract class HomeActivity extends BaseActivity implements NavigationView.OnNavigationItemSelectedListener {
protected SwipeMenuRecyclerView mServerList; protected SwipeMenuRecyclerView mServerList;
...@@ -224,8 +223,8 @@ public abstract class HomeActivity extends BaseActivity implements NavigationVie ...@@ -224,8 +223,8 @@ public abstract class HomeActivity extends BaseActivity implements NavigationVie
TrPay.getInstance(HomeActivity.this).initPaySdk("e1014da420ea4405898c01273d6731b6", "YGOMobile"); TrPay.getInstance(HomeActivity.this).initPaySdk("e1014da420ea4405898c01273d6731b6", "YGOMobile");
//autoupadte checking //autoupadte checking
checkPgyerUpdateSilent(getContext(), false, false, false); checkPgyerUpdateSilent(getContext(), false, false, false);
//ServiceDuelAssistant //DuelAssistantService
startDuelService(this); YGOUtil.startDuelService(this);
//萌卡 //萌卡
StartMycard(); StartMycard();
......
...@@ -14,29 +14,40 @@ import android.widget.Button; ...@@ -14,29 +14,40 @@ import android.widget.Button;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import com.feihua.dialogutils.util.DialogUtils;
import java.io.File; import java.io.File;
import java.io.FileInputStream;
import cn.garymb.ygomobile.AppsSettings; import cn.garymb.ygomobile.AppsSettings;
import cn.garymb.ygomobile.Constants; import cn.garymb.ygomobile.Constants;
import cn.garymb.ygomobile.GameUriManager; import cn.garymb.ygomobile.GameUriManager;
import cn.garymb.ygomobile.YGOMobileActivity; import cn.garymb.ygomobile.YGOMobileActivity;
import cn.garymb.ygomobile.YGOStarter; import cn.garymb.ygomobile.YGOStarter;
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.ourygo.base.OnDuelClipBoardListener;
import cn.garymb.ygomobile.ourygo.util.DuelAssistantManagement;
import cn.garymb.ygomobile.ui.activities.BaseActivity;
import cn.garymb.ygomobile.ui.activities.LogoActivity; import cn.garymb.ygomobile.ui.activities.LogoActivity;
import cn.garymb.ygomobile.ui.activities.WebActivity; import cn.garymb.ygomobile.ui.activities.WebActivity;
import cn.garymb.ygomobile.ui.plus.DialogPlus; import cn.garymb.ygomobile.ui.plus.DialogPlus;
import cn.garymb.ygomobile.ui.plus.VUiKit; import cn.garymb.ygomobile.ui.plus.VUiKit;
import cn.garymb.ygomobile.utils.ComponentUtils; import cn.garymb.ygomobile.utils.ComponentUtils;
import cn.garymb.ygomobile.utils.DeckUtil;
import cn.garymb.ygomobile.utils.IOUtils; import cn.garymb.ygomobile.utils.IOUtils;
import cn.garymb.ygomobile.utils.NetUtils; import cn.garymb.ygomobile.utils.NetUtils;
import cn.garymb.ygomobile.utils.PermissionUtil; import cn.garymb.ygomobile.utils.PermissionUtil;
import cn.garymb.ygomobile.utils.YGOUtil;
import libwindbot.windbot.WindBot; import libwindbot.windbot.WindBot;
import static cn.garymb.ygomobile.Constants.ASSET_SERVER_LIST;
import static cn.garymb.ygomobile.Constants.CORE_BOT_CONF_PATH; import static cn.garymb.ygomobile.Constants.CORE_BOT_CONF_PATH;
import static cn.garymb.ygomobile.Constants.DATABASE_NAME; import static cn.garymb.ygomobile.Constants.DATABASE_NAME;
import static cn.garymb.ygomobile.Constants.NETWORK_IMAGE; import static cn.garymb.ygomobile.Constants.NETWORK_IMAGE;
public class MainActivity extends HomeActivity { public class MainActivity extends HomeActivity implements OnDuelClipBoardListener {
private static final String TAG = "ResCheckTask"; private static final String TAG = "ResCheckTask";
private GameUriManager mGameUriManager; private GameUriManager mGameUriManager;
private ImageUpdater mImageUpdater; private ImageUpdater mImageUpdater;
...@@ -52,6 +63,11 @@ public class MainActivity extends HomeActivity { ...@@ -52,6 +63,11 @@ public class MainActivity extends HomeActivity {
int err = getIntent().getIntExtra(LogoActivity.EXTRA_ERROR, ResCheckTask.ERROR_NONE); int err = getIntent().getIntExtra(LogoActivity.EXTRA_ERROR, ResCheckTask.ERROR_NONE);
//资源复制 //资源复制
onCheckCompleted(err, isNew); onCheckCompleted(err, isNew);
// if (DuelAssistantManagement.getInstance().isStart()){
// DuelAssistantManagement.getInstance().checkMessage(YGOUtil.getCopyMessage(),this);
// Log.e("BaseActivity","检测复制内容"+YGOUtil.getCopyMessage());
// }
} }
@Override @Override
...@@ -62,6 +78,10 @@ public class MainActivity extends HomeActivity { ...@@ -62,6 +78,10 @@ public class MainActivity extends HomeActivity {
if (!ComponentUtils.isActivityRunning(this, new ComponentName(this, YGOMobileActivity.class))) { if (!ComponentUtils.isActivityRunning(this, new ComponentName(this, YGOMobileActivity.class))) {
ComponentUtils.killActivity(this, new ComponentName(this, YGOMobileActivity.class)); ComponentUtils.killActivity(this, new ComponentName(this, YGOMobileActivity.class));
} }
if (DuelAssistantManagement.getInstance().isStart()){
DuelAssistantManagement.getInstance().checkMessage(YGOUtil.getCopyMessage(),this);
}
} }
@Override @Override
...@@ -211,4 +231,106 @@ public class MainActivity extends HomeActivity { ...@@ -211,4 +231,106 @@ public class MainActivity extends HomeActivity {
getGameUriManager().doIntent(getIntent()); getGameUriManager().doIntent(getIntent());
} }
} }
@Override
public void onDeckCode(String deckCode,boolean isDebounce) {
if (isDebounce)
return;
DialogPlus dialogPlus=new DialogPlus(this);
dialogPlus.setMessage("检测到卡组,是否保存?");
dialogPlus.setLeftButtonText("保存");
dialogPlus.setRightButtonText("取消");
dialogPlus.setLeftButtonListener(new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
DeckUtil.saveDeck(MainActivity.this,deckCode,false);
dialog.dismiss();
}
});
dialogPlus.setRightButtonListener(new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
dialogPlus.show();
}
@Override
public void onDeckUrl(String deckUrl,boolean isDebounce) {
if (isDebounce)
return;
DialogPlus dialogPlus=new DialogPlus(this);
dialogPlus.setMessage("检测到卡组,是否保存?");
dialogPlus.setLeftButtonText("保存");
dialogPlus.setRightButtonText("取消");
dialogPlus.setLeftButtonListener(new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
DeckUtil.saveDeck(MainActivity.this,deckUrl,true);
dialog.dismiss();
}
});
dialogPlus.setRightButtonListener(new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
dialogPlus.show();
}
@Override
public void onCardQuery(String cardNameKey,boolean isDebounce) {
}
@Override
public void onDuelPassword(String password,boolean isDebounce) {
if (isDebounce)
return;
DialogPlus dialogPlus=new DialogPlus(this);
dialogPlus.setTitle(password);
dialogPlus.setMessage("检测到决斗密码,是否加入房间?");
dialogPlus.setLeftButtonText("加入");
dialogPlus.setRightButtonText("取消");
dialogPlus.setLeftButtonListener(new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
File xmlFile = new File(getFilesDir(), Constants.SERVER_FILE);
VUiKit.defer().when(() -> {
ServerList assetList = ServerListManager.readList(MainActivity.this.getAssets().open(ASSET_SERVER_LIST));
ServerList fileList = xmlFile.exists() ? ServerListManager.readList(new FileInputStream(xmlFile)) : null;
if (fileList == null) {
return assetList;
}
if (fileList.getVercode() < assetList.getVercode()) {
xmlFile.delete();
return assetList;
}
return fileList;
}).done((list) -> {
if (list != null) {
ServerInfo serverInfo = list.getServerInfoList().get(0);
YGOUtil.duelIntent(MainActivity.this, serverInfo.getServerAddr(), serverInfo.getPort(), serverInfo.getPlayerName(), password);
}
});
dialog.dismiss();
}
});
dialogPlus.setRightButtonListener(new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
dialogPlus.show();
}
@Override
public boolean isEffective() {
return YGOUtil.isContextExisted(this);
}
} }
package cn.garymb.ygomobile.ui.mycard.mcchat.util;
import android.app.Activity;
import android.content.ClipboardManager;
import android.content.Context;
import android.content.Intent;
import android.os.Build;
import android.view.inputmethod.InputMethodManager;
import android.widget.Toast;
import cn.garymb.ygomobile.AppsSettings;
import cn.garymb.ygomobile.ui.plus.DialogPlus;
import cn.garymb.ygomobile.ui.plus.ServiceDuelAssistant;
import cn.garymb.ygomobile.utils.PermissionUtil;
public class Util {
//提示
public static void show(Context context, String message) {
Toast.makeText(context, message, Toast.LENGTH_SHORT).show();
}
//关闭输入法
public static void closeKeyboard(Activity activity) {
InputMethodManager inputMethodManager = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
inputMethodManager.hideSoftInputFromWindow((activity).getCurrentFocus().getWindowToken()
, InputMethodManager.HIDE_NOT_ALWAYS);
}
//复制字符串到剪贴板
public static void fzMessage(Context context, String message) {
ClipboardManager cmb = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
cmb.setText(message);//复制命令
}
public static void startDuelService(Context context) {
if (AppsSettings.get().isServiceDuelAssistant()) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
DialogPlus dialogPlus = PermissionUtil.isNotificationPermission(context);
if (dialogPlus == null)
context.startForegroundService(new Intent(context, ServiceDuelAssistant.class));
else
dialogPlus.show();
} else {
context.startService(new Intent(context, ServiceDuelAssistant.class));
}
}
}
}
...@@ -36,9 +36,8 @@ import cn.garymb.ygomobile.Constants; ...@@ -36,9 +36,8 @@ import cn.garymb.ygomobile.Constants;
import cn.garymb.ygomobile.lite.R; import cn.garymb.ygomobile.lite.R;
import cn.garymb.ygomobile.ui.activities.LogoActivity; import cn.garymb.ygomobile.ui.activities.LogoActivity;
import cn.garymb.ygomobile.ui.home.HomeActivity; import cn.garymb.ygomobile.ui.home.HomeActivity;
import cn.garymb.ygomobile.ui.home.MainActivity;
import cn.garymb.ygomobile.ui.plus.DialogPlus; import cn.garymb.ygomobile.ui.plus.DialogPlus;
import cn.garymb.ygomobile.ui.plus.ServiceDuelAssistant; import cn.garymb.ygomobile.ourygo.service.DuelAssistantService;
import cn.garymb.ygomobile.ui.plus.VUiKit; import cn.garymb.ygomobile.ui.plus.VUiKit;
import cn.garymb.ygomobile.ui.preference.PreferenceFragmentPlus; import cn.garymb.ygomobile.ui.preference.PreferenceFragmentPlus;
import cn.garymb.ygomobile.utils.FileUtils; import cn.garymb.ygomobile.utils.FileUtils;
...@@ -48,7 +47,6 @@ import cn.garymb.ygomobile.utils.PermissionUtil; ...@@ -48,7 +47,6 @@ import cn.garymb.ygomobile.utils.PermissionUtil;
import ocgcore.ConfigManager; import ocgcore.ConfigManager;
import ocgcore.DataManager; import ocgcore.DataManager;
import static cn.garymb.ygomobile.Constants.ACTION_RELOAD;
import static cn.garymb.ygomobile.Constants.CORE_SKIN_AVATAR_SIZE; import static cn.garymb.ygomobile.Constants.CORE_SKIN_AVATAR_SIZE;
import static cn.garymb.ygomobile.Constants.CORE_SKIN_BG_SIZE; import static cn.garymb.ygomobile.Constants.CORE_SKIN_BG_SIZE;
import static cn.garymb.ygomobile.Constants.CORE_SKIN_CARD_COVER_SIZE; import static cn.garymb.ygomobile.Constants.CORE_SKIN_CARD_COVER_SIZE;
...@@ -195,9 +193,9 @@ public class SettingFragment extends PreferenceFragmentPlus { ...@@ -195,9 +193,9 @@ public class SettingFragment extends PreferenceFragmentPlus {
if (preference.getKey().equals(PREF_START_SERVICEDUELASSISTANT)) { if (preference.getKey().equals(PREF_START_SERVICEDUELASSISTANT)) {
if (checkBoxPreference.isChecked()) { if (checkBoxPreference.isChecked()) {
PermissionUtil.isServicePermission(getActivity(), true); PermissionUtil.isServicePermission(getActivity(), true);
getActivity().startService(new Intent(getActivity(), ServiceDuelAssistant.class)); getActivity().startService(new Intent(getActivity(), DuelAssistantService.class));
} else { } else {
getActivity().stopService(new Intent(getActivity(), ServiceDuelAssistant.class)); getActivity().stopService(new Intent(getActivity(), DuelAssistantService.class));
} }
} }
//如果是音效开关 //如果是音效开关
......
...@@ -3,7 +3,7 @@ package cn.garymb.ygomobile.ui.widget; ...@@ -3,7 +3,7 @@ package cn.garymb.ygomobile.ui.widget;
import android.content.Context; import android.content.Context;
import android.util.AttributeSet; import android.util.AttributeSet;
import cn.garymb.ygomobile.ui.mycard.X5WebView; import cn.garymb.ygomobile.mycard.X5WebView;
public class WebViewPlus extends X5WebView { public class WebViewPlus extends X5WebView {
......
package cn.garymb.ygomobile.utils; package cn.garymb.ygomobile.utils;
import android.content.Context; import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Build; import android.os.Build;
import android.widget.Toast;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
...@@ -16,9 +19,13 @@ import java.util.zip.ZipFile; ...@@ -16,9 +19,13 @@ import java.util.zip.ZipFile;
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.Deck;
import cn.garymb.ygomobile.bean.DeckType; import cn.garymb.ygomobile.bean.DeckType;
import cn.garymb.ygomobile.bean.events.DeckFile; import cn.garymb.ygomobile.bean.events.DeckFile;
import cn.garymb.ygomobile.lite.R; import cn.garymb.ygomobile.lite.R;
import cn.garymb.ygomobile.ourygo.service.DuelAssistantService;
import cn.garymb.ygomobile.ui.cards.DeckManagerActivity;
import cn.garymb.ygomobile.ui.cards.deck.DeckUtils;
public class DeckUtil { public class DeckUtil {
...@@ -122,4 +129,28 @@ public class DeckUtil { ...@@ -122,4 +129,28 @@ public class DeckUtil {
} }
}; };
public static void saveDeck(Context context,String deckMessage,boolean isUrl){
if (isUrl) {
Deck deckInfo = new Deck(YGOUtil.s(R.string.rename_deck) + System.currentTimeMillis(), Uri.parse(deckMessage));
File file = deckInfo.saveTemp(AppsSettings.get().getDeckDir());
Intent startdeck = new Intent(context, DeckManagerActivity.getDeckManager());
startdeck.putExtra(Intent.EXTRA_TEXT, file.getAbsolutePath());
startdeck.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(startdeck);
} else {
//如果是卡组文本
try {
//以当前时间戳作为卡组名保存卡组
File file = DeckUtils.save(YGOUtil.s(R.string.rename_deck) + System.currentTimeMillis(), deckMessage);
Intent startdeck = new Intent(context, DeckManagerActivity.getDeckManager());
startdeck.putExtra(Intent.EXTRA_TEXT, file.getAbsolutePath());
startdeck.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(startdeck);
} catch (IOException e) {
e.printStackTrace();
Toast.makeText(context, YGOUtil.s(R.string.save_failed_bcos) + e, Toast.LENGTH_SHORT).show();
}
}
}
} }
...@@ -32,7 +32,7 @@ import cn.garymb.ygomobile.bean.DeckType; ...@@ -32,7 +32,7 @@ import cn.garymb.ygomobile.bean.DeckType;
import cn.garymb.ygomobile.bean.events.DeckFile; import cn.garymb.ygomobile.bean.events.DeckFile;
import cn.garymb.ygomobile.lite.R; import cn.garymb.ygomobile.lite.R;
import cn.garymb.ygomobile.ui.adapters.TextSelectAdapter; import cn.garymb.ygomobile.ui.adapters.TextSelectAdapter;
import cn.garymb.ygomobile.ui.mycard.mcchat.util.ImageUtil; import cn.garymb.ygomobile.mycard.mcchat.util.ImageUtil;
import cn.garymb.ygomobile.ui.plus.DialogPlus; import cn.garymb.ygomobile.ui.plus.DialogPlus;
import cn.garymb.ygomobile.utils.recyclerview.DeckTypeTouchHelperCallback; import cn.garymb.ygomobile.utils.recyclerview.DeckTypeTouchHelperCallback;
......
package cn.garymb.ygomobile.utils; package cn.garymb.ygomobile.utils;
import android.app.Activity;
import android.app.ActivityManager;
import android.app.Application;
import android.app.Service;
import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.os.Build;
import android.view.inputmethod.InputMethodManager;
import android.widget.Toast; import android.widget.Toast;
import androidx.core.content.ContextCompat; import androidx.core.content.ContextCompat;
import java.util.List;
import cn.garymb.ygomobile.App; import cn.garymb.ygomobile.App;
import cn.garymb.ygomobile.AppsSettings;
import cn.garymb.ygomobile.lite.R; import cn.garymb.ygomobile.lite.R;
import cn.garymb.ygomobile.ourygo.service.DuelAssistantService;
import cn.garymb.ygomobile.ourygo.util.DuelAssistantManagement;
import cn.garymb.ygomobile.ui.plus.DialogPlus;
import libwindbot.windbot.game.Duel;
public class YGOUtil { public class YGOUtil {
...@@ -20,4 +38,101 @@ public class YGOUtil { ...@@ -20,4 +38,101 @@ public class YGOUtil {
public static String s(int stringId){ public static String s(int stringId){
return App.get().getResources().getString(stringId); return App.get().getResources().getString(stringId);
} }
//关闭输入法
public static void closeKeyboard(Activity activity) {
InputMethodManager inputMethodManager = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
inputMethodManager.hideSoftInputFromWindow((activity).getCurrentFocus().getWindowToken()
, InputMethodManager.HIDE_NOT_ALWAYS);
}
//复制字符串到剪贴板
public static void copyMessage(Context context, String message) {
ClipboardManager cmb = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
cmb.setText(message);//复制命令
}
public static String getCopyMessage(){
ClipboardManager cm = (ClipboardManager) App.get().getSystemService(Context.CLIPBOARD_SERVICE);
ClipData clipData = cm.getPrimaryClip();
if (clipData == null)
return null;
CharSequence cs = clipData.getItemAt(0).getText();
final String clipMessage;
if (cs != null) {
clipMessage = cs.toString();
} else {
clipMessage = null;
}
return clipMessage;
}
public static void startDuelService(Context context) {
if (AppsSettings.get().isServiceDuelAssistant()) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
DialogPlus dialogPlus = PermissionUtil.isNotificationPermission(context);
if (dialogPlus == null)
context.startForegroundService(new Intent(context, DuelAssistantService.class));
else
dialogPlus.show();
} else {
context.startService(new Intent(context, DuelAssistantService.class));
}
}
DuelAssistantManagement.getInstance().setStart(true);
}
public static boolean isServiceExisted(Context context, String className) {
ActivityManager activityManager = (ActivityManager) context
.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningServiceInfo> serviceList = activityManager
.getRunningServices(Integer.MAX_VALUE);
if (!(serviceList.size() > 0)) {
return false;
}
for (int i = 0; i < serviceList.size(); i++) {
ActivityManager.RunningServiceInfo serviceInfo = serviceList.get(i);
ComponentName serviceName = serviceInfo.service;
if (serviceName.getClassName().equals(className)) {
return true;
}
}
return false;
}
public static boolean isContextExisted(Context context) {
if (context != null) {
if (context instanceof Activity) {
if (!((Activity)context).isFinishing()) {
return true;
}
} else if (context instanceof Service) {
if (isServiceExisted(context, context.getClass().getName())) {
return true;
}
} else if (context instanceof Application) {
return true;
}
}
return false;
}
//决斗跳转
public static void duelIntent(Context context, String ip, int port, String name, String password) {
Intent intent1 = new Intent("ygomobile.intent.action.GAME");
intent1.putExtra("host", ip);
intent1.putExtra("port", port);
intent1.putExtra("user", name);
intent1.putExtra("room", password);
//intent1.setPackage("cn.garymb.ygomobile");
intent1.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent1);
}
} }
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="match_parent">
<cn.garymb.ygomobile.ui.mycard.MyCardWebView <cn.garymb.ygomobile.mycard.MyCardWebView
android:id="@+id/webbrowser" android:id="@+id/webbrowser"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="match_parent">
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="5px" /> android:layout_height="5px" />
</cn.garymb.ygomobile.ui.mycard.MyCardWebView> </cn.garymb.ygomobile.mycard.MyCardWebView>
</RelativeLayout> </RelativeLayout>
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="#00000000"> android:background="#00000000">
<cn.garymb.ygomobile.ui.mycard.mcchat.view.YuanImage <cn.garymb.ygomobile.mycard.mcchat.view.YuanImage
android:id="@+id/ic_avatar" android:id="@+id/ic_avatar"
android:layout_width="35dp" android:layout_width="35dp"
android:layout_height="35dp" android:layout_height="35dp"
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="#00000000"> android:background="#00000000">
<cn.garymb.ygomobile.ui.mycard.mcchat.view.YuanImage <cn.garymb.ygomobile.mycard.mcchat.view.YuanImage
android:id="@+id/icm_avatar" android:id="@+id/icm_avatar"
android:layout_width="35dp" android:layout_width="35dp"
android:layout_height="35dp" android:layout_height="35dp"
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<intent <intent
android:action="android.intent.action.VIEW" android:action="android.intent.action.VIEW"
android:targetClass="cn.garymb.ygomobile.ui.mycard.MyCardActivity" android:targetClass="cn.garymb.ygomobile.mycard.MyCardActivity"
android:targetPackage="cn.garymb.ygomobile" /> android:targetPackage="cn.garymb.ygomobile" />
<categories android:name="android.shortcut.conversation" /> <categories android:name="android.shortcut.conversation" />
</shortcut> </shortcut>
......
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