Merge branch 'feature-GHZS-5666' into 'dev'

feat: 用户设备信息展示及复制功能—客户端 https://jira.shanqu.cc/browse/GHZSCY-5666

See merge request halo/android/assistant-android!1730
This commit is contained in:
曾祥俊
2024-07-25 09:45:41 +08:00
4 changed files with 98 additions and 25 deletions

View File

@ -72,7 +72,7 @@ android_build:
only:
- dev
- release
- feature-GHZS-5816
- feature-GHZS-6019
# 代码检查
sonarqube_analysis:
@ -154,4 +154,4 @@ oss-upload&send-email:
only:
- dev
- release
- feature-GHZS-5816
- feature-GHZS-6019

View File

@ -13,6 +13,7 @@ import com.alibaba.android.arouter.launcher.ARouter
import com.gh.gamecenter.common.base.fragment.ToolbarFragment
import com.gh.gamecenter.common.constant.Constants
import com.gh.gamecenter.common.constant.RouteConsts
import com.gh.gamecenter.common.exposure.meta.MetaUtil
import com.gh.gamecenter.common.utils.DialogHelper
import com.gh.gamecenter.common.utils.PackageFlavorHelper
import com.gh.gamecenter.common.utils.copyTextAndToast
@ -61,6 +62,19 @@ class AboutFragment : ToolbarFragment() {
ARouter.getInstance().build(RouteConsts.provider.updateManager).navigation() as? IUpdateManagerProvider
updateManager?.checkUpdate(requireActivity(), true) // 检查更新
if (PackageFlavorHelper.IS_TEST_FLAVOR) {
var clickCount = 0
mBinding.aboutGhIcon.setOnClickListener {
if (clickCount == 5) {
mBinding.aboutGhIcon.setOnClickListener(null)
mBinding.deviceContent.visibility = View.VISIBLE
mBinding.deviceContent.text.toString().copyTextAndToast("复制成功!")
} else {
clickCount++
}
}
}
mBinding.aboutGhIcon.setOnLongClickListener {
MtaHelper.onEvent("我的光环_设置", "关于光环", "图标长按")
if (PackageFlavorHelper.IS_TEST_FLAVOR) {
@ -181,6 +195,18 @@ class AboutFragment : ToolbarFragment() {
}
}
mBinding.deviceContent.run {
val sb = StringBuilder()
val meta = MetaUtil.getMeta()
sb.append("OAID: ").append(meta.oaid).append("\n")
sb.append("ANDROID_ID: ").append(MetaUtil.getAndroidId()).append("\n")
sb.append("GID: ").append(meta.gid).append("\n")
sb.append("USER_ID: ").append(meta.userId).append("\n")
sb.append("CHANNEL: ").append(meta.channel).append("\n")
sb.append("APP_VERSION: ").append(meta.appVersion)
text = sb.toString()
}
mBinding.icpTv.setOnClickListener {
val directUtils = ARouter.getInstance().build(RouteConsts.provider.directUtils).navigation() as? IDirectProvider
directUtils?.directToExternalBrowser(requireContext(), requireContext().getString(R.string.icp_url))

View File

@ -74,6 +74,15 @@
</LinearLayout>
<TextView
android:id="@+id/device_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:gravity="center_horizontal"
android:lineSpacingExtra="4dp"
android:visibility="gone" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">

View File

@ -17,6 +17,7 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.input.pointer.pointerInput
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import androidx.constraintlayout.compose.ChainStyle
@ -24,6 +25,7 @@ import androidx.constraintlayout.compose.ConstraintLayout
import com.alibaba.android.arouter.launcher.ARouter
import com.gh.gamecenter.common.constant.EntranceConsts
import com.gh.gamecenter.common.constant.RouteConsts
import com.gh.gamecenter.common.exposure.meta.MetaUtil
import com.gh.gamecenter.common.utils.DialogHelper
import com.gh.gamecenter.common.utils.PackageFlavorHelper
import com.gh.gamecenter.common.utils.copyTextAndToast
@ -49,6 +51,9 @@ class ComposeAboutActivity : ComposeBaseActivity() {
var updateAvailable by remember {
mutableStateOf(false)
}
var deviceContent by remember {
mutableStateOf("")
}
val updateManager = ARouter.getInstance().build(RouteConsts.provider.updateManager)
.navigation() as? IUpdateManagerProvider
@ -91,35 +96,56 @@ class ComposeAboutActivity : ComposeBaseActivity() {
verticalArrangement = Arrangement.Center,
horizontalAlignment = Alignment.CenterHorizontally
) {
var clickCount = 0
Image(
painter = painterResource(id = R.mipmap.logo_for_in_app_display),
contentDescription = null,
modifier = Modifier
.size(78.dp)
.pointerInput(Unit) {
detectTapGestures(onLongPress = {
if (PackageFlavorHelper.IS_TEST_FLAVOR) {
DialogHelper.showDialog(
this@ComposeAboutActivity,
"重选接口环境",
"是否要清空应用数据并重选接口环境\n(清空后数据后需要手动再打开 APP)",
"",
"",
{
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
(getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager).clearApplicationUserData()
}
},
extraConfig = DialogHelper.Config(centerTitle = true, centerContent = true)
)
} else {
val appProvider = ARouter
.getInstance()
.build(RouteConsts.provider.app)
.navigation() as? IAppProvider
Utils.toast(this@ComposeAboutActivity, appProvider?.getChannel())
}
})
detectTapGestures(
onLongPress = {
if (PackageFlavorHelper.IS_TEST_FLAVOR) {
DialogHelper.showDialog(
this@ComposeAboutActivity,
"重选接口环境",
"否要清空应用数据并重选接口环境\n(清空后数据后需要手动再打开 APP)",
"",
"",
{
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
(getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager).clearApplicationUserData()
}
},
extraConfig = DialogHelper.Config(
centerTitle = true,
centerContent = true
)
)
} else {
val appProvider = ARouter
.getInstance()
.build(RouteConsts.provider.app)
.navigation() as? IAppProvider
Utils.toast(this@ComposeAboutActivity, appProvider?.getChannel())
}
},
onPress = {
if (clickCount == 5) {
val sb = StringBuilder()
val meta = MetaUtil.getMeta()
sb.append("OAID: ").append(meta.oaid).append("\n")
sb.append("ANDROID_ID: ").append(MetaUtil.getAndroidId()).append("\n")
sb.append("GID: ").append(meta.gid).append("\n")
sb.append("USER_ID: ").append(meta.userId).append("\n")
sb.append("CHANNEL: ").append(meta.channel).append("\n")
sb.append("APP_VERSION: ").append(meta.appVersion)
val content = sb.toString().apply { copyTextAndToast("复制成功!") }
deviceContent = content
} else {
clickCount++
}
})
})
Space(13.dp)
Text(
@ -178,6 +204,18 @@ class ComposeAboutActivity : ComposeBaseActivity() {
ARouter.getInstance().build(RouteConsts.provider.directUtils).navigation() as? IDirectProvider
directUtils?.directDouyin(this@ComposeAboutActivity, "1402577827140941")
}
if (deviceContent.isNotEmpty()) {
Text(
text = deviceContent,
lineHeight = 21.sp,
fontSize = 14.sp,
textAlign = TextAlign.Center,
modifier = Modifier
.fillMaxWidth()
.wrapContentHeight()
.padding(0.dp, 8.dp, 0.dp, 0.dp)
)
}
ConstraintLayout(
modifier = Modifier
.fillMaxWidth()