Skip to content

Commit

Permalink
添加“解除小版本号及猜版遵循 5 的倍数限制”设置项、修改Readme内容 (#16)
Browse files Browse the repository at this point in the history
* 修复关闭长按下展开卡片还能长按的问题

* 使用Material3组件库改写Spinner

- 使用 Material 3 组件库 Menus+TextField 改写 Spinner
- 已知 Bug:点击猜版对话框背后区域会唤起使用 Material 3 组件库 Menus+TextField 改写的 Spinner

* 添加“解除小版本号及猜版遵循 5 的倍数限制”设置项、修改Readme内容

---------

Co-authored-by: 快乐小牛 <48382562+klxiaoniu@users.noreply.github.com>
  • Loading branch information
ArcticFoxPro and klxiaoniu authored Mar 16, 2024
1 parent ce6d127 commit 3465cb2
Show file tree
Hide file tree
Showing 4 changed files with 47 additions and 8 deletions.
14 changes: 12 additions & 2 deletions Readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,20 @@

## 简介

QQ 版本列表实用工具 for Android 是一个提供 QQ 版本列表的查看和对 QQ 下载链接的枚举法猜测的 Android 软件。QQ 版本列表实用工具用户可以通过本应用及时获取到 QQ 版本更新的最新信息。
QQ 版本列表实用工具 for Android 是一个提供 QQ 版本列表的查看和对 QQ 下载链接的枚举法猜测的,使用 Material 3 组件库构建的 Android 软件。QQ 版本列表实用工具用户可以通过本应用及时获取到 QQ 版本更新的最新信息。

## 常见问题

### “猜版”里的“空格版”是什么?

- 2023 年 12 月 22 日,腾讯 QQ 官方团队在上传 Android QQ 9.0.8.14600 时错将本应为`https://downv6.qq.com/qqweb/QQ_1/android_apk/Android.9.0.8.14600.64.apk`的链接设置成了`https://downv6.qq.com/qqweb/QQ_1/android_apk/Android%209.0.8.14600%2064.apk`。基于此,QQ 版本列表实用工具添加了“空格版”猜版,在“测试版”猜版的基础上将相关`.`替换为`%20`以能够获取此类特殊直链。
- 2023 年 12 月 22 日,腾讯官方团队在上传 Android QQ 9.0.8.14600 版本时,不慎将常规链接格式 `https://downv6.qq.com/qqweb/QQ_1/android_apk/Android.9.0.8.14600.64.apk` 错误配置为包含 URL 编码空格形式的链接地址 `https://downv6.qq.com/qqweb/QQ_1/android_apk/Android%209.0.8.14600%2064.apk`。鉴于这一异常现象,QQ 版本列表实用工具增设了“空格版”猜版模式,该功能在原有的“测试版”猜版模式上将版本号中的 `.` 字符替换为 URL 编码的空格符 `%20`,以适应并支持此类非标准但实际存在的直接下载链接。

### 为什么默认添加了小版本号必须为 5 的倍数这项限制?

- 基于对 Android QQ 长期以来的版本号发布规律进行深入观察和分析的结果,我们发现 Android QQ 小版本号更新通常遵循每增加一个有效版本即递增 5 的倍数这一特定模式。为了贴近这一潜在实际规范并确保 QQ 版本列表实用工具的快捷性,QQ 版本列表实用工具依据最佳实践原则,默认设置小版本号和猜版必须为 5 的倍数的限制规则。然而,对于用户而言,此项约束并非强制性,如有需要,用户可随时进入设置解除此限制选项,以便更加灵活地匹配各类版本信息。

## 其他

- QQ 版本列表实用工具提供的所有服务及内容均旨在促进合法的学习交流活动,严禁用户将其用于任何非法、违规或侵犯他人权益的目的。敬请所有用户严格遵守相关法律法规,在使用本应用的过程中秉持合法、正当与诚信原则,切勿涉足任何违法用途。如有违反,相关法律责任将由行为人自负,同时,本应用亦保留采取一切必要措施的权利,包括但不限于暂停或终止服务,并追究其法律责任。

- QQ 版本列表实用工具始终坚守法律底线,秉持尊重与保护所有用户及第三方合法权益的原则。我们深切认识到任何可能存在的权益侵犯行为都会对权益方造成潜在影响,对此,我们表示由衷歉意,并承诺,一旦接到权益方的权益受到侵犯的通知,我们将立即依法启动核查程序,并在确认侵权事实后,迅速采取有效措施,以最大程度地消除不良影响,恢复并保障权益方的合法权益。敬请相关权益方在发现 QQ 版本列表实用工具存在任何侵权内容时,及时与我们取得联系,我们将竭诚为权益方提供必要的协助与支持。
28 changes: 25 additions & 3 deletions app/src/main/java/com/xiaoniu/qqversionlist/ui/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -232,6 +232,7 @@ class MainActivity : AppCompatActivity() {
settingView.findViewById<MaterialSwitch>(R.id.switch_display_first)
val longPressCardSwitch =
settingView.findViewById<MaterialSwitch>(R.id.long_press_card)
val guessNot5Switch = settingView.findViewById<MaterialSwitch>(R.id.guess_not_5)
val btnOk = settingView.findViewById<Button>(R.id.btn_setting_ok)

if (settingView.parent != null) {
Expand All @@ -240,6 +241,7 @@ class MainActivity : AppCompatActivity() {

displayFirstSwitch.isChecked = SpUtil.getBoolean(this, "displayFirst", true)
longPressCardSwitch.isChecked = SpUtil.getBoolean(this, "longPressCard", true)
guessNot5Switch.isChecked = SpUtil.getBoolean(this, "guessNot5", false)

val dialogSetting = MaterialAlertDialogBuilder(this).setTitle("设置")
.setIcon(R.drawable.settings_line).setView(settingView).setCancelable(true)
Expand All @@ -256,6 +258,9 @@ class MainActivity : AppCompatActivity() {
longPressCardSwitch.setOnCheckedChangeListener { _, isChecked ->
SpUtil.putBoolean(this, "longPressCard", isChecked)
}
guessNot5Switch.setOnCheckedChangeListener { _, isChecked ->
SpUtil.putBoolean(this, "guessNot5", isChecked)
}


true
Expand Down Expand Up @@ -357,7 +362,10 @@ class MainActivity : AppCompatActivity() {
versionSmall =
dialogGuessBinding.etVersionSmall.editText?.text.toString().toInt()
}
if (versionSmall % 5 != 0) throw Exception("小版本确定不填5的倍数?")
if (versionSmall % 5 != 0 && !SpUtil.getBoolean(
this@MainActivity, "guessNot5", false
)
) throw Exception("小版本号需填 5 的倍数。/n如有需求,请前往设置解除此限制。")
if (versionSmall != 0) {
SpUtil.putInt(this, "versionSmall", versionSmall)
}/*我偷懒了,因为我上面也有偷懒逻辑,
Expand Down Expand Up @@ -510,7 +518,14 @@ class MainActivity : AppCompatActivity() {

// 继续按钮点击事件
continueButton.setOnClickListener {
vSmall += 5
vSmall += if (!SpUtil.getBoolean(
this@MainActivity, "guessNot5", false
)
) {
5
} else {
1
}
successMaterialDialog.dismiss()
status = STATUS_ONGOING
}
Expand Down Expand Up @@ -555,7 +570,14 @@ class MainActivity : AppCompatActivity() {

}
} else {
vSmall += 5
vSmall += if (!SpUtil.getBoolean(
this@MainActivity, "guessNot5", false
)
) {
5
} else {
1
}
}
}

Expand Down
5 changes: 2 additions & 3 deletions app/src/main/res/layout/dialog_guess.xml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
android:layout_weight="1"
android:layout_marginEnd="8dp"
app:helperTextEnabled="true"
app:helperText="格式为 x.y.z"
app:helperText="填写格式为 x.y.z"
android:hint="主版本号">

<com.google.android.material.textfield.TextInputEditText
Expand Down Expand Up @@ -63,10 +63,9 @@
android:id="@+id/et_version_small"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:layout_marginBottom="10dp"
app:helperTextEnabled="true"
app:helperText="起始猜测小版本号,每次 +5"
app:helperText="填写起始猜测小版本号,猜正式版时无需填写"
android:hint="起始小版本号">

<com.google.android.material.textfield.TextInputEditText
Expand Down
8 changes: 8 additions & 0 deletions app/src/main/res/layout/dialog_setting.xml
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,14 @@
android:layout_height="wrap_content"
android:text="长按版本列表文字弹出详细信息" />

<com.google.android.material.materialswitch.MaterialSwitch
android:id="@+id/guess_not_5"
android:layout_width="match_parent"
android:paddingBottom="16dp"
android:paddingTop="16dp"
android:layout_height="wrap_content"
android:text="解除小版本号及猜版遵循 5 的倍数限制" />

<Button
android:id="@+id/btn_setting_ok"
style="@style/Widget.Material3.Button.TonalButton"
Expand Down

0 comments on commit 3465cb2

Please sign in to comment.