无内容UrI的访问邮件收件箱(内容//:短信)

时间:2010-06-15 14:40:43

标签: android

我想通过我的android访问存储在收件箱中的邮件 项目。我尝试过为sms形成URI的方法(内容:// sms / 收件箱),然后查询各种参数。

但我找不到任何有关阅读收件箱短信的文档 标准Android Developr文档。 在各种网站上都提到过这个内容 从标准sdk中删除。该应用程序可能不支持更高 android版本。

那么,如何创建一个应用程序来从收件箱中读取短信 可靠的Android版本。

请帮助!!

2 个答案:

答案 0 :(得分:4)

它在我的里程碑(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>

答案 1 :(得分: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开发的新手,即使我读过很多文档或书籍,我知道源代码中有很多黑魔法。更改速度太快,无法编写完整的文档(无法保持最新​​状态),因此请不要担心AUTHORITY或Class已更改。

我的2美分