访问短信收件箱而不使用Content URI(content//:sms)

4
我想通过我的Android项目访问存储在收件箱中的消息。我已经尝试了形成sms URI(content:// sms / inbox)的方法,然后查询它以获取各种参数。
但是我找不到任何有关在标准Android开发文档中读取收件箱短信的文档。在各个网站上提到,此内容已从标准SDK中删除。该应用程序可能不支持更高版本的Android。
那么,我该如何创建一个可靠地在未来版本的Android中读取收件箱短信的应用程序?
请帮忙!!

2
这里有一篇好的文章:http://mobdev.olin.edu/mobdevwiki/FrontPage/Tutorials/SMS%20Messaging - David d C e Freitas
2个回答

4

在我的Milestone手机上(SDK更新2.1),它的运行效果非常好。

 public List<String> getSms() {
        Uri mSmsQueryUri = Uri.parse("content://sms/inbox");
        List<String> messages = new ArrayList<String>();
        Cursor cursor = null;
        try {
            cursor = mContentResolver.query(mSmsQueryUri, null, null, null, null);
            if (cursor == null) {
                Log.i(TAG, "cursor is null. uri: " + mSmsQueryUri);
                return messages;
            }

            for (boolean hasData = cursor.moveToFirst(); hasData; hasData = cursor.moveToNext()) {
                final String body = cursor.getString(cursor.getColumnIndexOrThrow("body"));
                messages.add(body);
            }
        } catch (Exception e) {
            Log.e(TAG, e.getMessage());
        } finally {
            cursor.close();
        }
        return messages;
    }

请确保您已经拥有读取短信的权限:
<uses-permission android:name="android.permission.READ_SMS"></uses-permission>

你好, 感谢您的回复。虽然这种访问收件箱的方式有效,但它已从标准sdk中删除(如在各种网站帖子和android开发人员中提到)。在android开发人员文档中没有关于内容提供程序content://sms的文档。这种方法可能在未来更高版本的android中无法使用。这就是为什么我正在寻找任何可靠的访问收件箱的方法(不是通过帖子主题中提到的内容uri)。如果有人知道其他方法,请告诉我。 谢谢 - Nishant Kumar
你有解决访问收件箱的方法吗? - GG.
@qrtt1:是的,这对我很有用。非常感谢。顺便问一下,有没有获取已安装应用程序的方法? - Praveenkumar

1

有一个标准的SmsMessage可用于发送消息。 http://developer.android.com/reference/android/telephony/SmsManager.html

然而,我认为Content Provider解决方案比Concrete Class更稳定,因为Content Provider是在跨应用程序情况下访问数据的抽象层。从长期来看,一切都可能会改变。为了面对这种情况,开发人员将受益于采用设计模式,一个操作内容提供者的包装类(Facade),或使用数据访问对象模式等。

在Android配置文件中,我们可以限制SDK级别以防止某些功能丢失:

<uses-sdk 
    android:minSdkVersion="5" 
    android:maxSdkVersion="8"
    android:targetSdkVersion="7" />

我是一个 Android 开发的新手,即使我已经阅读了很多文档或书籍,我知道源代码中有很多黑魔法。变化太快了,写完整的文档(保持最新状态)是不可能的,所以不要担心权限或类的更改。

这是我的建议。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接