【问题标题】:Access message inbox without Content UrI (content//:sms)访问没有 Content UrI 的消息收件箱 (content//:sms)
【发布时间】:2010-06-15 14:40:43
【问题描述】:

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

但我在 标准的 Android 开发者文档。 在各个网站上都提到此内容已 从标准 sdk 中删除。该应用程序可能不支持更高 安卓版本。

那么,我怎样才能创建一个应用程序来从收件箱中读取短信 在未来版本的 android 中可靠。

请帮忙!!

【问题讨论】:

标签: android


【解决方案1】:

它在我的里程碑中运行良好(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)。如果有人知道其他方法,请告诉我。谢谢
  • 您是否找到了访问收件箱的解决方案?
  • @qrtt1:是的。它对我有用。非常感谢。顺便问一下,有什么方法可以获取这样的已安装应用程序吗?
【解决方案2】:

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

不过,我认为Content Provider方案比Concrete Class更稳定,因为Content Provider是跨应用情况下访问数据的抽象层。从长远来看,一切都可以改变。面对它,开发人员将受益于采用设计模式、包装类来操作内容提供者(外观)或使用数据访问对象模式等。

在android配置文件中,我们可以限制sdk级别以防止丢失:

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

我是一个android开发的新手,即使我阅读了很多文档或书籍,我也知道源代码中有很多黑魔法。更改太快而无法编写完整的文档(使其保持最新是不可能的),因此不必担心 AUTHORITY 或 Class 已更改。

我的 2 美分

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多