feat(设置): 添加服务器地址配置功能

添加服务器地址配置界面,允许用户自定义WebSocket服务器地址。包含输入验证,确保地址格式正确(ws://或wss://开头)。
This commit is contained in:
2026-03-31 17:28:52 +08:00
parent 518a7d813e
commit 6a70f7ef5d
2 changed files with 75 additions and 0 deletions

View File

@@ -78,6 +78,8 @@ class SettingsAdvanceActivity : AppCompatActivity() {
ll_corp_param.visibility = if (Constant.customLink) View.VISIBLE else View.GONE
rl_username.visibility = if (Constant.customMP) View.VISIBLE else View.GONE
rl_qa_url.setOnClickListener { showQaUrlDialog() }
rl_host.setOnClickListener { showHostDialog() }
tv_select_host.text = Constant.host
rl_corp_name.setOnClickListener { showCorpNameDialog() }
rl_corp.setOnClickListener { showCorpIdDialog() }
rl_agent.setOnClickListener { showAgentIdDialog() }
@@ -117,6 +119,32 @@ class SettingsAdvanceActivity : AppCompatActivity() {
.create(R.style.QMUI_Dialog).show()
}
private fun showHostDialog() {
val builder = QMUIDialog.EditTextDialogBuilder(this)
builder.setTitle("服务器地址")
.setPlaceholder("请输入WebSocket服务器地址")
.setDefaultText(Constant.host)
.setInputType(InputType.TYPE_CLASS_TEXT)
.addAction(getString(R.string.cancel)) { dialog, index -> dialog.dismiss() }
.addAction(getString(R.string.add)) { dialog, index ->
val text = builder.editText.text
if (text != null && text.isNotEmpty()) {
val host = text.toString().trim()
if (host.matches("wss?://[^:]+:\\d+".toRegex())) {
dialog.dismiss()
Constant.host = host
tv_select_host.text = host
ToastUtils.showLong("服务器地址已更新")
} else {
ToastUtils.showLong("格式异常!示例: ws://192.168.1.1:18680")
}
} else {
ToastUtils.showLong("请勿为空!")
}
}
.create(R.style.QMUI_Dialog).show()
}
private fun updateRobotQaUrl(callbackUrl: String) {
try {
val json = hashMapOf<String, Any>()

View File

@@ -317,6 +317,53 @@
</LinearLayout>
</RelativeLayout>
<RelativeLayout
android:id="@+id/rl_host"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingStart="@dimen/setting_start_padding"
android:paddingTop="@dimen/setting_vertical_padding"
android:paddingEnd="@dimen/setting_end_padding"
android:paddingBottom="@dimen/setting_vertical_padding">
<TextView
android:id="@+id/tv_select_host"
android:layout_width="@dimen/setting_end_font_width"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
android:layout_marginStart="@dimen/setting_end_start_padding"
android:ellipsize="end"
android:maxLines="1"
android:textColor="@color/float_time_color"
android:textSize="@dimen/setting_end_font_size"
android:textStyle="bold" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginStart="@dimen/setting_start_padding"
android:layout_toStartOf="@id/tv_select_host"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="服务器地址"
android:textColor="@color/color_333333"
android:textSize="@dimen/setting_start_font_size" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="WebSocket服务器地址(ws://或wss://开头)"
android:textColor="@color/color_999999"
android:textSize="@dimen/setting_end_font_size" />
</LinearLayout>
</RelativeLayout>
<RelativeLayout
android:id="@+id/rl_rec_orientation"
android:layout_width="match_parent"