开发仿二维码扫码APP:如何打开eSIM激活系统页面?
调用Android eSIM激活系统页面的实现方案
当你扫描到LPA格式的eSIM激活码(如1$prod.smdp-plus.rsp.goog$052X-UFXS-CQIY-PNGL)后,可通过以下两种方式调用系统自带的eSIM激活页面:
方法一:使用隐式Intent(兼容多数Android版本)
这是最通用的实现方式,无需依赖高版本API,通过系统隐式Intent唤起激活页面:
val lpaCode = "1$prod.smdp-plus.rsp.goog$052X-UFXS-CQIY-PNGL" // 方式1:通过LPA协议Uri唤起 val intent = Intent(Intent.ACTION_VIEW) intent.data = Uri.parse("lpa://activate?data=$lpaCode") intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK // 方式2:通过系统设置Action传递激活码 // val intent = Intent("android.settings.SETUP_ESIM") // intent.putExtra("android.telephony.euicc.EXTRA_EUICC_ACTIVATION_CODE", lpaCode) // 检查是否有应用能处理该Intent,避免崩溃 if (intent.resolveActivity(packageManager) != null) { startActivity(intent) } else { // 设备不支持eSIM或无对应处理组件,提示用户 }
方法二:使用TelecomManager API(Android 11+,API 30及以上)
如果你的应用目标版本是Android 11及以上,可直接调用系统TelecomManager的API,更精准地唤起eSIM订阅设置:
val telecomManager = getSystemService(Context.TELECOM_SERVICE) as TelecomManager val lpaCode = "1$prod.smdp-plus.rsp.goog$052X-UFXS-CQIY-PNGL" try { telecomManager.startActivityForEuiccSubscriptionSetup(this, lpaCode) } catch (e: SecurityException) { // 权限不足或设备不支持,处理异常 } catch (e: UnsupportedOperationException) { // 设备不支持eSIM功能,提示用户 }
注意事项
- 确保设备支持eSIM功能,部分低端机型或旧版本Android可能不支持
- 调用前需检查Intent是否能被解析,避免抛出
ActivityNotFoundException - 无需申请额外权限(如
MANAGE_ESIM),唤起系统页面的权限由系统自行处理
内容的提问来源于stack exchange,提问作者Stanley
相关产品推荐
相关产品推荐

