Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Y
YGOMobile-Cn-Ko-En
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Packages
Packages
List
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issues
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
fallenstardust
YGOMobile-Cn-Ko-En
Commits
e33714f1
Commit
e33714f1
authored
Feb 07, 2020
by
feihuaduo
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修改高清卡图下载地址
代码优化
parent
6cd0c10e
Changes
15
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
666 additions
and
425 deletions
+666
-425
mobile/src/main/java/cn/garymb/ygomobile/App.java
mobile/src/main/java/cn/garymb/ygomobile/App.java
+4
-0
mobile/src/main/java/cn/garymb/ygomobile/ui/cards/CardDetail.java
...rc/main/java/cn/garymb/ygomobile/ui/cards/CardDetail.java
+1
-1
mobile/src/main/java/cn/garymb/ygomobile/ui/cards/CardSearchActivityImpl.java
.../cn/garymb/ygomobile/ui/cards/CardSearchActivityImpl.java
+14
-24
mobile/src/main/java/cn/garymb/ygomobile/ui/home/HomeActivity.java
...c/main/java/cn/garymb/ygomobile/ui/home/HomeActivity.java
+62
-111
mobile/src/main/java/cn/garymb/ygomobile/ui/home/MainActivity.java
...c/main/java/cn/garymb/ygomobile/ui/home/MainActivity.java
+5
-3
mobile/src/main/java/cn/garymb/ygomobile/utils/PermissionUtil.java
...c/main/java/cn/garymb/ygomobile/utils/PermissionUtil.java
+0
-97
mobile/src/main/java/cn/garymb/ygomobile/utils/YGOUtil.java
mobile/src/main/java/cn/garymb/ygomobile/utils/YGOUtil.java
+88
-12
mobile/src/main/java/com/ourygo/assistant/base/listener/OnClipChangedListener.java
...ourygo/assistant/base/listener/OnClipChangedListener.java
+5
-0
mobile/src/main/java/com/ourygo/assistant/base/listener/OnDuelAssistantListener.java
...rygo/assistant/base/listener/OnDuelAssistantListener.java
+8
-0
mobile/src/main/java/com/ourygo/assistant/service/DuelAssistantService.java
...va/com/ourygo/assistant/service/DuelAssistantService.java
+69
-171
mobile/src/main/java/com/ourygo/assistant/util/ClipManagement.java
...c/main/java/com/ourygo/assistant/util/ClipManagement.java
+75
-0
mobile/src/main/java/com/ourygo/assistant/util/DuelAssistantManagement.java
...va/com/ourygo/assistant/util/DuelAssistantManagement.java
+201
-0
mobile/src/main/java/com/ourygo/assistant/util/PermissionUtil.java
...c/main/java/com/ourygo/assistant/util/PermissionUtil.java
+25
-0
mobile/src/main/java/com/ourygo/assistant/util/Record.java
mobile/src/main/java/com/ourygo/assistant/util/Record.java
+30
-0
mobile/src/main/java/com/ourygo/assistant/util/Util.java
mobile/src/main/java/com/ourygo/assistant/util/Util.java
+79
-6
No files found.
mobile/src/main/java/cn/garymb/ygomobile/App.java
View file @
e33714f1
...
...
@@ -6,11 +6,13 @@ import android.content.Context;
import
android.content.Intent
;
import
android.content.pm.ApplicationInfo
;
import
android.content.pm.PackageManager
;
import
android.util.Log
;
import
android.widget.ImageView
;
import
androidx.appcompat.app.AppCompatDelegate
;
import
com.bumptech.glide.Glide
;
import
com.ourygo.assistant.util.DuelAssistantManagement
;
import
com.tencent.bugly.Bugly
;
import
com.tencent.bugly.beta.Beta
;
import
com.yuyh.library.imgsel.ISNav
;
...
...
@@ -35,6 +37,8 @@ public class App extends GameApplication {
initBugly
();
}
@Override
public
NativeInitOptions
getNativeInitOptions
()
{
NativeInitOptions
options
=
AppsSettings
.
get
().
getNativeInitOptions
();
...
...
mobile/src/main/java/cn/garymb/ygomobile/ui/cards/CardDetail.java
View file @
e33714f1
...
...
@@ -393,7 +393,7 @@ public class CardDetail extends BaseAdapterPlus.BaseViewHolder {
public
void
onDownloadFailed
(
Exception
e
)
{
//下载失败后删除下载的文件
FileUtils
.
deleteFile
(
file
);
downloadCardImage
(
code
,
file
);
//
downloadCardImage(code, file);
Message
message
=
new
Message
();
message
.
what
=
TYPE_DOWNLOAD_CARD_IMAGE_EXCEPTION
;
...
...
mobile/src/main/java/cn/garymb/ygomobile/ui/cards/CardSearchActivityImpl.java
View file @
e33714f1
package
cn.garymb.ygomobile.ui.cards
;
import
android.os.Build
;
import
android.os.Bundle
;
import
android.text.TextUtils
;
import
android.view.Gravity
;
...
...
@@ -18,6 +17,7 @@ import androidx.recyclerview.widget.FastScrollLinearLayoutManager;
import
androidx.recyclerview.widget.RecyclerView
;
import
com.bumptech.glide.Glide
;
import
com.ourygo.assistant.util.DuelAssistantManagement
;
import
java.io.IOException
;
import
java.util.List
;
...
...
@@ -29,10 +29,8 @@ import cn.garymb.ygomobile.loader.ImageLoader;
import
cn.garymb.ygomobile.ui.activities.BaseActivity
;
import
cn.garymb.ygomobile.ui.activities.WebActivity
;
import
cn.garymb.ygomobile.ui.adapters.CardListAdapter
;
import
cn.garymb.ygomobile.ui.home.HomeActivity
;
import
cn.garymb.ygomobile.ui.plus.AOnGestureListener
;
import
cn.garymb.ygomobile.ui.plus.DialogPlus
;
import
com.ourygo.assistant.service.DuelAssistantService
;
import
cn.garymb.ygomobile.ui.plus.VUiKit
;
import
ocgcore.DataManager
;
import
ocgcore.LimitManager
;
...
...
@@ -43,30 +41,31 @@ import ocgcore.data.LimitList;
class
CardSearchActivityImpl
extends
BaseActivity
implements
CardLoader
.
CallBack
{
protected
DrawerLayout
mDrawerlayout
;
private
RecyclerView
mListView
;
protected
CardSearcher
mCardSelector
;
protected
CardListAdapter
mCardListAdapater
;
protected
CardLoader
mCardLoader
;
protected
boolean
isLoad
=
false
;
protected
StringManager
mStringManager
=
DataManager
.
get
().
getStringManager
();
protected
LimitManager
mLimitManager
=
DataManager
.
get
().
getLimitManager
();
private
RecyclerView
mListView
;
private
ImageLoader
mImageLoader
;
private
String
intentSearchMessage
;
private
boolean
isFirstCardSearch
=
true
;
private
String
currentCardSearchMessage
=
""
;
private
DuelAssistantManagement
duelAssistantManagement
;
private
CardDetail
mCardDetail
;
private
DialogPlus
mDialog
;
@Override
protected
void
onCreate
(
@Nullable
Bundle
savedInstanceState
)
{
super
.
onCreate
(
savedInstanceState
);
setContentView
(
R
.
layout
.
activity_search
);
duelAssistantManagement
=
DuelAssistantManagement
.
getInstance
();
if
(
TextUtils
.
isEmpty
(
getIntent
().
getStringExtra
(
CardSearchAcitivity
.
SEARCH_MESSAGE
)))
{
if
(
Build
.
VERSION
.
SDK_INT
>=
Build
.
VERSION_CODES
.
Q
)
{
currentCardSearchMessage
=
HomeActivity
.
cardSearchMessage
;
}
else
{
currentCardSearchMessage
=
DuelAssistantService
.
cardSearchMessage
;
}
currentCardSearchMessage
=
duelAssistantManagement
.
getCardSearchMessage
();
}
Toolbar
toolbar
=
$
(
R
.
id
.
toolbar
);
setSupportActionBar
(
toolbar
);
...
...
@@ -111,23 +110,17 @@ class CardSearchActivityImpl extends BaseActivity implements CardLoader.CallBack
@Override
protected
void
onRestart
()
{
super
.
onRestart
();
if
(!
isFirstCardSearch
&&
!
currentCardSearchMessage
.
equals
(
HomeActivity
.
cardSearchMessage
))
{
if
(
Build
.
VERSION
.
SDK_INT
>=
Build
.
VERSION_CODES
.
Q
)
{
currentCardSearchMessage
=
HomeActivity
.
cardSearchMessage
;
}
else
{
currentCardSearchMessage
=
DuelAssistantService
.
cardSearchMessage
;
}
if
(!
isFirstCardSearch
&&
!
currentCardSearchMessage
.
equals
(
duelAssistantManagement
.
getCardSearchMessage
()))
{
currentCardSearchMessage
=
duelAssistantManagement
.
getCardSearchMessage
();
intentSearch
();
}
}
private
void
intentSearch
()
{
// intentSearchMessage=getIntent().getStringExtra(CardSearchAcitivity.SEARCH_MESSAGE);
if
(
Build
.
VERSION
.
SDK_INT
>=
Build
.
VERSION_CODES
.
Q
)
{
currentCardSearchMessage
=
HomeActivity
.
cardSearchMessage
;
}
else
{
currentCardSearchMessage
=
DuelAssistantService
.
cardSearchMessage
;
}
currentCardSearchMessage
=
duelAssistantManagement
.
getCardSearchMessage
();
}
protected
void
setListeners
()
{
...
...
@@ -269,9 +262,6 @@ class CardSearchActivityImpl extends BaseActivity implements CardLoader.CallBack
}
private
CardDetail
mCardDetail
;
private
DialogPlus
mDialog
;
private
boolean
isShowCard
()
{
return
mDialog
!=
null
&&
mDialog
.
isShowing
();
}
...
...
mobile/src/main/java/cn/garymb/ygomobile/ui/home/HomeActivity.java
View file @
e33714f1
...
...
@@ -35,6 +35,10 @@ import com.google.android.material.navigation.NavigationView;
import
com.nightonke.boommenu.BoomButtons.BoomButton
;
import
com.nightonke.boommenu.BoomButtons.TextOutsideCircleButton
;
import
com.nightonke.boommenu.BoomMenuButton
;
import
com.ourygo.assistant.base.listener.OnDuelAssistantListener
;
import
com.ourygo.assistant.service.DuelAssistantService
;
import
com.ourygo.assistant.util.DuelAssistantManagement
;
import
com.ourygo.assistant.util.Util
;
import
com.tencent.bugly.beta.Beta
;
import
com.tencent.smtt.sdk.QbSdk
;
import
com.tubb.smrv.SwipeMenuRecyclerView
;
...
...
@@ -81,30 +85,17 @@ import cn.garymb.ygomobile.utils.YGOUtil;
import
static
cn
.
garymb
.
ygomobile
.
Constants
.
ASSET_SERVER_LIST
;
public
abstract
class
HomeActivity
extends
BaseActivity
implements
NavigationView
.
OnNavigationItemSelectedListener
{
//卡查关键字
public
static
final
String
[]
cardSearchKey
=
new
String
[]{
"?"
,
"?"
};
//加房关键字
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#"
};
//卡组复制
public
static
final
String
[]
DeckTextKey
=
new
String
[]{
"#main"
};
/***
* 剪贴板监听复制内容
*/
private
final
static
String
DECK_URL_PREFIX
=
Constants
.
SCHEME_APP
+
"://"
+
Constants
.
URI_HOST
;
//卡查内容
public
static
String
cardSearchMessage
=
""
;
public
static
String
DeckText
=
""
;
public
abstract
class
HomeActivity
extends
BaseActivity
implements
NavigationView
.
OnNavigationItemSelectedListener
,
OnDuelAssistantListener
{
private
static
final
int
ID_MAINACTIVITY
=
0
;
protected
SwipeMenuRecyclerView
mServerList
;
long
exitLasttime
=
0
;
ShimmerTextView
tv
;
Shimmer
shimmer
;
private
ServerListAdapter
mServerListAdapter
;
private
ServerListManager
mServerListManager
;
private
ClipboardManager
cm
;
private
DuelAssistantManagement
duelAssistantManagement
;
@Override
protected
void
onCreate
(
@Nullable
Bundle
savedInstanceState
)
{
...
...
@@ -151,8 +142,8 @@ public abstract class HomeActivity extends BaseActivity implements NavigationVie
TrPay
.
getInstance
(
HomeActivity
.
this
).
initPaySdk
(
"e1014da420ea4405898c01273d6731b6"
,
"YGOMobile"
);
//check update
Beta
.
checkUpgrade
(
false
,
false
);
//DuelAssistantService
YGOUtil
.
startDuelService
(
this
);
//初始化决斗助手
initDuelAssistant
(
);
//萌卡
StartMycard
();
checkNotch
();
...
...
@@ -164,20 +155,60 @@ public abstract class HomeActivity extends BaseActivity implements NavigationVie
BacktoDuel
();
}
@Override
protected
void
onStart
()
{
super
.
onStart
();
if
(
AppsSettings
.
get
().
isServiceDuelAssistant
()
&&
Build
.
VERSION
.
SDK_INT
>=
Build
.
VERSION_CODES
.
Q
)
{
private
void
duelAssistantCheck
()
{
if
(
AppsSettings
.
get
().
isServiceDuelAssistant
())
{
Handler
handler
=
new
Handler
();
handler
.
postDelayed
(
new
Runnable
()
{
@Override
public
void
run
()
{
getClipboard
(
);
duelAssistantManagement
.
checkClip
(
ID_MAINACTIVITY
);
}
},
500
);
}
}
@Override
protected
void
onStart
()
{
super
.
onStart
();
duelAssistantCheck
();
}
@Override
public
void
onJoinRoom
(
String
password
,
int
id
)
{
if
(
id
==
ID_MAINACTIVITY
)
{
QuickjoinRoom
(
password
);
}
}
@Override
public
void
onCardSearch
(
String
key
,
int
id
)
{
if
(
id
==
ID_MAINACTIVITY
)
{
Intent
intent
=
new
Intent
(
this
,
CardSearchAcitivity
.
class
);
intent
.
putExtra
(
CardSearchAcitivity
.
SEARCH_MESSAGE
,
key
);
startActivity
(
intent
);
}
}
@Override
public
void
onSaveDeck
(
String
message
,
boolean
isUrl
,
int
id
)
{
if
(
id
==
ID_MAINACTIVITY
)
{
saveDeck
(
message
,
isUrl
);
}
}
@Override
public
boolean
isListenerEffective
()
{
return
Util
.
isContextExisted
(
this
);
}
private
void
initDuelAssistant
()
{
duelAssistantManagement
=
DuelAssistantManagement
.
getInstance
();
duelAssistantManagement
.
init
(
getApplicationContext
());
duelAssistantManagement
.
addDuelAssistantListener
(
this
);
YGOUtil
.
startDuelService
(
this
);
}
//检查是否有刘海
private
void
checkNotch
()
{
ScreenUtil
.
findNotchInformation
(
HomeActivity
.
this
,
new
ScreenUtil
.
FindNotchInformation
()
{
...
...
@@ -196,6 +227,7 @@ public abstract class HomeActivity extends BaseActivity implements NavigationVie
@Override
protected
void
onDestroy
()
{
super
.
onDestroy
();
duelAssistantManagement
.
removeDuelAssistantListener
(
this
);
EventBus
.
getDefault
().
unregister
(
this
);
}
...
...
@@ -541,86 +573,6 @@ public abstract class HomeActivity extends BaseActivity implements NavigationVie
}
}
public
void
getClipboard
()
{
cm
=
(
ClipboardManager
)
getSystemService
(
Context
.
CLIPBOARD_SERVICE
);
ClipData
clipData
=
cm
.
getPrimaryClip
();
if
(
clipData
==
null
)
return
;
ClipData
.
Item
cs
=
clipData
.
getItemAt
(
0
);
final
String
clipMessage
;
if
(
cs
.
getText
()
!=
null
)
{
clipMessage
=
cs
.
getText
().
toString
();
}
else
{
clipMessage
=
null
;
}
//如果复制的内容为空则不执行下面的代码
if
(
TextUtils
.
isEmpty
(
clipMessage
))
{
return
;
}
clipData
=
ClipData
.
newPlainText
(
""
,
""
);
cm
.
setPrimaryClip
(
clipData
);
//如果复制的内容是多行作为卡组去判断
if
(
clipMessage
.
contains
(
"\n"
))
{
for
(
String
s
:
DeckTextKey
)
{
//只要包含其中一个关键字就视为卡组
if
(
clipMessage
.
contains
(
s
))
{
saveDeck
(
clipMessage
,
false
);
return
;
}
}
return
;
}
//如果是卡组url
int
deckStart
=
clipMessage
.
indexOf
(
DECK_URL_PREFIX
);
if
(
deckStart
!=
-
1
)
{
saveDeck
(
clipMessage
.
substring
(
deckStart
+
DECK_URL_PREFIX
.
length
(),
clipMessage
.
length
()),
true
);
return
;
}
int
start
=
-
1
;
int
end
=
-
1
;
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
;
}
QuickjoinRoom
(
clipMessage
,
start
,
end
);
}
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
;
}
Intent
intent
=
new
Intent
(
this
,
CardSearchAcitivity
.
class
);
intent
.
putExtra
(
CardSearchAcitivity
.
SEARCH_MESSAGE
,
cardSearchMessage
);
startActivity
(
intent
);
}
}
}
}
private
void
saveDeck
(
String
deckMessage
,
boolean
isUrl
)
{
DialogPlus
dialog
=
new
DialogPlus
(
this
);
dialog
.
setTitle
(
R
.
string
.
question
);
...
...
@@ -657,19 +609,18 @@ public abstract class HomeActivity extends BaseActivity implements NavigationVie
});
}
private
void
QuickjoinRoom
(
String
ss
,
int
start
,
int
end
)
{
final
String
password
=
ss
.
substring
(
start
,
ss
.
length
());
private
void
QuickjoinRoom
(
String
password
)
{
DialogPlus
dialog
=
new
DialogPlus
(
this
);
dialog
.
setTitle
(
R
.
string
.
question
);
dialog
.
setMessage
(
getString
(
R
.
string
.
quick_join
)
+
password
+
"\""
);
dialog
.
setMessageGravity
(
Gravity
.
CENTER_HORIZONTAL
);
dialog
.
set
Lef
tButtonText
(
R
.
string
.
Cancel
);
dialog
.
set
Righ
tButtonText
(
R
.
string
.
join
);
dialog
.
set
Righ
tButtonText
(
R
.
string
.
Cancel
);
dialog
.
set
Lef
tButtonText
(
R
.
string
.
join
);
dialog
.
show
();
dialog
.
set
Lef
tButtonListener
((
dlg
,
s
)
->
{
dialog
.
set
Righ
tButtonListener
((
dlg
,
s
)
->
{
dialog
.
dismiss
();
});
dialog
.
set
Righ
tButtonListener
((
dlg
,
s
)
->
{
dialog
.
set
Lef
tButtonListener
((
dlg
,
s
)
->
{
dialog
.
dismiss
();
ServerListAdapter
mServerListAdapter
=
new
ServerListAdapter
(
this
);
ServerListManager
mServerListManager
=
new
ServerListManager
(
this
,
mServerListAdapter
);
...
...
mobile/src/main/java/cn/garymb/ygomobile/ui/home/MainActivity.java
View file @
e33714f1
...
...
@@ -30,7 +30,9 @@ import cn.garymb.ygomobile.ui.plus.VUiKit;
import
cn.garymb.ygomobile.utils.ComponentUtils
;
import
cn.garymb.ygomobile.utils.IOUtils
;
import
cn.garymb.ygomobile.utils.NetUtils
;
import
cn.garymb.ygomobile.utils.PermissionUtil
;
import
cn.garymb.ygomobile.utils.YGOUtil
;
import
com.ourygo.assistant.util.PermissionUtil
;
import
static
cn
.
garymb
.
ygomobile
.
Constants
.
ACTION_RELOAD
;
import
static
cn
.
garymb
.
ygomobile
.
Constants
.
NETWORK_IMAGE
;
...
...
@@ -133,14 +135,14 @@ public class MainActivity extends HomeActivity {
@Override
public
void
onDismiss
(
DialogInterface
dialogInterface
)
{
if
(
AppsSettings
.
get
().
isServiceDuelAssistant
()
&&
Build
.
VERSION
.
SDK_INT
<
Build
.
VERSION_CODES
.
Q
)
Permission
Util
.
isServicePermission
(
MainActivity
.
this
,
true
);
YGO
Util
.
isServicePermission
(
MainActivity
.
this
,
true
);
}
});
dialog
.
show
();
}
}
else
{
if
(
AppsSettings
.
get
().
isServiceDuelAssistant
()
&&
Build
.
VERSION
.
SDK_INT
<
Build
.
VERSION_CODES
.
Q
)
Permission
Util
.
isServicePermission
(
MainActivity
.
this
,
true
);
YGO
Util
.
isServicePermission
(
MainActivity
.
this
,
true
);
getGameUriManager
().
doIntent
(
getIntent
());
}
...
...
mobile/src/main/java/cn/garymb/ygomobile/utils/PermissionUtil.java
deleted
100644 → 0
View file @
6cd0c10e
package
cn.garymb.ygomobile.utils
;
import
android.content.Context
;
import
android.content.DialogInterface
;
import
android.content.Intent
;
import
android.net.Uri
;
import
android.os.Build
;
import
android.provider.Settings
;
import
androidx.core.app.NotificationManagerCompat
;
import
cn.garymb.ygomobile.App
;
import
cn.garymb.ygomobile.lite.R
;
import
cn.garymb.ygomobile.ui.plus.DialogPlus
;
public
class
PermissionUtil
{
//判断应用是否开启了通知权限
public
static
boolean
isNotificationListenerEnabled
(
Context
context
)
{
return
NotificationManagerCompat
.
from
(
context
).
areNotificationsEnabled
();
}
public
static
DialogPlus
isNotificationPermission
(
Context
context
){
if
(!
isNotificationListenerEnabled
(
context
)){
DialogPlus
dialog
=
new
DialogPlus
(
context
);
dialog
.
setTitle
(
R
.
string
.
tip
);
dialog
.
setMessage
(
R
.
string
.
EXPAND_STATUS_BAR
);
dialog
.
setLeftButtonText
(
R
.
string
.
to_open
);
dialog
.
setRightButtonText
(
R
.
string
.
Cancel
);
dialog
.
setLeftButtonListener
(
new
DialogInterface
.
OnClickListener
()
{
@Override
public
void
onClick
(
DialogInterface
dialogInterface
,
int
i
)
{
// 根据isOpened结果,判断是否需要提醒用户跳转AppInfo页面,去打开App通知权限
Intent
intent
=
new
Intent
();
intent
.
setAction
(
Settings
.
ACTION_APPLICATION_DETAILS_SETTINGS
);
Uri
uri
=
Uri
.
fromParts
(
"package"
,
App
.
get
().
getPackageName
(),
null
);
intent
.
setData
(
uri
);
context
.
startActivity
(
intent
);
dialog
.
dismiss
();
}
});
dialog
.
setRightButtonListener
(
new
DialogInterface
.
OnClickListener
()
{
@Override
public
void
onClick
(
DialogInterface
dialogInterface
,
int
i
)
{
dialog
.
dismiss
();
}
});
// dialog.show();
return
dialog
;
}
return
null
;
}
//判断是否有悬浮窗权限
public
static
boolean
isServicePermission
(
Context
context
,
boolean
isIntentPermission
)
{
if
(
Build
.
VERSION
.
SDK_INT
>=
Build
.
VERSION_CODES
.
M
)
{
if
(!
Settings
.
canDrawOverlays
(
context
))
{
if
(
isIntentPermission
)
{
DialogPlus
dialog
=
new
DialogPlus
(
context
);
dialog
.
setTitle
(
R
.
string
.
tip
);
dialog
.
setMessage
(
R
.
string
.
SYSTEM_ALERT_WINDOW
);
dialog
.
setLeftButtonText
(
R
.
string
.
to_open
);
dialog
.
setRightButtonText
(
R
.
string
.
Cancel
);
dialog
.
setLeftButtonListener
(
new
DialogInterface
.
OnClickListener
()
{
@Override
public
void
onClick
(
DialogInterface
dialogInterface
,
int
i
)
{
context
.
startActivity
(
new
Intent
(
Settings
.
ACTION_MANAGE_OVERLAY_PERMISSION
,
Uri
.
parse
(
"package:"
+
context
.
getPackageName
())));
dialog
.
dismiss
();
}
});
dialog
.
setOnDismissListener
(
new
DialogInterface
.
OnDismissListener
()
{
@Override
public
void
onDismiss
(
DialogInterface
dialogInterface
)
{
DialogPlus
dialogPlus
=
isNotificationPermission
(
context
);
if
(
dialogPlus
!=
null
)
dialog
.
show
();
}
});
dialog
.
setRightButtonListener
(
new
DialogInterface
.
OnClickListener
()
{
@Override
public
void
onClick
(
DialogInterface
dialogInterface
,
int
i
)
{
dialog
.
dismiss
();
}
});
dialog
.
show
();
}
return
false
;
}
}
return
true
;
}
}
mobile/src/main/java/cn/garymb/ygomobile/utils/YGOUtil.java
View file @
e33714f1
...
...
@@ -4,19 +4,22 @@ import android.app.Activity;
import
android.content.ClipData
;
import
android.content.ClipboardManager
;
import
android.content.Context
;
import
android.content.
Intent
;
import
android.content.
DialogInterface
;
import
android.os.Build
;
import
android.util.Log
;
import
android.view.View
;
import
android.view.inputmethod.InputMethodManager
;
import
android.widget.Toast
;
import
androidx.core.content.ContextCompat
;
import
com.ourygo.assistant.util.PermissionUtil
;
import
com.ourygo.assistant.util.Util
;
import
cn.garymb.ygomobile.App
;
import
cn.garymb.ygomobile.AppsSettings
;
import
cn.garymb.ygomobile.lite.R
;
import
cn.garymb.ygomobile.ui.plus.DialogPlus
;
import
com.ourygo.assistant.service.DuelAssistantService
;
import
com.ourygo.assistant.util.Util
;
public
class
YGOUtil
{
...
...
@@ -25,20 +28,22 @@ public class YGOUtil {
Toast
.
makeText
(
App
.
get
(),
message
,
Toast
.
LENGTH_SHORT
).
show
();
}
public
static
int
c
(
int
colorId
){
return
ContextCompat
.
getColor
(
App
.
get
(),
colorId
);
public
static
int
c
(
int
colorId
)
{
return
ContextCompat
.
getColor
(
App
.
get
(),
colorId
);
}
public
static
String
s
(
int
stringId
){
public
static
String
s
(
int
stringId
)
{
return
App
.
get
().
getResources
().
getString
(
stringId
);
}
/**
* 根据卡密获取高清图下载地址
* @param code 卡密
* @return 高清图url
*
* @param code 卡密
* @return 高清图url
*/
public
static
String
getCardImageDetailUrl
(
int
code
){
return
"https://c
ode.mycard.moe/fallenstardust/ygoimage/raw/master/"
+
code
+
".jpg"
;
public
static
String
getCardImageDetailUrl
(
int
code
)
{
return
"https://c
dn01.moecube.com/images/ygomobile/"
+
code
+
".jpg"
;
}
...
...
@@ -58,15 +63,86 @@ public class YGOUtil {
//复制字符串到剪贴板
public
static
void
copyMessage
(
Context
context
,
String
message
)
{
ClipboardManager
cmb
=
(
ClipboardManager
)
context
.
getSystemService
(
Context
.
CLIPBOARD_SERVICE
);
if
(
cmb
==
null
)
if
(
cmb
==
null
)
return
;
cmb
.
setPrimaryClip
(
ClipData
.
newPlainText
(
null
,
message
));
//复制命令
}
public
static
void
startDuelService
(
Context
context
)
{
if
(
AppsSettings
.
get
().
isServiceDuelAssistant
())
{
Util
.
startDuelService
(
context
);
if
(!
Util
.
startDuelService
(
context
))
{
getNotificationPermissionDialog
(
context
).
show
();
}
}
}
//判断是否有悬浮窗权限
public
static
boolean
isServicePermission
(
Context
context
,
boolean
isIntentPermission
)
{
if
(!
PermissionUtil
.
isServicePermission
(
context
))
{
if
(
isIntentPermission
)
{
DialogPlus
dialog
=
new
DialogPlus
(
context
);
dialog
.
setTitle
(
R
.
string
.
tip
);
dialog
.
setMessage
(
R
.
string
.
SYSTEM_ALERT_WINDOW
);
dialog
.
setLeftButtonText
(
R
.
string
.
to_open
);
dialog
.
setRightButtonText
(
R
.
string
.
Cancel
);
dialog
.
setLeftButtonListener
(
new
DialogInterface
.
OnClickListener
()
{
@Override
public
void
onClick
(
DialogInterface
dialogInterface
,
int
i
)
{
dialog
.
dismiss
();
context
.
startActivity
(
Util
.
getServicePermissionIntent
(
context
));
}
});
dialog
.
setOnDismissListener
(
new
DialogInterface
.
OnDismissListener
()
{
@Override
public
void
onDismiss
(
DialogInterface
dialogInterface
)
{
Log
.
e
(
"YGOUtil"
,
"当前版本"
+
Build
.
VERSION
.
SDK_INT
);
Log
.
e
(
"YGOUtil"
,
"o的版本"
+
Build
.
VERSION_CODES
.
O
);
if
(
Build
.
VERSION
.
SDK_INT
>=
Build
.
VERSION_CODES
.
O
&&!
PermissionUtil
.
isNotificationListenerEnabled
(
context
))
{
getNotificationPermissionDialog
(
context
).
show
();
}
}
});
dialog
.
setRightButtonListener
(
new
DialogInterface
.
OnClickListener
()
{
@Override
public
void
onClick
(
DialogInterface
dialogInterface
,
int
i
)
{
dialog
.
dismiss
();
}
});
dialog
.
show
();
}
return
false
;
}
return
true
;
}
public
static
DialogPlus
getNotificationPermissionDialog
(
Context
context
)
{
DialogPlus
dialog
=
new
DialogPlus
(
context
);
dialog
.
setTitle
(
R
.
string
.
tip
);
dialog
.
setMessage
(
R
.
string
.
EXPAND_STATUS_BAR
);
dialog
.
setLeftButtonText
(
R
.
string
.
to_open
);
dialog
.
setRightButtonText
(
R
.
string
.
Cancel
);
dialog
.
setLeftButtonListener
(
new
DialogInterface
.
OnClickListener
()
{
@Override
public
void
onClick
(
DialogInterface
dialogInterface
,
int
i
)
{
// 根据isOpened结果,判断是否需要提醒用户跳转AppInfo页面,去打开App通知权限
context
.
startActivity
(
Util
.
getNotificationPermissionInitent
(
context
));
dialog
.
dismiss
();
}
});
dialog
.
setRightButtonListener
(
new
DialogInterface
.
OnClickListener
()
{
@Override
public
void
onClick
(
DialogInterface
dialogInterface
,
int
i
)
{
dialog
.
dismiss
();
}
});
return
dialog
;
}
}
mobile/src/main/java/com/ourygo/assistant/base/listener/OnClipChangedListener.java
0 → 100644
View file @
e33714f1
package
com.ourygo.assistant.base.listener
;
public
interface
OnClipChangedListener
{
void
onClipChanged
(
String
clipMessge
,
boolean
isCheck
,
int
id
);
}
mobile/src/main/java/com/ourygo/assistant/base/listener/OnDuelAssistantListener.java
0 → 100644
View file @
e33714f1
package
com.ourygo.assistant.base.listener
;
public
interface
OnDuelAssistantListener
{
void
onJoinRoom
(
String
password
,
int
id
);
void
onCardSearch
(
String
key
,
int
id
);
void
onSaveDeck
(
String
message
,
boolean
isUrl
,
int
id
);
boolean
isListenerEffective
();
}
\ No newline at end of file
mobile/src/main/java/com/ourygo/assistant/service/DuelAssistantService.java
View file @
e33714f1
This diff is collapsed.
Click to expand it.
mobile/src/main/java/com/ourygo/assistant/util/ClipManagement.java
0 → 100644
View file @
e33714f1
package
com.ourygo.assistant.util
;
import
android.content.ClipData
;
import
android.content.ClipboardManager
;
import
android.content.Context
;
import
android.text.TextUtils
;
import
com.ourygo.assistant.base.listener.OnClipChangedListener
;
public
class
ClipManagement
implements
ClipboardManager
.
OnPrimaryClipChangedListener
{
public
static
final
int
ID_CLIP_LISTENER
=-
1
;
private
static
final
ClipManagement
ourInstance
=
new
ClipManagement
();
private
ClipboardManager
clipboardManager
;
private
OnClipChangedListener
onClipChangedListener
;
private
ClipManagement
()
{
}
public
static
ClipManagement
getInstance
()
{
return
ourInstance
;
}
public
void
setOnClipChangedListener
(
OnClipChangedListener
onClipChangedListener
)
{
this
.
onClipChangedListener
=
onClipChangedListener
;
}
public
void
startClipboardListener
(
Context
context
)
{
if
(
clipboardManager
==
null
)
clipboardManager
=
(
ClipboardManager
)
context
.
getSystemService
(
Context
.
CLIPBOARD_SERVICE
);
if
(
clipboardManager
==
null
)
return
;
clipboardManager
.
addPrimaryClipChangedListener
(
this
);
}
public
void
removeClipboardListener
()
{
if
(
clipboardManager
==
null
)
return
;
clipboardManager
.
removePrimaryClipChangedListener
(
this
);
}
//获取剪贴板内容
public
String
getClipMessage
()
{
ClipData
clipData
=
clipboardManager
.
getPrimaryClip
();
if
(
clipData
==
null
)
return
null
;
return
clipData
.
getItemAt
(
0
).
getText
().
toString
();
}
public
void
clear
(){
removeClipboardListener
();
onClipChangedListener
=
null
;
}
@Override
public
void
onPrimaryClipChanged
()
{
final
String
clipMessage
=
getClipMessage
();
//如果复制的内容为空则不执行下面的代码
if
(
TextUtils
.
isEmpty
(
clipMessage
))
{
return
;
}
if
(
onClipChangedListener
!=
null
)
onClipChangedListener
.
onClipChanged
(
clipMessage
,
false
,
ID_CLIP_LISTENER
);
}
public
void
onPrimaryClipChanged
(
boolean
isCheck
,
int
id
)
{
final
String
clipMessage
=
getClipMessage
();
//如果复制的内容为空则不执行下面的代码
if
(
TextUtils
.
isEmpty
(
clipMessage
))
{
return
;
}
if
(
onClipChangedListener
!=
null
)
onClipChangedListener
.
onClipChanged
(
clipMessage
,
isCheck
,
id
);
}
}
mobile/src/main/java/com/ourygo/assistant/util/DuelAssistantManagement.java
0 → 100644
View file @
e33714f1
package
com.ourygo.assistant.util
;
import
android.content.Context
;
import
android.text.TextUtils
;
import
android.util.Log
;
import
com.ourygo.assistant.base.listener.OnClipChangedListener
;
import
com.ourygo.assistant.base.listener.OnDuelAssistantListener
;
import
java.util.ArrayList
;
import
java.util.List
;
public
class
DuelAssistantManagement
implements
OnClipChangedListener
{
private
static
final
DuelAssistantManagement
ourInstance
=
new
DuelAssistantManagement
();
private
Context
context
;
private
List
<
OnDuelAssistantListener
>
onDuelAssistantListenerList
;
private
ClipManagement
clipManagement
;
//卡查内容
private
String
cardSearchMessage
=
""
;
private
String
lastMessage
=
""
;
private
DuelAssistantManagement
()
{
onDuelAssistantListenerList
=
new
ArrayList
<>();
}
public
static
DuelAssistantManagement
getInstance
()
{
return
ourInstance
;
}
public
void
init
(
Context
context
)
{
this
.
context
=
context
;
//初始化剪贴板监听
initClipListener
();
}
public
void
addDuelAssistantListener
(
OnDuelAssistantListener
onDuelAssistantListener
)
{
if
(!
onDuelAssistantListenerList
.
contains
(
onDuelAssistantListener
))
onDuelAssistantListenerList
.
add
(
onDuelAssistantListener
);
}
public
void
removeDuelAssistantListener
(
OnDuelAssistantListener
onDuelAssistantListener
)
{
onDuelAssistantListenerList
.
remove
(
onDuelAssistantListener
);
}
public
List
<
OnDuelAssistantListener
>
getOnDuelAssistantListenerList
()
{
return
onDuelAssistantListenerList
;
}
private
void
initClipListener
()
{
clipManagement
=
ClipManagement
.
getInstance
();
clipManagement
.
startClipboardListener
(
context
);
clipManagement
.
setOnClipChangedListener
(
this
);
}
public
void
clear
()
{
context
=
null
;
lastMessage
=
""
;
cardSearchMessage
=
""
;
onDuelAssistantListenerList
.
clear
();
}
public
String
getCardSearchMessage
()
{
return
cardSearchMessage
;
}
public
boolean
deckCheck
(
String
message
,
int
id
)
{
//如果复制的内容是多行作为卡组去判断
if
(
message
.
contains
(
"\n"
))
{
for
(
String
s
:
Record
.
CARD_SEARCH_KEY
)
{
//只要包含其中一个关键字就视为卡组
if
(
message
.
contains
(
s
))
{
onSaveDeck
(
message
,
false
,
id
);
return
true
;
}
}
return
true
;
}
//如果是卡组url
int
deckStart
=
message
.
indexOf
(
Record
.
DECK_URL_PREFIX
);
if
(
deckStart
!=
-
1
)
{
onSaveDeck
(
message
.
substring
(
deckStart
+
Record
.
DECK_URL_PREFIX
.
length
()),
true
,
id
);
return
true
;
}
return
false
;
}
public
boolean
roomCheck
(
String
message
,
int
id
)
{
int
start
=
-
1
;
int
end
=
-
1
;
String
passwordPrefixKey
=
null
;
for
(
String
s
:
Record
.
PASSWORD_PREFIX
)
{
start
=
message
.
indexOf
(
s
);
passwordPrefixKey
=
s
;
if
(
start
!=
-
1
)
{
break
;
}
}
if
(
start
!=
-
1
)
{
//如果密码含有空格,则以空格结尾
end
=
message
.
indexOf
(
" "
,
start
);
//如果不含有空格则取片尾所有
if
(
end
==
-
1
)
{
end
=
message
.
length
();
}
else
{
//如果只有密码前缀而没有密码内容则不跳转
if
(
end
-
start
==
passwordPrefixKey
.
length
())
return
false
;
}
//如果有悬浮窗权限再显示
if
(
PermissionUtil
.
isServicePermission
(
context
))
{
onJoinRoom
(
message
.
substring
(
start
,
end
),
id
);
return
true
;
}
}
return
false
;
}
public
boolean
cardSearchCheck
(
String
message
,
int
id
)
{
for
(
String
s
:
Record
.
CARD_SEARCH_KEY
)
{
int
cardSearchStart
=
message
.
indexOf
(
s
);
if
(
cardSearchStart
!=
-
1
)
{
//卡查内容
cardSearchMessage
=
message
.
substring
(
cardSearchStart
+
s
.
length
(),
message
.
length
());
//如果复制的文本里带?号后面没有内容则不跳转
if
(
TextUtils
.
isEmpty
(
cardSearchMessage
))
{
return
false
;
}
//如果卡查内容包含“=”并且复制的内容包含“.”不卡查
if
(
cardSearchMessage
.
contains
(
"="
)
&&
message
.
contains
(
"."
))
{
return
false
;
}
onCardSearch
(
cardSearchMessage
,
id
);
return
true
;
}
}
return
false
;
}
private
void
onJoinRoom
(
String
password
,
int
id
)
{
int
i
=
0
;
while
(
i
<
onDuelAssistantListenerList
.
size
())
{
OnDuelAssistantListener
onDuelAssistantListener
=
onDuelAssistantListenerList
.
get
(
i
);
if
(
onDuelAssistantListener
.
isListenerEffective
())
{
onDuelAssistantListener
.
onJoinRoom
(
password
,
id
);
i
++;
}
else
{
onDuelAssistantListenerList
.
remove
(
i
);
}
}
}
private
void
onCardSearch
(
String
key
,
int
id
)
{
int
i
=
0
;
while
(
i
<
onDuelAssistantListenerList
.
size
())
{
OnDuelAssistantListener
onDuelAssistantListener
=
onDuelAssistantListenerList
.
get
(
i
);
if
(
onDuelAssistantListener
.
isListenerEffective
())
{
onDuelAssistantListener
.
onCardSearch
(
key
,
id
);
i
++;
}
else
{
onDuelAssistantListenerList
.
remove
(
i
);
}
}
}
public
void
onSaveDeck
(
String
message
,
boolean
isUrl
,
int
id
)
{
int
i
=
0
;
while
(
i
<
onDuelAssistantListenerList
.
size
())
{
OnDuelAssistantListener
onDuelAssistantListener
=
onDuelAssistantListenerList
.
get
(
i
);
if
(
onDuelAssistantListener
.
isListenerEffective
())
{
onDuelAssistantListener
.
onSaveDeck
(
message
,
isUrl
,
id
);
i
++;
}
else
{
onDuelAssistantListenerList
.
remove
(
i
);
}
}
}
@Override
public
void
onClipChanged
(
String
clipMessage
,
boolean
isCheck
,
int
id
)
{
if
(
isCheck
)
if
(
clipMessage
.
equals
(
lastMessage
))
return
;
if
(
deckCheck
(
clipMessage
,
id
))
{
lastMessage
=
clipMessage
;
}
else
if
(
roomCheck
(
clipMessage
,
id
))
{
lastMessage
=
clipMessage
;
}
else
if
(
cardSearchCheck
(
clipMessage
,
id
))
lastMessage
=
clipMessage
;
}
public
void
checkClip
(
int
id
)
{
clipManagement
.
onPrimaryClipChanged
(
true
,
id
);
}
}
mobile/src/main/java/com/ourygo/assistant/util/PermissionUtil.java
0 → 100644
View file @
e33714f1
package
com.ourygo.assistant.util
;
import
android.content.Context
;
import
android.os.Build
;
import
android.provider.Settings
;
import
androidx.core.app.NotificationManagerCompat
;
public
class
PermissionUtil
{
//判断应用是否开启了通知权限
public
static
boolean
isNotificationListenerEnabled
(
Context
context
)
{
return
NotificationManagerCompat
.
from
(
context
).
areNotificationsEnabled
();
}
//判断是否有悬浮窗权限
public
static
boolean
isServicePermission
(
Context
context
)
{
if
(
Build
.
VERSION
.
SDK_INT
>=
Build
.
VERSION_CODES
.
M
)
{
if
(!
Settings
.
canDrawOverlays
(
context
))
return
false
;
}
return
true
;
}
}
mobile/src/main/java/com/ourygo/assistant/util/Record.java
0 → 100644
View file @
e33714f1
package
com.ourygo.assistant.util
;
import
cn.garymb.ygomobile.Constants
;
public
class
Record
{
//卡查关键字
public
static
final
String
[]
CARD_SEARCH_KEY
=
new
String
[]{
"?"
,
"?"
};
//加房关键字
public
static
final
String
[]
PASSWORD_PREFIX
=
{
"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#"
};
//卡组复制
public
static
final
String
[]
DeckTextKey
=
new
String
[]{
"#main"
};
//卡组url前缀
public
static
final
String
DECK_URL_PREFIX
=
"ygo://deck"
;
}
mobile/src/main/java/com/ourygo/assistant/util/Util.java
View file @
e33714f1
package
com.ourygo.assistant.util
;
import
android.app.Activity
;
import
android.app.ActivityManager
;
import
android.app.Application
;
import
android.app.Service
;
import
android.content.ComponentName
;
import
android.content.Context
;
import
android.content.Intent
;
import
android.net.Uri
;
import
android.os.Build
;
import
android.provider.Settings
;
import
com.ourygo.assistant.service.DuelAssistantService
;
import
cn.garymb.ygomobile.ui.plus.DialogPlus
;
import
cn.garymb.ygomobile.utils.PermissionUtil
;
import
java.util.List
;
public
class
Util
{
public
static
void
startDuelService
(
Context
context
)
{
public
static
boolean
startDuelService
(
Context
context
)
{
if
(
Build
.
VERSION
.
SDK_INT
<
Build
.
VERSION_CODES
.
Q
)
{
if
(
Build
.
VERSION
.
SDK_INT
>=
Build
.
VERSION_CODES
.
O
)
{
DialogPlus
dialogPlus
=
PermissionUtil
.
isNotificationPermission
(
context
);
if
(
dialogPlus
==
null
)
if
(
PermissionUtil
.
isNotificationListenerEnabled
(
context
))
context
.
startForegroundService
(
new
Intent
(
context
,
DuelAssistantService
.
class
));
else
dialogPlus
.
show
()
;
return
false
;
}
else
{
context
.
startService
(
new
Intent
(
context
,
DuelAssistantService
.
class
));
}
}
return
true
;
}
public
static
Intent
getNotificationPermissionInitent
(
Context
context
){
Intent
intent
=
new
Intent
();
intent
.
setAction
(
Settings
.
ACTION_APPLICATION_DETAILS_SETTINGS
);
Uri
uri
=
Uri
.
fromParts
(
"package"
,
context
.
getPackageName
(),
null
);
intent
.
setData
(
uri
);
return
intent
;
}
public
static
Intent
getServicePermissionIntent
(
Context
context
){
if
(
Build
.
VERSION
.
SDK_INT
>=
Build
.
VERSION_CODES
.
M
)
{
return
new
Intent
(
Settings
.
ACTION_MANAGE_OVERLAY_PERMISSION
,
Uri
.
parse
(
"package:"
+
context
.
getPackageName
()));
}
return
null
;
}
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
);
}
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
;
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment