diff --git a/app/src/main/java/com/gh/common/util/DataUtils.java b/app/src/main/java/com/gh/common/util/DataUtils.java
index 30a4161275..438e01e89d 100644
--- a/app/src/main/java/com/gh/common/util/DataUtils.java
+++ b/app/src/main/java/com/gh/common/util/DataUtils.java
@@ -180,9 +180,11 @@ public class DataUtils {
if (idCardEntity != null) {
boolean isCertificated = !TextUtils.isEmpty(data.getIdCard().getId());
boolean isAdult = data.getIdCard().getMinor() == null || !data.getIdCard().getMinor();
+ boolean isCertificating = data.getIdCard().getStatus() == 1;
values.put(GhContentProvider.KEY_IS_CERTIFICATED, isCertificated); // 是否认证
values.put(GhContentProvider.KEY_IS_ADULT, isAdult); // 是否成年
+ values.put(GhContentProvider.KEY_IS_CERTIFICATING, isCertificating); // 是否认证中
if (!isCertificated) {
RealNameHelper.updateCertificationStatus(0);
@@ -196,6 +198,7 @@ public class DataUtils {
} else {
values.put(GhContentProvider.KEY_IS_CERTIFICATED, false);
values.put(GhContentProvider.KEY_IS_ADULT, false);
+ values.put(GhContentProvider.KEY_IS_CERTIFICATING, false);
RealNameHelper.updateCertificationStatus(0);
}
diff --git a/app/src/main/java/com/gh/common/util/DownloadObserver.kt b/app/src/main/java/com/gh/common/util/DownloadObserver.kt
index 02cc0bbc53..075101fd9f 100644
--- a/app/src/main/java/com/gh/common/util/DownloadObserver.kt
+++ b/app/src/main/java/com/gh/common/util/DownloadObserver.kt
@@ -8,6 +8,7 @@ import com.gh.common.xapk.XapkInstaller
import com.gh.download.DownloadDataHelper
import com.gh.download.DownloadManager
import com.gh.gamecenter.R
+import com.gh.gamecenter.ShellActivity
import com.gh.gamecenter.common.base.GlobalActivityManager.getCurrentPageEntity
import com.gh.gamecenter.common.base.GlobalActivityManager.getLastPageEntity
import com.gh.gamecenter.common.base.activity.BaseActivity
@@ -171,6 +172,33 @@ object DownloadObserver {
ToastUtils.toast("该游戏未接入防沉迷系统,暂不支持下载")
}
+ // 删除任务
+ downloadEntity.status = DownloadStatus.cancel
+ downloadManager.cancel(downloadEntity.url)
+ } else if (DownloadStatus.isCertificating == downloadEntity.status) {
+ // 未接入防沉迷系统
+ val currentActivity = AppManager.getInstance().currentActivity()
+
+ if (currentActivity != null) {
+ DialogHelper.showDialog(
+ context = currentActivity,
+ title = "实名提示",
+ content = "您当前的身份信息正在认证中,根据相关政策要求,该游戏需通过认证后才能进行下载",
+ cancelText = "知道了",
+ confirmText = "查看实名认证",
+ cancelClickCallback = null,
+ confirmClickCallback = {
+ currentActivity.startActivity(
+ ShellActivity.getIntent(
+ currentActivity,
+ ShellActivity.Type.REAL_NAME_INFO,
+ ))
+ }
+ )
+ } else {
+ ToastUtils.toast("您当前的身份信息正在认证中,根据相关政策要求,该游戏需通过认证后才能进行下载")
+ }
+
// 删除任务
downloadEntity.status = DownloadStatus.cancel
downloadManager.cancel(downloadEntity.url)
diff --git a/app/src/main/java/com/gh/gamecenter/fragment/MainWrapperFragment.kt b/app/src/main/java/com/gh/gamecenter/fragment/MainWrapperFragment.kt
index 29136fbc75..7f49755f92 100644
--- a/app/src/main/java/com/gh/gamecenter/fragment/MainWrapperFragment.kt
+++ b/app/src/main/java/com/gh/gamecenter/fragment/MainWrapperFragment.kt
@@ -510,6 +510,8 @@ class MainWrapperFragment : BaseFragment_ViewPager_Checkable(), OnBackPressedLis
})
}
applyPkgConfig()
+
+ updateRealNameErrorContainer()
}
override fun handleOnClick(view: View): Boolean {
diff --git a/app/src/main/java/com/gh/gamecenter/provider/GhContentProvider.kt b/app/src/main/java/com/gh/gamecenter/provider/GhContentProvider.kt
index 14f9a61f4e..0a219f4eb7 100644
--- a/app/src/main/java/com/gh/gamecenter/provider/GhContentProvider.kt
+++ b/app/src/main/java/com/gh/gamecenter/provider/GhContentProvider.kt
@@ -31,13 +31,13 @@ class GhContentProvider : ContentProvider() {
private fun initProviderSqliteHelper(context: Context?) {
val helper: SQLiteOpenHelper =
- object : SQLiteOpenHelper(context, CERTIFICATION_DATABASE_NAME, null, 2) {
+ object : SQLiteOpenHelper(context, CERTIFICATION_DATABASE_NAME, null, 3) {
override fun onCreate(db: SQLiteDatabase) {
- // 创建表格
val sql = "CREATE TABLE $CERTIFICATION_TABLE_NAME(" +
"$KEY_PRIMARY_KEY INTEGER PRIMARY KEY AUTOINCREMENT," +
"$KEY_IS_CERTIFICATED BOOL," +
- "$KEY_IS_ADULT BOOL" +
+ "$KEY_IS_ADULT BOOL," +
+ "$KEY_IS_CERTIFICATING BOOL" +
")"
db.execSQL(sql)
@@ -57,7 +57,7 @@ class GhContentProvider : ContentProvider() {
}
override fun onUpgrade(db: SQLiteDatabase, oldVersion: Int, newVersion: Int) {
- if (oldVersion == 1 && newVersion == 2) {
+ if (oldVersion == 1) {
val deviceSql = "CREATE TABLE ${DEVICE_TABLE_NAME}(" +
"$KEY_PRIMARY_KEY INTEGER PRIMARY KEY AUTOINCREMENT," +
"$KEY_GID TEXT," +
@@ -65,6 +65,12 @@ class GhContentProvider : ContentProvider() {
")"
db.execSQL(deviceSql)
}
+
+ if (oldVersion == 1 || oldVersion == 2) {
+ val addCertificatingColumnSql =
+ "ALTER TABLE $CERTIFICATION_TABLE_NAME ADD COLUMN $KEY_IS_CERTIFICATING BOOL DEFAULT FALSE"
+ db.execSQL(addCertificatingColumnSql)
+ }
}
}
mSqLiteDatabase = helper.writableDatabase
@@ -243,6 +249,7 @@ class GhContentProvider : ContentProvider() {
const val KEY_PRIMARY_KEY = "primary_key"
const val KEY_IS_CERTIFICATED = "is_certificated"
+ const val KEY_IS_CERTIFICATING = "is_certificating" // 是否正在认证中
const val KEY_IS_ADULT = "is_adult"
const val KEY_GID = "gid"
const val KEY_ANDROID_ID = "android_id"
diff --git a/app/src/main/java/com/gh/ndownload/NDownloadBridge.kt b/app/src/main/java/com/gh/ndownload/NDownloadBridge.kt
index 5169885c73..cbb3cb4f81 100644
--- a/app/src/main/java/com/gh/ndownload/NDownloadBridge.kt
+++ b/app/src/main/java/com/gh/ndownload/NDownloadBridge.kt
@@ -436,25 +436,29 @@ object NDownloadBridge : InnerDownloadListener, IErrorRetryHandler {
private fun handlePreDownloadForbiddenException(downloadEntity: DownloadEntity, errorString: String) {
try {
val resultObject = JSONObject(errorString)
+ val code = resultObject.getString("code")
- if ("403001" == resultObject.getString("code")) {
+ if ("403001" == code) {
// 未实名
if (resultObject.has("force") && !resultObject.getBoolean("force")) {
downloadEntity.meta["force_real_name"] = "false"
}
downloadEntity.status = com.lightgame.download.DownloadStatus.uncertificated
- } else if ("403002" == resultObject.getString("code")) {
+ } else if ("403002" == code) {
// 未成年
if (resultObject.has("force") && !resultObject.getBoolean("force")) {
downloadEntity.meta["force_real_name"] = "false"
}
downloadEntity.status = com.lightgame.download.DownloadStatus.unqualified
- } else if ("403003" == resultObject.getString("code")) {
+ } else if ("403003" == code) {
// 该游戏未接入防沉迷系统禁止下载
downloadEntity.status = com.lightgame.download.DownloadStatus.unavailable
- } else if ("403004" == resultObject.getString("code")) {
+ } else if ("403004" == code) {
// 后台禁止该设备下载
downloadEntity.status = com.lightgame.download.DownloadStatus.banned
+ } else if ("403005" == code) {
+ // 实名中禁止下载
+ downloadEntity.status = com.lightgame.download.DownloadStatus.isCertificating
}
} catch (e: JSONException) {
e.printStackTrace()
diff --git a/app/src/main/java/com/halo/assistant/fragment/user/RealNameInfoFragment.kt b/app/src/main/java/com/halo/assistant/fragment/user/RealNameInfoFragment.kt
index 4922198c48..7107b430b4 100644
--- a/app/src/main/java/com/halo/assistant/fragment/user/RealNameInfoFragment.kt
+++ b/app/src/main/java/com/halo/assistant/fragment/user/RealNameInfoFragment.kt
@@ -65,29 +65,7 @@ class RealNameInfoFragment : ToolbarFragment() {
)
requireActivity().finish()
} else if (status == RealNameInfoViewModel.RESULT_PROGRESSING) {
- DialogHelper.showDialog(requireContext(),
- title = "提示",
- content = "系统繁忙,请稍后再试",
- confirmText = "前往人工审核",
- cancelText = "确定",
- confirmClickCallback = {
- startActivity(
- ShellActivity.getIntent(
- requireContext(),
- ShellActivity.Type.MANUALLY_REAL_NAME,
- Bundle().apply {
- putString(EntranceConsts.KEY_NAME, mBinding.nameEt.text.toString())
- putString(EntranceConsts.KEY_ID, mBinding.idCardEt.text.toString())
- }
- )
- )
- requireActivity().finish()
- },
- uiModificationCallback = {
- it.titleTv.gravity = Gravity.CENTER
- it.contentTv.gravity = Gravity.CENTER
- }
- )
+ startActivity(ShellActivity.getIntent(requireContext(), ShellActivity.Type.REAL_NAME_INFO))
}
mProgressDialog?.dismiss()
}
diff --git a/app/src/main/java/com/halo/assistant/fragment/user/RealNameInfoViewModel.kt b/app/src/main/java/com/halo/assistant/fragment/user/RealNameInfoViewModel.kt
index 9b1af1f476..917365a730 100644
--- a/app/src/main/java/com/halo/assistant/fragment/user/RealNameInfoViewModel.kt
+++ b/app/src/main/java/com/halo/assistant/fragment/user/RealNameInfoViewModel.kt
@@ -71,8 +71,37 @@ class RealNameInfoViewModel(application: Application) : AndroidViewModel(applica
HaloApp.getInstance(),
(exception as? HttpException)?.response()?.errorBody()?.string()
) {
- if (it == 400012) {
- NewLogUtils.logCertificationResult(isForced, 3)
+ NewLogUtils.logCertificationResult(isForced, 0)
+ SensorsBridge.trackEvent(
+ "VerificationComplete",
+ "source_entrance",
+ if (gameId.isNotEmpty() || isForced) "游戏实名" else "主动进入",
+ "result",
+ "认证失败"
+ )
+ certificateResultLiveData.postValue(RESULT_UNQUALIFIED)
+ return@handleErrorWithCustomizedHandler false
+ }
+ }
+
+ override fun onSuccess(data: ResponseBody?) {
+ val cachedUserInfo =
+ UserRepository.getInstance().cacheUserInfoEntity
+
+ var isUnQualified: Boolean
+ tryWithDefaultCatch {
+ val `object` = JSONObject(data?.string() ?: "")
+ isUnQualified = `object`.getBoolean("minor")
+ val isCertificating = if (`object`.has("status")) `object`.get("status") else 0
+ var qualifyInt = 1
+ if (!isUnQualified) {
+ qualifyInt = 2
+ } else if (isCertificating == 1) {
+ qualifyInt = 3
+ }
+
+ if (isCertificating == 1) {
+ NewLogUtils.logCertificationResult(isForced, qualifyInt)
SensorsBridge.trackEvent(
"VerificationComplete",
"source_entrance",
@@ -81,66 +110,39 @@ class RealNameInfoViewModel(application: Application) : AndroidViewModel(applica
"认证中"
)
certificateResultLiveData.postValue(RESULT_PROGRESSING)
- return@handleErrorWithCustomizedHandler true
} else {
- NewLogUtils.logCertificationResult(isForced, 0)
+ NewLogUtils.logCertificationResult(isForced, qualifyInt)
SensorsBridge.trackEvent(
"VerificationComplete",
"source_entrance",
if (gameId.isNotEmpty() || isForced) "游戏实名" else "主动进入",
"result",
- "认证失败"
+ if (qualifyInt == 1) "未成年" else "成年"
)
- certificateResultLiveData.postValue(RESULT_UNQUALIFIED)
- return@handleErrorWithCustomizedHandler false
+
+ // 登录状态下更新实名认证信息
+ if (cachedUserInfo != null && data?.string() != null) {
+ val newIdCard: IdCardEntity? = content.toObject()
+ if (isUnQualified) {
+ newIdCard?.minor = true
+ }
+ cachedUserInfo.idCard = newIdCard
+ UserRepository.getInstance()
+ .cacheAndNotifyUserInfo(cachedUserInfo, true)
+ }
+
+ certificateResultLiveData.postValue(RESULT_SUCCESS)
+
+ // 安装因为实名延迟的游戏
+ resumeInstallationIfNeeded()
+ // 重启因为实名认证而处于等待中的任务
+ DownloadManager.getInstance()
+ .resumeAllInvisiblePendingTask()
}
+
+ DataUtils.getDeviceCertification(HaloApp.getInstance().gid)
}
}
-
- override fun onSuccess(data: ResponseBody?) {
- val cachedUserInfo =
- UserRepository.getInstance().cacheUserInfoEntity
-
- var isUnQualified = false
-
- tryWithDefaultCatch {
- val `object` = JSONObject(data?.string() ?: "")
- isUnQualified = `object`.getBoolean("minor")
- var qualifyInt = 1
- if (!isUnQualified) {
- qualifyInt = 2
- }
- NewLogUtils.logCertificationResult(isForced, qualifyInt)
- SensorsBridge.trackEvent(
- "VerificationComplete",
- "source_entrance",
- if (gameId.isNotEmpty() || isForced) "游戏实名" else "主动进入",
- "result",
- if (qualifyInt == 1) "未成年" else "成年"
- )
- }
-
- // 登录状态下更新实名认证信息
- if (cachedUserInfo != null && data?.string() != null) {
- val newIdCard: IdCardEntity? = content.toObject()
- if (isUnQualified) {
- newIdCard?.minor = true
- }
- cachedUserInfo.idCard = newIdCard
- UserRepository.getInstance()
- .cacheAndNotifyUserInfo(cachedUserInfo, true)
- }
-
- DataUtils.getDeviceCertification(HaloApp.getInstance().gid)
-
- certificateResultLiveData.postValue(RESULT_SUCCESS)
-
- // 安装因为实名延迟的游戏
- resumeInstallationIfNeeded()
- // 重启因为实名认证而处于等待中的任务
- DownloadManager.getInstance()
- .resumeAllInvisiblePendingTask()
- }
})
}
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 0b57b5f82b..aa24594f19 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -412,7 +412,7 @@
当前认证状态:成年人
当前认证状态:未成年
实名信息认证中...
- 认证期间不影响您正常的游戏体验
+ 部分游戏在认证期间无法进行下载
去 设置偏好]]> ,让推荐更懂你的心~
diff --git a/feature/realname-window/src/main/java/com/lg/realname/RealNameHelper.kt b/feature/realname-window/src/main/java/com/lg/realname/RealNameHelper.kt
index dbb532dc97..aeffb2169c 100644
--- a/feature/realname-window/src/main/java/com/lg/realname/RealNameHelper.kt
+++ b/feature/realname-window/src/main/java/com/lg/realname/RealNameHelper.kt
@@ -13,6 +13,7 @@ import android.os.Build
import android.os.Bundle
import android.util.Base64
import android.view.WindowManager
+import com.gh.gamecenter.common.utils.DialogHelper
import com.gh.gamecenter.common.utils.tryWithDefaultCatch
import com.gh.gamecenter.core.AppExecutor
import com.lg.realname.retrofit.RetrofitManager
@@ -35,6 +36,7 @@ object RealNameHelper : ActivityLifecycleCallbacks {
private var mExitClosure: (() -> Unit)? = null
+ private var mIsCertificating = false // 是否处于实名状态中
private var mIsSuccessDialogShowed = false
private var mApplication: Application? = null
@@ -84,11 +86,10 @@ object RealNameHelper : ActivityLifecycleCallbacks {
//获取是否在健康时间段内
@SuppressLint("CheckResult")
fun checkHealthyTime() {
-
RetrofitManager.getInstance().newApi.postHealthyTimeCheck()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
- .subscribe({ success ->
+ .subscribe { success ->
val result = JSONObject(success.string())
if (!result.getBoolean("is_healthy_time")) {//不在健康时间段
showSuccessRealNameDialog(mCurrentActivityRef.get(), false)
@@ -97,9 +98,7 @@ object RealNameHelper : ActivityLifecycleCallbacks {
showSuccessRealNameDialog(mCurrentActivityRef.get(), true)
mLastIsHealthyTime = true
}
- }, {
-
- })
+ }
}
override fun onActivityStarted(p0: Activity) {
@@ -122,7 +121,20 @@ object RealNameHelper : ActivityLifecycleCallbacks {
} else {
val activity = mCurrentActivityRef.get()
if (activity != null) {
- if (mIsCertificated) {//已经认证
+ if (mIsCertificating) {
+ DialogHelper.showDialog(
+ context = activity,
+ title = "提示",
+ content = "当前您的实名信息审核处于“认证中”,根据相关政策要求,需通过认证才可进入游戏",
+ confirmText = "退出游戏",
+ confirmClickCallback = {
+ mExitClosure?.invoke()
+ },
+ cancelText = "",
+ uiModificationCallback = {
+ it.dialog.setCanceledOnTouchOutside(false)
+ })
+ } else if (mIsCertificated) {//已经认证
showSuccessDialogOrScheduleHealthyCheck(activity)
} else {
showInputRealNameDialog(activity)
@@ -148,7 +160,6 @@ object RealNameHelper : ActivityLifecycleCallbacks {
NewFlatLogUtils.logCwCertificationResult(mQQGameId, if (isMinor) "未成年人" else "成年人")
syncCertification(realName, idCard)
showSuccessDialogOrScheduleHealthyCheck(activity)
-
}
NewFlatLogUtils.logCwCertificationDialogShow(mQQGameId, mQQGameName)
mIsAgoShowInputRealNameDialog = true
@@ -226,7 +237,9 @@ object RealNameHelper : ActivityLifecycleCallbacks {
if (cursor != null && cursor.count > 0) {
cursor.moveToFirst()
do {
- if (cursor.getInt(1) == 1) {
+ if (cursor.getInt(3) == 1) {
+ mIsCertificating = true
+ } else if (cursor.getInt(1) == 1) {
mIsCertificated = true
if (cursor.getInt(2) == 1) {
//如果是成年人 那肯定是认证了???
@@ -248,12 +261,6 @@ object RealNameHelper : ActivityLifecycleCallbacks {
currentRealNameDialog?.dismiss()
}
- // 羊了个羊游戏在广告页面退出游戏会导致应用进程再次被唤起,这里做一个弹窗延时
- if (!isPlay && activity.packageName.equals("com.hlys.hcrcq.ylgy.gzgw27")
- && activity.localClassName.equals("com.jygame.ui.SplashActivity")) {
- return
- }
-
currentRealNameDialog = RealNameDialog.show(activity, isPlay) { play ->
if (play) {
//进入游戏
@@ -268,7 +275,6 @@ object RealNameHelper : ActivityLifecycleCallbacks {
}
uploadHealthTipsEvent(activity, isPlay, "")
mIsAgoShowRealNameDialog = true
-
}
}
diff --git a/libraries/LGLibrary b/libraries/LGLibrary
index fb3654fb94..0eaa51b133 160000
--- a/libraries/LGLibrary
+++ b/libraries/LGLibrary
@@ -1 +1 @@
-Subproject commit fb3654fb94ceff05f41ba3eb99a5ebb975dd31ae
+Subproject commit 0eaa51b133f0e3736adcd82b98700297818aa90f