gpt4 book ai didi

android - 如何找出哪个 SIM 卡在双卡 Android 设备中收到短信

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:58:22 32 4
gpt4 key购买 nike

我正在开展一个项目,将 Android 手机中收到的短信同步到在线数据库。我可以通过调用 getOriginatingAddress() 方法获取发件人的号码。但是我找不到任何解决方案来确定我设备中的哪个 SIM 卡收到了短信。

我在网上搜索了相关内容,但找不到解决这个问题的方法。有什么办法可以得到短信接收者的号码吗?

最佳答案

我在解决这个问题上遇到了一些困难,最后我找到了解决方案,尽管我只在 api 级别 22 以上对其进行了测试。

您必须查看接收到的 Intent 中的额外信息。在我的例子中, Intent 的额外 Bundle 中有两个有用的键:“slot”和“subscription”。

例子如下:

public class IncomingSms extends BroadcastReceiver {

public void onReceive(Context context, Intent intent) {

// Retrieves a map of extended data from the intent.
Bundle bundle = intent.getExtras();

int slot = bundle.getInt("slot", -1);
int sub = bundle.getInt("subscription", -1);

/*
Handle the sim info
*/
}
}

我没有在 bundle 中找到有关 key 的文档,因此这可能取决于设备/制造商,我可以想象 key 是不同的或类似的东西。您可以通过转储 bundle 的 key 集来验证这一点:

Set<string> keyset = bundle.keySet();

编辑:

有关 SIM 卡电话号码的信息可能根本不可用,因为如果它没有存储在 SIM 卡上,则可能无法查询,但所有其他信息都可以通过 SubscriptionManager 获得:

SubscriptionManager manager = SubscriptionManager.from(appContext);
SubscriptionInfo = manager.getActiveSubscriptionInfo(sub);

SubscriptionInfo = manager.getActiveSubscriptionInfoForSimSlotIndex(slot);

SubscriptionInfo 中有一些有用的信息例如电话号码,如我上面所解释的,不能保证可用。

我还忘了提到,stock android 中的双 SIM 卡支持是从 api 级别 22 添加的。

关于android - 如何找出哪个 SIM 卡在双卡 Android 设备中收到短信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35968766/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com