android: 如何获取短信发送者的字母名称?

android: how can I get alphabetic name of SMS sender?

我正在开发 Android 接收短信并处理短信的应用程序。除了片刻,一切正常。我不知道如何将自定义发件人 ID 转换为字母名称。例如我从银行收到短信,看到的是数字而不是银行名称,但另一个应用程序显示的是银行名称。

这是我的代码

            Uri allSMSes = Uri.parse("content://sms");

            String[] strColumns = { TextBasedSmsColumns.ADDRESS,
                                "MAX(" + TextBasedSmsColumns.DATE + ") as " + TextBasedSmsColumns.DATE,
                                "COUNT(" + TextBasedSmsColumns.BODY + ") as number",
                                "SUM(" + TextBasedSmsColumns.READ + ") as " + TextBasedSmsColumns.READ};

            Cursor c = getContentResolver().query(allSMSes, strColumns, 
                                                  "1=1) group by (" + TextBasedSmsColumns.ADDRESS ,null, null);

我已经尝试在 Android 5.1 和 6.0

上 运行

我想你想要的是发件人ID。 这可以由发件人设置,如果他没有将其设置为字母(名称)您将无法检索它。据我所知。

编辑: 我认为您需要的是 Person 或 Creator 列。

https://developer.android.com/reference/android/provider/Telephony.TextBasedSmsColumns.html在这里你可以看到所有你能得到的列。