package com.example.deviceagent import android.app.Activity import android.os.Bundle import android.util.Log import android.widget.Toast /** * 一次性配置下发(透明 Activity,由平台用 adb 拉起): * * adb shell am start -n com.example.deviceagent/.ConfigActivity \ * --es server http://192.168.20.220:18050 --es token <设备令牌> \ * --es fingerprint * * 有了它,一批设备不用一台台手输地址和令牌。 * 只写传进来的字段;三个都能单独更新。 * * ⚠️ fingerprint 必须由平台推下来:实测应用身份读不到 ro.serialno *(shell 能读、应用被 SELinux 挡住),而平台通过 adb 本来就知道这个值。 */ class ConfigActivity : Activity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) val server = intent?.getStringExtra("server") val token = intent?.getStringExtra("token") val fp = intent?.getStringExtra("fingerprint") if (server.isNullOrEmpty() && token.isNullOrEmpty() && fp.isNullOrEmpty()) { Log.w(TAG, "ConfigActivity 没收到 server/token/fingerprint") finish() return } try { Prefs.save(this, server, token, fp) val msg = "配置已更新:${Prefs.server(this)} / 令牌${if (Prefs.token(this).isEmpty()) "空" else "已设置"} / 指纹${if (Prefs.fingerprint(this).isEmpty()) "空" else "已设置"}" Log.i(TAG, msg) Toast.makeText(this, msg, Toast.LENGTH_SHORT).show() } catch (e: Exception) { Log.e(TAG, "配置写入失败: ${e.message}") } finish() } companion object { const val TAG = "DeviceAgent" } }