gpt4 book ai didi

android - 使用新的 Telephony content provider 读取 SMS

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:51:53 26 4
gpt4 key购买 nike

根据4.4 SMS APIs ,新版本提供以下功能:

allow apps to read and write SMS and MMS messages on the device

我找不到有关此功能的任何信息,也找不到新 SDK 中的任何示例。到目前为止,这是我阅读新收到的消息所拥有的。

但是,我想阅读存储在设备上的现有消息:

// Can I only listen for incoming SMS, or can I read existing stored SMS?
SmsMessage[] smsList = Telephony.Sms.Intents.getMessagesFromIntent(intent);
for(SmsMessage sms : smsList) {
Log.d("Test", sms.getMessageBody())
}

请注意:我知道使用 SMS Content Provider ,但是不支持此方法。根据链接的 API,我应该能够以受支持的方式执行此操作。

最佳答案

看起来你可以使用这个类来让它工作。包裹是Telephony.Sms.Conversations .

虽然以下代码使用内容提供程序方法,但现在这是 API 级别 19 (KitKat) 中添加的用于读取 SMS 消息的官方 API。

public List<String> getAllSmsFromProvider() {
List<String> lstSms = new ArrayList<String>();
ContentResolver cr = mActivity.getContentResolver();

Cursor c = cr.query(Telephony.Sms.Inbox.CONTENT_URI, // Official CONTENT_URI from docs
new String[] { Telephony.Sms.Inbox.BODY }, // Select body text
null,
null,
Telephony.Sms.Inbox.DEFAULT_SORT_ORDER); // Default sort order

int totalSMS = c.getCount();

if (c.moveToFirst()) {
for (int i = 0; i < totalSMS; i++) {
lstSms.add(c.getString(0));
c.moveToNext();
}
} else {
throw new RuntimeException("You have no SMS in Inbox");
}
c.close();

return lstSms;
}

关于android - 使用新的 Telephony content provider 读取 SMS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19856338/

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