如何在 Android 中使用反射从第二个 SIM 插槽发送短信?

How to use reflection in Android for sending sms from second sim slot?

我需要通过 android 设备的第二个插槽发送短信。我搜索了很多次以找到使用第二个 sim 插槽发送短信的解决方案。但是这个问题没有任何常规的解决方案。有些人对每个系列的移动设备都使用反射来从第二个插槽发送短信。现在,我该如何使用反射来解决这个问题?

你没有提到你的目标是哪个 cookie,但在 Lollipop MR1 中,你可以通过基于订阅获取 SmsManager 来使用第二张 SIM 卡发送:

http://developer.android.com/reference/android/telephony/SmsManager.html#getSmsManagerForSubscriptionId(int)

每张 SIM 卡在插入时都会分配一个订阅 ID。这些 ID 和有关 SIM 的信息存储在 TelephonyProvider 中的 siminfo table 中。 ID 从 1 开始。要获取有关您当前激活的订阅 ID 的信息,请使用 SubscriptionManager: http://developer.android.com/reference/android/telephony/SubscriptionManager.html

方法 getActiveSubscriptionInfoForSimSlotIndex 获取 SIM 插槽索引(通常为 0 或 1)和 returns 有关该 SIM 的订阅信息,包括可用于获取正确 SmsManager 的订阅 ID。

如果您的目标平台是 Lollipop 之前的平台,那么 Google 不正式支持 DS,很可能是由平台供应商(Qualcomm、Mediatek 等)添加的,因此 API 没有记录。您可以通过调用 SmsManager.class.getDeclaredMethods() 查询 SmsManager 的方法,但 DS API 可能位于完全不同且未记录的 class.